Używam SSDT do synchronizowania 2 baz danych.Zamiast zmieniać nazwę kolumny projekt robi kolumnę kropla i kolumna dodaje
Aby to zrobić, mam bazę danych w Server1, bazę danych w Server2 i Schemat w moim projekcie.
Zawsze wprowadzam zmiany w bazie danych serwera1 i stosuję te zmiany w bazie danych serwera2. Aby to zrobić, używam ten obieg:
- Porównaj bazy Serwer1 do schematu i zaktualizować schemat z Serwer1 zmienia
- Porównaj schematu do bazy server2 i aktualizacja zmienia ze schematu w bazie danych
Zwykle działa dobrze, ale napotkałem problem podczas ostatniej zmiany nazw kolumn w tabeli.
Zwykle zmiana nazwy kolumn w tabeli powoduje zmianę zmiany nazwy kolumny, więc gdy porówna się serwer1 ze schematem, nazwy kolumn są poprawnie wykrywane i mogę bezpiecznie zakończyć przepływ pracy.
Jednak ostatni raz, gdy zmieniłem nazwę kolumn w tabeli w Server1, podczas porównywania ze schematem, zamiast wykrywania zmiany jako zmiany nazwy kolumny, wykryło zmianę jako kolumnę kropli (ze starą nazwą) i utwórz kolumnę (z nową nazwą). Oczywiście, jeśli zastosuję te zmiany w bazie danych Server2, stracę wszystkie dane w kolumnie o zmienionej nazwie.
Czy jest jakiś powód takiego zachowania w SSDT? Czy mogę polecić SSDT, aby zrozumiał, że jest to zmiana nazwy kolumny?
Wiem, jak to zrobić ręcznie, ale wolałbym uniknąć tego problemu w SSDT, lub być w stanie go rozwiązać, jeśli pojawi się ponownie w przyszłości.
Jeśli porównać projekt z bazą danych, czy inne właściwości są wyświetlane jako różne? Czasem istnieje subtelna różnica, której nie widać, ale wystarcza, by wywołać spadek/odtworzyć. Sprawdź także plik "refactorlog", aby sprawdzić, czy istnieje wpis, który umożliwia zmianę nazwy kolumny. Jeśli nie, może być konieczne utworzenie. Najłatwiej jest zmienić nazwę na coś, a następnie nadać jej nazwę - usunąć dodatkową zmianę nazwy i powinieneś być dobry. –