Musiałem przenieść kilka baz danych SQL Server 2008 na nasz nowy serwer db, więc utworzyłem ich kopię zapasową (do plików .bak), skopiowałem te pliki do nowej skrzynki i przywróciłem je (wszystko zrobione za pomocą SQL Management Studio).
Wszystko poszło dobrze, ale teraz nie mogę zalogować się do żadnej z baz danych przy użyciu konta SQL Server, które nadal działa na starym RDBMS. Nawiasem mówiąc, moje logowanie uwierzytelnione w systemie Windows nadal działa poprawnie.
Wpadłem na pomysł, że użytkownicy i uprawnienia zostaną bezproblemowo powielone na nowym serwerze bazy danych, ale wygląda na to, że coś poszło nie tak. Byłbym wdzięczny za komentarze / sugestie / oferty pomocy ;-)
Nazywa się to „osieroconymi użytkownikami”. Oto 2 sposoby, aby to naprawić
Jeśli możesz, przywróć oryginalną główną bazę danych jako „loginsource”, a sys.server_principals ma wystarczającą ilość informacji, aby wygenerować wszystkie logowania do SQL Server i Windows. Oznacza to, że identyfikatory SID i zaszyfrowane hasło
Jeśli używasz tylko loginów systemu Windows, możesz uruchomić tę bazę danych dla wygenerowania skryptu
Scenariusz:
źródło
Idealnie byłoby wykonać skrypt użytkowników i uprawnień przed przywróceniem. Jeśli tak się nie stało, musisz zająć się naprawą rzeczy po fakcie, a są szanse, że coś zostanie pominięte, ale powinieneś być w stanie uzyskać około 90% drogi.
Pierwszą rzeczą, którą musisz ustalić, jest to, czy te same dane logowania istnieją na nowym serwerze. Jeśli nie, to powinieneś dowiedzieć się, czy logowanie na nowym serwerze jest w porządku. Nigdy nie zakładaj, że powinny zostać stworzone, może istnieć dobry powód, dla którego nie istniały. Następnie możesz zacząć je tworzyć, przeglądając tabelę sysusers.
Możesz naprawić osieroconych użytkowników, uruchamiając coś podobnego do następującego:
Ten kod będzie działał dla SQL2008, ale został napisany jako kompatybilny wstecz dla SQL2000.
źródło
Możesz odnieść się do następującego adresu URL, aby naprawić uprawnienia użytkownika bazy danych
http://mywindowsblog.com/?p=287
źródło
Oto krótki artykuł wyjaśniający rozwiązanie:
Przywracanie osieroconych loginów w SQL Server po przywróceniu bazy danych
źródło