Mam skrypt, który tworzy całą bazę danych i wstawia wszystkie rekordy do kilkudziesięciu tabel. Działa wspaniale, chyba że wystąpi jakiś problem podczas przetwarzania, a tabela zostanie pozostawiona z IDENTITY_INSERT ON, gdy skrypt ulegnie uszkodzeniu podczas wstawiania i zanim będzie można go ponownie wyłączyć.Ustaw IDENTITY_INSERT OFF dla wszystkich tabel
Kiedy to się dzieje, skrypt automatycznie zawiedzie przy próbie uruchomienia go ponownie, z błędem "IDENTITY_INSERT jest już włączony dla tabeli xx", gdy wchodzimy do wstawiania dla pierwszej tabeli.
Jako zabezpieczenie przed uszkodzeniem chciałbym się upewnić, że IDENTITY_INSERT jest ustawione na WYŁ. Dla wszystkich tabel, przed uruchomieniem reszty przetwarzania w skrypcie instalacyjnym.
Jako alternatywę, moglibyśmy ewentualnie zamknąć połączenie MS SQL i otworzyć je ponownie, co, jak rozumiem, wyczyściłoby wszystkie wartości IDENTITY_INSERT dla sesji połączenia.
Jaki jest najlepszy sposób, aby to zrobić i zapobiec błędom "już trwają"?
Jaką wersję programu SQL Server? –
Ta aplikacja musi działać w wersji 2005 i nowszych, więc najlepiej jest znaleźć rozwiązanie dla wszystkich najnowszych i nadchodzących wersji. –
Moje poniższe rozwiązanie powinno działać w wersji 05 i późniejszych. –