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:

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.

  1. 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
    
  2. Ü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
    
  3. 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;
    
  4. 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.

  1. Melden Sie sich mit Ihrem Abonnement für die verwalteten Azure SQL-Instanz als aadsqlmi\testUser1 bei dem virtuellen Verbundcomputer an.

  2. 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.

    1. 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.
  3. 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.

  1. Melden Sie sich mit Ihrem Abonnement für die verwalteten Azure SQL-Instanz als aadsqlmi\testGroupUser bei dem virtuellen Verbundcomputer an.

  2. 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.

    1. 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.
  3. 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

Nächste Schritte

Tutorial: Offlinemigration von SQL Server zu einer verwalteten Azure SQL-Instanz unter Verwendung von DMS