Machtigingsproblemen oplossen wanneer u een database verplaatst tussen servers waarop SQL Server wordt uitgevoerd

Van toepassing: Microsoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise EditionMicrosoft SQL Server 2005 Express Edition

Samenvatting


In dit artikel wordt beschreven hoe u de standaard en geïntegreerde aanmeldingen koppelt om machtigingsproblemen op te lossen wanneer u een database verplaatst tussen servers waarop SQL Server wordt uitgevoerd.

Meer informatie


Wanneer u een database verplaatst van de ene server waarop SQL Server wordt uitgevoerd, is het mogelijk dat de Sid's (Sid's) van de logins in de hoofd database en de gebruikers in de gebruikers database niet overeenkomen. Standaard biedt SQL Server 7,0, SQL Server 2000 en SQL Server 2005 de procedure voor het opslaan van sp_change_users_login systeem om deze niet-gerelateerde gebruikers toe te wijzen. U kunt echter alleen de opgeslagen procedure sp_change_users_login gebruiken om standaard SQL Server-aanmeldingen toe te wijzen en u moet deze toewijzing voor één gebruiker tegelijk uitvoeren. Zie voor meer informatie over de sp_change_users_login opgeslagen procedure het onderwerp ' sp_change_users_login ' in SQL Server 7.0, sql server 2000 en sql server 2005 boeken online.in SQL Server 7,0 of latere versies, u kunt de toewijzing tussen de aanmeldingen in de hoofd database en de gebruikers in de gebruikers database bijhouden met behulp van de sid's. Deze toewijzing is vereist voor het behoud van de juiste machtigingen voor de logins in de gebruikers databases. Wanneer deze toewijzing verloren gaat, hebben de aanmeldingen machtigingsproblemen die de volgende items bevatten, maar niet beperkt tot:
  • Als de aanmeldingsgegevens van SQL Server niet op de nieuwe server bestaan en de gebruiker zich probeert aan te melden, wordt mogelijk het volgende foutbericht weergegeven:
    Server: msg 18456, niveau 16, State 1Login mislukt voor de gebruiker '% ls '.
  • Als de aanmeldingsgegevens van SQL Server bestaan op de nieuwe server, maar de SID in de hoofd database verschilt van de sid in de gebruikers database, kan de gebruiker zich bij SQL server aanmelden. Wanneer de gebruiker de database probeert te openen, wordt het volgende foutbericht weergegeven:
    Server: msg 916, niveau 14, provincie 1, Line1Server gebruiker%. * ls is geen geldige gebruiker in database%. * ls.
    Opmerking In SQL Server 2005 kan de gebruiker het volgende foutbericht ontvangen:
    Server gebruiker% s is geen geldige gebruiker in database% s. Voeg eerst het gebruikersaccount toe aan de database.
Zie het Engelstalige artikel ' Microsoft SQL Server 7,0 Security ' voor meer informatie over het beveiligingsmodel SQL Server 7,0. Ga naar de volgende Microsoft-website om het White Paper weer te geven:Als u meer informatie wilt over het beveiligingsmodel SQL Server 2000, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
322712 Beveiligingsfuncties en aanbevolen procedures voor Microsoft SQL Server 2000 S322712

Beperkingen

  • Als er gebruikers zijn in de tabel sysusers zonder een prefix van de computernaam of de domeinnaam die eigen objecten bevat, en deze objecten waarnaar wordt verwezen in toepassingen via de naamgebruikersnaamvan twee delen.objectnaam, de toepassing kan worden verbroken omdat de naam van de sp_sidmap opgeslagen procedure het voorvoegsel van de computernaam of de domeinnaam in de naam van de naam van de computer of de domeinnaam in de sysxlogins -tabel voorkomt. U kunt dit probleem omzeilen sp_sidmap door de namen van de gebruikers die in de tabel sysusers zijn veranderd, te wijzigen in de naam van de gebruiker of contact op te nemen met uw primaire ondersteuningsprovider.
  • Dit artikel is geen berekenings van aliassen. U moet de aliassen handmatig beheren.
  • Als u geen standaard-SQL Server-aanmelding op de nieuwe SQL Server-server kunt vinden, kunt u de aanmelding toevoegen met een leeg wachtwoord. Het is mogelijk dat u het wachtwoord van deze aanmeldingen dienovereenkomstig moet wijzigen.
  • Als een gebruiker in de gebruikers database een naam heeft gemaakt waarvan de naam afwijkt van de naam die wordt weergegeven in de tabel sysxlogins , is het niet mogelijk om de bijbehorende login voor die gebruiker te weten. Voordat u de sp_sidmap opgeslagen procedure uitvoert, moet u daarom eerst het volgende doen:
    1. Alle objecten overzetten die deze gebruiker eigendom zijn van een staging-database.
    2. De gebruiker weghalen, de juiste naam toevoegen aan de gebruiker en alle objecten voor deze gebruiker overbrengen.
  • Als een gebruiker geen corresponderende aanmelding of een voorvoegsel van de lokale computernaam of de domeinnaam heeft, ontvangt u een bericht voor deze gebruiker. Dit bericht geeft aan dat u de gebruiker eerst op Windows niveau moet toevoegen en deze vervolgens aan de SQL Server wilt toevoegen als een aanmelding. Nadat u dit hebt gedaan, moet u de sp_sidmap opgeslagen procedure opnieuw uitvoeren.
  • Als een gebruiker een voorvoegsel heeft van de domeinnaam of de naam van de lokale Windows-Server, maar de bijbehorende login niet bestaat in de tabel sysxlogins , wordt de opgeslagen procedure geprobeerd deze als een nieuwe aanmeldingsnaam toe te voegen aan SQL Server. Als de Windows-gebruiker niet bestaat, wordt er een uitvoerbericht in het venster met zoekresultaten gemaakt en wordt de aanmelding vervolgens handmatig gemaakt nadat de gebruiker voor het eerst de Windows-gebruiker heeft toegevoegd.
  • Als een gebruiker in de sysusers -tabel meerdere gebruikers aanmeldt, wordt een uitvoerbericht weergegeven in het resultatenbestand en worden alle aanmeldingen met dezelfde gebruikersnaam weergegeven. Op dit moment moet u handmatig overstappen om ervoor te zorgen dat de gebruiker bij slechts één aanmelding komt.Voorbeeld Wanneer de tabel sysusers een gebruiker heeft met de naam ' johndoe ' en de sysxlogins -tabel bevat logins met namen zoals ' Test\johndoe ' en ' Test2\johndoe ', wanneer u de opgeslagen procedure uitvoert, wordt een bericht weergegeven waarin staat dat een van de gebruikers meer dan één aanmelding heeft en dat de systeembeheerder een abonnement moet kiezen. Dit is de enige tijd die u moet uitvoeren om de tweede opgeslagen procedure uit te voeren, sp_prefix_sysusersname, dat in dit artikel wordt beschreven. Daarnaast wordt deze situatie uitvoerig beschreven in het bestand README. txt.

