Czasami przenoszę bazę danych (SQL Express 2012) z maszyny programistycznej na serwer lub odwrotnie, używając kopii zapasowej i przywracania bazy danych w SQL Server Management Studio.
Ilekroć to robię, aplikacje na komputerze docelowym nie mogą uzyskać dostępu do bazy danych, dopóki nie usunę użytkownika, którego używają „george”, od użytkowników bazy danych (Baza danych, Bezpieczeństwo, Użytkownicy w SQL Server Management Studio) i ponownie dodam ją jako właściciel w obszarze Bezpieczeństwo, Loginy, george / właściwości, mapowanie użytkowników.
Czy jest na to lepszy sposób? To wydaje się trochę skomplikowane.
sql-server
backup
Xpda
źródło
źródło
CREATE LOGIN
instrukcji.Odpowiedzi:
Oto różnica między loginami i użytkownikami oraz ich wzajemnym powiązaniem:
To, co często zdarza się w przypadku uwierzytelnionych danych SQL i użytkowników bazy danych podczas przywracania, polega na tym, że SIDS nie jest zsynchronizowany, co zrywa związek. Ta relacja musi zostać naprawiona, zanim będzie można połączyć się z bazą danych przy użyciu tego loginu, ponieważ w oczach SQL Server te podmioty nie są już połączone. Możesz to naprawić za pomocą następującego kodu SQL:
Możesz użyć następującego zapytania w kontekście bazy danych, aby sprawdzić, czy nie ma sierot:
źródło
Możesz zajrzeć do zmiany bazy danych na zawartą bazę danych . Zawarty użytkownik bazy danych jest uwierzytelniany przez bazę danych, a nie na poziomie instancji poprzez logowanie. Ułatwia to przenoszenie bazy danych do innej instancji.
Jeśli nie, możesz wykonać kopię zapasową danych logowania za pomocą skryptów sp_help_revlogin podanych w tym dziale wsparcia Microsoft . I uruchom skrypt wyjściowy na nowej instancji.
źródło
Korzystam ze skryptu poniżej, aby migrować / tworzyć konta użytkowników i loginy. Uruchom go z serwera, na którym przywrócono bazę danych, i podaj oryginalną nazwę serwera jako parametr procedury.
Nie biorę uznania za tę procedurę, ponieważ uzyskałem ją gdzie indziej, ale działa dobrze.
źródło
Oto rozwiązanie, które zadziałało dla mnie. Jego zadaniem jest:
EXEC sp_change_users_login 'REPORT'
EXEC sp_change_users_login 'UPDATE_ONE','<userName>','<userName>'
źródło
Zawsze możesz po prostu spróbować ponownie połączyć wszystkich użytkowników w bazie danych z podobnymi nazwami logowania na serwerze bazy danych.
źródło
Pomyślałem, że warto zauważyć tę prostą naprawę problemu z plakatami. Jest to skrypt, który uruchamiam na SQL Server 2008, gdy przywracam produkcyjną bazę danych z jednego serwera do bazy danych programowania / testowania na innym serwerze, GDY nazwa użytkownika znajduje się w Zabezpieczenia> Użytkownicy bazy danych, ALE
'login name'
brakuje jej we właściwości users na Karta Ogólne:Odniesienie do MSDN tutaj Należy zauważyć, że artykuł zaleca użycie ALTER USER zamiast nowszych wersji SQL.
źródło