Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server-
Converteert een databasegebruiker die is toegewezen aan een SQL Server-aanmelding, naar een ingesloten databasegebruiker met een wachtwoord. Gebruik deze procedure in een ingesloten database om afhankelijkheden te verwijderen van het exemplaar van SQL Server waarop de database is geïnstalleerd.
sp_migrate_user_to_contained
scheidt de gebruiker van de oorspronkelijke SQL Server-aanmelding, zodat instellingen zoals wachtwoord en standaardtaal afzonderlijk voor de ingesloten database kunnen worden beheerd.
sp_migrate_user_to_contained
kan worden gebruikt voordat u de ingesloten database naar een ander exemplaar van de SQL Server Database Engine verplaatst om afhankelijkheden van de huidige aanmeldingen van het SQL Server-exemplaar te elimineren.
Voorzichtigheid
Wees voorzichtig bij het gebruik van sp_migrate_user_to_contained
, omdat u het effect niet kunt omkeren. Deze procedure wordt alleen gebruikt in een ingesloten database. Zie Ingesloten databasesvoor meer informatie.
Syntaxis
sp_migrate_user_to_contained [ @username = ] N'user' ,
[ @rename = ] { N'copy_login_name' | N'keep_name' } ,
[ @disablelogin = ] { N'disable_login' | N'do_not_disable_login' }
[ ; ]
Argumenten
Belangrijk
Argumenten voor uitgebreide opgeslagen procedures moeten worden ingevoerd in de specifieke volgorde, zoals beschreven in de sectie Syntaxis. Als de parameters niet in de volgorde zijn ingevoerd, treedt er een foutbericht op.
[ @username = ] N'gebruikersnaam'
De naam van een gebruiker in de huidige ingesloten database die is toegewezen aan een geverifieerde SQL Server-aanmelding. De waarde is sysname, met een standaardwaarde van NULL
.
[ @rename = ] N'copy_login_name' | N'keep_name'
Wanneer een databasegebruiker op basis van een aanmelding een andere gebruikersnaam heeft dan de aanmeldingsnaam, gebruikt u keep_name
om de gebruikersnaam van de database tijdens de migratie te behouden. Gebruik copy_login_name
om de nieuwe ingesloten databasegebruiker te maken met de naam van de aanmelding, in plaats van de gebruiker. Wanneer een databasegebruiker op basis van een aanmelding dezelfde gebruikersnaam heeft als de aanmeldingsnaam, maken beide opties de ingesloten databasegebruiker zonder de naam te wijzigen.
[ @disablelogin = ] N'disable_login' | N'do_not_disable_login'
Wordt gebruikt om de aanmelding in de master
-database uit te schakelen. Als u verbinding wilt maken wanneer de aanmelding is uitgeschakeld, moet de verbinding de naam van de ingesloten database opgeven als de initial catalog
als onderdeel van de verbindingsreeks.
Codewaarden retourneren
0
(geslaagd) of 1
(mislukt).
Opmerkingen
sp_migrate_user_to_contained
maakt de ingesloten databasegebruiker met een wachtwoord, ongeacht de eigenschappen of machtigingen van de aanmelding. De procedure kan bijvoorbeeld slagen als de aanmelding is uitgeschakeld of als de gebruiker de CONNECT
machtiging voor de database wordt geweigerd.
sp_migrate_user_to_contained
heeft de volgende beperkingen.
- De gebruikersnaam kan nog niet bestaan in de database.
- Ingebouwde gebruikers, bijvoorbeeld dbo- en gast-, kunnen niet worden geconverteerd.
- De gebruiker kan niet worden opgegeven in de
EXECUTE AS
component van een ondertekende opgeslagen procedure. - De gebruiker kan geen opgeslagen procedure hebben die de
EXECUTE AS OWNER
component bevat. -
sp_migrate_user_to_contained
kan niet worden gebruikt in een systeemdatabase.
Veiligheid
Wanneer u gebruikers migreert, moet u niet alle aanmeldingen van de beheerder uitschakelen of verwijderen uit het exemplaar van SQL Server. Als alle aanmeldingen worden verwijderd, raadpleegt u Verbinding maken met SQL Server wanneer systeembeheerders zijn vergrendeld.
Als de BUILTIN\Administrators
aanmelding aanwezig is, kunnen beheerders verbinding maken door hun toepassing te starten met behulp van de optie Als administrator uitvoeren.
Machtigingen
Hiervoor is de machtiging CONTROL SERVER
vereist.
Voorbeelden
Een. Eén gebruiker migreren
In het volgende voorbeeld wordt een SQL Server-aanmelding met de naam Barry
gemigreerd naar een ingesloten databasegebruiker met een wachtwoord. In het voorbeeld wordt de gebruikersnaam niet gewijzigd en blijft de aanmelding ingeschakeld.
EXEC sp_migrate_user_to_contained @username = N'Barry',
@rename = N'keep_name',
@disablelogin = N'do_not_disable_login';
B. Alle databasegebruikers met aanmeldingen migreren naar ingesloten databasegebruikers zonder aanmeldingen
In het volgende voorbeeld worden alle gebruikers gemigreerd die zijn gebaseerd op SQL Server-aanmeldingen naar ingesloten databasegebruikers met wachtwoorden. In het voorbeeld worden aanmeldingen uitgesloten die niet zijn ingeschakeld. Het voorbeeld moet worden uitgevoerd in de ingesloten database.
DECLARE @username SYSNAME;
DECLARE user_cursor CURSOR
FOR
SELECT dp.name
FROM sys.database_principals AS dp
INNER JOIN sys.server_principals AS sp
ON dp.sid = sp.sid
WHERE dp.authentication_type = 1
AND sp.is_disabled = 0;
OPEN user_cursor
FETCH NEXT
FROM user_cursor
INTO @username
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE sp_migrate_user_to_contained @username = @username,
@rename = N'keep_name',
@disablelogin = N'disable_login';
FETCH NEXT
FROM user_cursor
INTO @username
END
CLOSE user_cursor;
DEALLOCATE user_cursor;