De standaard en geïntegreerde aanmeldingen toewijzen

Nadat u een database hebt verplaatst van een server waarop SQL Server server wordt uitgevoerd, voert u de volgende stappen uit voor minimale gebruikersinterventie:

SQL Server 7,0 en SQL Server 2000

  1. Zorg ervoor dat de tabel sysxlogins in de hoofddatabase een aanmeld bestand bevat voor elke gebruiker in de sysusers -tabel van de database.Opmerking Als u een standaard-SQL Server-aanmelding wilt toevoegen, raadpleegt u het onderwerp ' sp_addlogin ' in SQL Server-boeken online. Als u een geïntegreerde SQL Server-aanmelding wilt toevoegen, raadpleegt u het onderwerp ' sp_grantlogin ' in SQL Server-boeken online.
  2. Download het bestand MapSids. exe en extraheer de bestanden Sp_sidmap. SQL en Leesmij. txt.
  3. Meld u aan bij de server waarop SQL Server wordt uitgevoerd als systeembeheerder, en voer vervolgens het bestand Sp_sidmap. SQL uit in de gebruikersdatabase. Wanneer u het bestand Sp_sidmap. sql uitvoert, worden de twee opgeslagen procedures gemaakt, sp_sidmap en sp_prefix_sysusersname.
  4. Zorg ervoor dat de database niet wordt geopend door een andere gebruiker dan degene die de opgeslagen procedures uitvoert.
  5. Zorg ervoor dat de optie resultaten in tekstopmaak en niet in de rasterindeling van de query analyse wordt weergegeven. Als u dit wilt doen, drukt u opCTRL + T of klikt u op queryen vervolgens op resultaten in tekst. Dit is heel belangrijk, zodat u de resultaten en informatieve berichten in één venster kunt bekijken en de uitvoer kunt opslaan in een tekstbestand. Misschien hebt u dit bestand later nodig om enkele toewijzingen op te lossen.
  6. Aangezien u niet kunt controleren of de parameters correct worden doorgegeven, moet u deze doorgeven aan de sp_sidmap opgeslagen procedure:
    EXEC sp_SidMap @old_domain = old_domain_name,@new_domain = new_domain_name,@old_server = old_server_name,@new_server = new_server_name
    Vervang de waarden voor de oude en nieuwe domeinnamen en servernamen op de juiste manier.
  7. Sla de resultaten op in een bestand en volg de instructies die worden vermeld in het bestand README. txt.Opmerking Wanneer u deze opgeslagen procedures uitvoert, is de tabel sysusers de enige tabel die in de database wordt gewijzigd. Als u wilt teruggaan naar een staat waar u bent begonnen, zet u de database terug met de back-up of koppelt u de database opnieuw.

SQL Server 2005

Als u SQL Server 2005 uitvoert, gebruikt u de component with login van de instructie Alter User om een gebruiker toe te wijzen aan een nieuwe aanmelding. Ga naar de volgende MSDN-website (Microsoft Developer Network) voor meer informatie:Opmerking Als u de component with login van de instructie Alter User wilt gebruiken, moet u SQL Server 2005 Service Pack 2 toepassen.

Verwijzingen


Klik op de volgende artikelnummers in de Microsoft Knowledge Base voor meer informatie:
het onderwerp voor het oplossen van problemen met zwevende gebruikers in 274188 is onvolledig
246133 Logins en wachtwoorden overzetten tussen exemplaren van SQL Server
168001 Aanmeldings-en/of machtigings fouten van gebruikers na herstellen van dump
298897 Voorbeeld: Mapsids. exe helpt Sid's toe te voegen tussen gebruikers-en basis databases wanneer de database wordt verplaatst