Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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