2016-08-01 7 views
17

Próbuję użyć porównania schematów SQL w Visual Studio 2013/15 i pojawia się problem polegający na tym, że usunięcie tabel z usunięcia powoduje ich całkowite usunięcie.Dołącz, ale nie usuwaj schematu SQL Porównaj

Problem polega na tym, że tabele, które próbują usunąć, są tabelami tworzonymi przez klienta, więc kiedy zsynchronizujemy naszą wersję z ich bazami danych, prosi o ich usunięcie. Nie chcemy ich usuwać, ale niektóre z ich tabel mają ograniczenia na nasze, więc gdy podejmie próbę CCDR, zawodzi z powodu ograniczeń tabel. Czy istnieje sposób na dodanie tabeli (re-created? Podobnie jak pozostałe?), Bez pisania skryptów dla każdego klienta, aby zrobić to, co SQL Schema Compare robi już tylko dla tych kilku tabel?

Porównanie SQL Red-Gate robi to w jakiś sposób, ale jest ukryte przed nami, więc nie jesteśmy pewni, jak to osiągnąć. Discluding nie usuwa, ale nie powoduje również błędu w skrypcie.

UPDATE:

Opcja „ograniczenia wypadania nie w źródle” nie wydaje się działać poprawnie. Niektóre z nich spadają, ale są też inne, które po prostu nie znoszą ograniczeń. W narzędziu red-gate, kiedy porównaliśmy, znalazłem sposób na pobranie z niego kodu SQL, a ich produkt nie powiedział, że tabela musi być w ogóle aktualizowana, podczas gdy Visual Studio to robi. Wydają się działać niemal identyczne, ale stoliki, które nie są te, które nie powinny być w ogóle aktualizacji (czytaj poniżej)

Aktualizacja 2:

Innym problemem znalazłem to „Ignoruj ​​kolumny sortowania” również nie działa poprawnie, ponieważ tabele, które nie powinny być upuszczane, są informowane, że muszą zostać zaktualizowane, mimo że jest to tylko kolejność zmian kolumn, a nie faktyczne zmiany kolumn lub danych, co sprawia, że ​​czujesz się bardziej jak raport o błędzie niż cokolwiek.

Ignore column collation checked

Still showing column collation

Odpowiedz

0

Nie wiem, czy to pomoże, ale znalazłem ten akapit na następnej stronie: https://msdn.microsoft.com/en-us/library/hh272690(v=vs.103).aspx

Aktualizacja zakończy się niepowodzeniem, ponieważ nasz zmiana polega na zmianie kolumny z NOT NULL na NULL, co w rezultacie powoduje utratę danych. Jeśli chcesz, aby kontynuować aktualizację, kliknij przycisk Opcje (piąty od lewej) na pasku narzędzi dla schematu Porównaj i usuń zaznaczenie blokady przyrostowej , jeśli opcja utraty danych.

+0

Już odznaczam to pole, problem polega na rzucaniu kluczem, a nie z powodu utraty danych. Dzięki jednak – Dispersia

1

Moja sugestia przy obliczeniach tego typu z wyprzedzeniem polega na tym, aby nie używać programu Visual Studio. Umieść logikę na silniku Sql i zapisz kod dla tego w Sql. Ze względu na problemy z blokowaniem wielu użytkowników silnika Sql, tego typu procesy są podatne na niepowodzenie, gdy w tym samym czasie występują niewłaściwe kombinacje działań użytkownika. Narzędzie Visual Studio nie może współpracować z problemami blokowania danych z powodu zmian rekordów, które może wykonać silnik Sql. Jeśli nawet to uruchomisz, będzie można bezpiecznie uruchomić tylko w trybie pojedynczego użytkownika.

Jest to miłe w użyciu narzędzie, łatwiejsze niż pisanie Sql, ale istnieje ogromna niezawodność i konsekwencja ryzyka dla schodzenia na tę ścieżkę.

Powiązane problemy