Tutorial: Migrieren von Windows-Benutzern und -Gruppen in einer SQL Server-Instanz zu einer verwalteten Azure SQL-Instanz unter Verwendung der T-SQL-DDL-Syntax
Gilt für: Azure SQL Managed Instance
In diesem Artikel erfahren Sie, wie Sie Ihre lokalen Windows-Benutzer und -Gruppen in Ihrer SQL Server-Instanz unter Verwendung der T-SQL-Syntax zu einer verwalteten Azure SQL-Instanz migrieren.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen von Anmeldungen für SQL Server
- Erstellen einer Testdatenbank für die Migration
- Erstellen von Anmeldungen, Benutzern und Rollen
- Sichern und Wiederherstellen Ihrer Datenbank in einer verwalteten SQL-Instanz (MI)
- Manuelles Migrieren von Benutzern zur MI mithilfe der ALTER USER-Syntax
- Testen der Authentifizierung mit den neuen zugeordneten Benutzern
Hinweis
Microsoft Entra ID war zuvor als Azure Active Directory (Azure AD) bekannt.
Voraussetzungen
Für dieses Tutorials ist Folgendes erforderlich:
- Die Windows-Domäne gehört einem Verbund mit Microsoft Entra ID.
- Zugriff auf Active Directory für die Erstellung von Benutzern/Gruppen
- Eine SQL Server-Instanz in Ihrer lokalen Umgebung
- Eine vorhandene verwaltete SQL-Instanz. Weitere Informationen finden Sie unter Schnellstart: Erstellen einer verwalteten SQL-Instanz.
- Ein
sysadmin
in der SQL Managed Instance-Instanz muss verwendet werden, um Microsoft Entra-Anmeldungen zu erstellen.
- Ein
- Erstellen eines Microsoft Entra-Administrators für SQL Managed Instance.
- Erfolgreiche Verbindungsherstellung mit der verwalteten SQL-Instanz in Ihrem Netzwerk. Weitere Informationen finden Sie in den folgenden Artikeln:
T-SQL-DDL-Syntax
In diesem Abschnitt finden Sie die T-SQL-DDL-Syntax für die Migration von Windows-Benutzern und -Gruppen aus einer SQL Server-Instanz-Instanz zu einer SQL Managed Instance-Instanz mit Microsoft Entra-Authentifizierung.
-- For individual Windows users with logins
ALTER USER [domainName\userName] WITH LOGIN = [loginName@domainName.com];
--For individual groups with logins
ALTER USER [domainName\groupName] WITH LOGIN=[groupName]
Argumente
domainName
Hiermit wird der Domänenname von Benutzer*innen angegeben.
userName
Hiermit wird der Name von in der Datenbank identifizierten Benutzer*innen angegeben.
= loginName@domainName.com
Ordnet einen Benutzer der Microsoft Entra-Anmeldung neu zu.
groupName
Hiermit wird der Name von in der Datenbank identifizierten Gruppen angegeben.
Teil 1: Erstellen von Anmeldungen in SQL Server für Windows-Benutzer und -Gruppen
Wichtig
Die folgende Syntax erstellt einen Benutzer und eine Gruppenanmeldung in Ihrer SQL Server-Instanz. Der Benutzer und die Gruppe müssen vor dem Ausführen der folgenden Syntax bereits in Active Directory (AD) vorhanden sein.
Benutzer: testUser1, testGroupUser
Gruppe: Migration - testGroupUser muss der Migrationsgruppe in AD angehören
Im folgenden Beispiel in SQL Server eine Anmeldung für ein Konto namens testUser1 unter der Domäne aadsqlmi erstellt.
-- Sign into SQL Server as a sysadmin or a user that can create logins and databases
use master;
go
-- Create Windows login
create login [aadsqlmi\testUser1] from windows;
go;
/** Create a Windows group login which contains one user [aadsqlmi\testGroupUser].
testGroupUser will need to be added to the migration group in Active Directory
**/
create login [aadsqlmi\migration] from windows;
go;
-- Check logins were created
select * from sys.server_principals;
go;
Erstellen Sie eine Datenbank für diesen Test:
-- Create a database called [migration]
create database migration
go
Teil 2: Erstellen von Windows-Benutzern und -Gruppen und Hinzufügen von Rollen und Berechtigungen
Verwenden Sie die folgende Syntax, um den Testbenutzer zu erstellen:
use migration;
go
-- Create Windows user [aadsqlmi\testUser1] with login
create user [aadsqlmi\testUser1] from login [aadsqlmi\testUser1];
go
Überprüfen Sie die Benutzerberechtigungen:
-- Check the user in the Metadata
select * from sys.database_principals;
go
-- Display the permissions – should only have CONNECT permissions
select user_name(grantee_principal_id), * from sys.database_permissions;
go
Erstellen Sie eine Rolle, und weisen Sie ihr Ihren Testbenutzer zu:
-- Create a role with some permissions and assign the user to the role
create role UserMigrationRole;
go
grant CONNECT, SELECT, View DATABASE STATE, VIEW DEFINITION to UserMigrationRole;
go
alter role UserMigrationRole add member [aadsqlmi\testUser1];
go
Verwenden Sie die folgende Abfrage, um Benutzernamen anzuzeigen, die einer bestimmten Rolle zugewiesen sind:
-- Display user name assigned to a specific role
SELECT DP1.name AS DatabaseRoleName,
isnull (DP2.name, 'No members') AS DatabaseUserName
FROM sys.database_role_members AS DRM
RIGHT OUTER JOIN sys.database_principals AS DP1
ON DRM.role_principal_id = DP1.principal_id
LEFT OUTER JOIN sys.database_principals AS DP2
ON DRM.member_principal_id = DP2.principal_id
WHERE DP1.type = 'R'
ORDER BY DP1.name;
Verwenden Sie die folgende Syntax, um eine Gruppe zu erstellen. Fügen Sie die Gruppe anschließend der Rolle db_owner
hinzu:
-- Create Windows group
create user [aadsqlmi\migration] from login [aadsqlmi\migration];
go
-- ADD 'db_owner' role to this group
sp_addrolemember 'db_owner', 'aadsqlmi\migration';
go
--Check the db_owner role for 'aadsqlmi\migration' group
select is_rolemember('db_owner', 'aadsqlmi\migration')
go
-- Output ( 1 means YES)
Erstellen Sie eine Testtabelle, und fügen Sie mithilfe der folgenden Syntax einige Daten hinzu:
-- Create a table and add data
create table test ( a int, b int);
go
insert into test values (1,10)
go
-- Check the table values
select * from test;
go
Teil 3: Sichern und Wiederherstellen der individuellen Benutzerdatenbank in einer verwalteten SQL-Instanz
Erstellen wie im Artikel Kopieren von Datenbanken durch Sichern und Wiederherstellen beschrieben eine Sicherung der Migrationsdatenbank, oder verwenden Sie die folgende Syntax:
use master;
go
backup database migration to disk = 'C:\Migration\migration.bak';
go
Gehen Sie wie unter Schnellstart: Wiederherstellen einer Datenbank in einer verwalteten SQL-Instanz.
Teil 4: Migrieren von Benutzern zu einer verwalteten SQL-Instanz
Führen Sie den Befehl „ALTER USER“ aus, um die Migration zu einer verwalteten SQL-Instanz abzuschließen.
Melden Sie sich bei Ihrer SQL Managed Instance mit dem Microsoft Entra-Administratorkonto für SQL Managed Instance an. Erstellen Sie dann Ihre Microsoft Entra-Anmeldung in der SQL Managed Instance mithilfe der folgenden Syntax. Weitere Informationen finden Sie im Tutorial: Sicherheit für SQL Managed Instance-Instanzen in Azure SQL-Datenbank durch Microsoft Entra-Serverprinzipale (Anmeldungen).
use master go -- Create login for AAD user [testUser1@aadsqlmi.net] create login [testUser1@aadsqlmi.net] from external provider go -- Create login for the Azure AD group [migration]. This group contains one user [testGroupUser@aadsqlmi.net] create login [migration] from external provider go --Check the two new logins select * from sys.server_principals go
Überprüfen Sie, ob Ihre Migration über die korrekte Datenbank und Tabelle sowie über die korrekten Prinzipale verfügt:
-- Switch to the database migration that is already restored for MI use migration; go --Check if the restored table test exist and contain a row select * from test; go -- Check that the SQL on-premises Windows user/group exists select * from sys.database_principals; go -- the old user aadsqlmi\testUser1 should be there -- the old group aadsqlmi\migration should be there
Ordnen Sie den lokalen Benutzer mithilfe der ALTER USER-Syntax der Microsoft Entra-Anmeldung zu:
/** Execute the ALTER USER command to alter the Windows user [aadsqlmi\testUser1] to map to the Azure AD user testUser1@aadsqlmi.net **/ alter user [aadsqlmi\testUser1] with login = [testUser1@aadsqlmi.net]; go -- Check the principal select * from sys.database_principals; go -- New user testUser1@aadsqlmi.net should be there instead --Check new user permissions - should only have CONNECT permissions select user_name(grantee_principal_id), * from sys.database_permissions; go -- Check a specific role -- Display Db user name assigned to a specific role SELECT DP1.name AS DatabaseRoleName, isnull (DP2.name, 'No members') AS DatabaseUserName FROM sys.database_role_members AS DRM RIGHT OUTER JOIN sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id LEFT OUTER JOIN sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id WHERE DP1.type = 'R' ORDER BY DP1.name;
Ordnen Sie die lokale Gruppe mithilfe der ALTER USER-Syntax der Microsoft Entra-Anmeldung zu:
/** Execute ALTER USER command to alter the Windows group [aadsqlmi\migration] to the Azure AD group login [migration] **/ alter user [aadsqlmi\migration] with login = [migration]; -- old group migration is changed to Azure AD migration group go -- Check the principal select * from sys.database_principals; go --Check the group permission - should only have CONNECT permissions select user_name(grantee_principal_id), * from sys.database_permissions; go --Check the db_owner role for 'aadsqlmi\migration' user select is_rolemember('db_owner', 'migration') go -- Output 1 means 'YES'
Teil 5: Testen der Authentifizierung für Microsoft Entra-Benutzer oder -Gruppen
Testen Sie die Authentifizierung bei der verwalteten SQL-Instanz mithilfe des Benutzers, den Sie zuvor unter Verwendung der ALTER USER-Syntax der Microsoft Entra-Anmeldung zugeordnet haben.
Melden Sie sich mit Ihrem Abonnement für die verwalteten Azure SQL-Instanz als
aadsqlmi\testUser1
bei dem virtuellen Verbundcomputer an.Melden Sie sich unter Verwendung von SQL Server Management Studio (SSMS) bei Ihrer verwalteten SQL-Instanz an. Verwenden Sie dabei die integrierte Active Directory-Authentifizierung, und stellen Sie eine Verbindung mit der Datenbank
migration
her.- Sie können sich auch mit den Anmeldeinformationen testUser1@aadsqlmi.net und der SSMS-Option Active Directory: universell mit MFA-Unterstützung anmelden. In diesem Fall steht allerdings das einmalige Anmelden nicht zur Verfügung, und Sie müssen ein Kennwort eingeben. Für die Anmeldung bei Ihrer verwalteten SQL-Instanz muss kein virtueller Verbundcomputer verwendet werden.
Im Rahmen des Rollenmitglieds SELECT können Sie Inhalte aus der Tabelle
test
auswählen:Select * from test -- and see one row (1,10)
Testen Sie die Authentifizierung bei einer verwalteten SQL-Instanz mithilfe eines Mitglieds einer Windows-Gruppe (migration
). Der Benutzer aadsqlmi\testGroupUser
muss der Gruppe migration
vor der Migration hinzugefügt worden sein.
Melden Sie sich mit Ihrem Abonnement für die verwalteten Azure SQL-Instanz als
aadsqlmi\testGroupUser
bei dem virtuellen Verbundcomputer an.Stellen Sie unter Verwendung von SSMS mit integrierter Active Directory-Authentifizierung eine Verbindung mit dem Server der verwalteten Azure SQL-Instanz und der Datenbank
migration
her.- Sie können sich auch mit den Anmeldeinformationen testGroupUser@aadsqlmi.net und der SSMS-Option Active Directory: universell mit MFA-Unterstützung anmelden. In diesem Fall steht allerdings das einmalige Anmelden nicht zur Verfügung, und Sie müssen ein Kennwort eingeben. Für die Anmeldung bei Ihrer verwalteten SQL-Instanz muss kein virtueller Verbundcomputer verwendet werden.
Im Rahmen der Rolle
db_owner
können Sie eine neue Tabelle erstellen.-- Create table named 'new' with a default schema Create table dbo.new ( a int, b int)
Hinweis
Aufgrund eines bekannten Entwurfsproblems für Azure SQL-Datenbank tritt beim Erstellen einer als Mitglied einer Gruppe ausgeführten Tabellenanweisung der folgende Fehler auf:
Msg 2760, Level 16, State 1, Line 4 The specified schema name "testGroupUser@aadsqlmi.net" either does not exist or you do not have permission to use it.
Die aktuelle Problemumgehung besteht darin, eine Tabelle mit einem vorhandenen Schema - im obigen Fall <dbo.new> - zu erstellen