Zelfstudie: Windows-gebruikers en -groepen in een SQL Server-exemplaar migreren naar Azure SQL Managed Instance met behulp van de T-SQL DDL-syntaxis

Van toepassing op: Azure SQL Managed Instance

In dit artikel vindt u meer informatie over het proces voor het migreren van uw on-premises Windows-gebruikers en -groepen van uw SQL-server naar een beheerd Azure SQL-exemplaar met de T-SQL-syntaxis.

In deze zelfstudie leert u het volgende:

  • Aanmeldingen voor SQL-server maken
  • Een testdatabase maken voor migratie
  • Aanmeldingen, gebruikers en rollen maken
  • Back-up en herstel van uw database naar een beheerd SQL-exemplaar
  • Gebruikers handmatig migreren naar een beheerd exemplaar met de ALTER USER-syntax
  • Verificatie testen met de nieuwe toegewezen gebruikers

Notitie

Microsoft Entra-id is de nieuwe naam voor Azure Active Directory (Azure AD). Op dit moment wordt de documentatie bijgewerkt.

Vereisten

Voor het voltooien van deze zelfstudie gelden de volgende vereisten:

T-SQL DDL-syntaxis

Hieronder ziet u de T-SQL DDL-syntaxis die wordt gebruikt ter ondersteuning van de migratie van Windows-gebruikers en -groepen van een SQL Server-exemplaar naar SQL Managed Instance met Microsoft Entra-verificatie.

-- 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]

Argumenten

domainName
Hiermee geeft u de domeinnaam van de gebruiker.

userName
Hiermee geeft u de naam op van de gebruiker die in de database is geïdentificeerd.

= loginName@domainName.com
Hiermee wordt een gebruiker opnieuw toegewezen aan de Microsoft Entra-aanmelding

groupName
Geeft de naam op van de groep die in de database is geïdentificeerd.

Deel 1: Aanmeldingen maken in SQL Server voor Windows-gebruikers en -groepen

Belangrijk

Met de volgende syntaxis maakt u een gebruikers- en een groepsaanmelding in SQL Server U moet ervoor zorgen dat de gebruiker en groep in uw Active Directory (AD) bestaan voordat u de onderstaande syntaxis uitvoert.

Gebruikers: testUser1, testGroupUser-groep
: migratie - testGroupUser moet behoren tot de migratiegroep in AD

In het onderstaande voorbeeld wordt een aanmelding in SQL Server gemaakt voor een account met de naam testUser1 onder het domein aadsqlmi.

-- 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;

Maak een database voor deze test.

-- Create a database called [migration]
create database migration
go

Deel 2: Windows-gebruikers en -groepen maken en vervolgens rollen en machtigingen toevoegen

Gebruik de volgende syntaxis om de testgebruiker te maken.

use migration;  
go

-- Create Windows user [aadsqlmi\testUser1] with login
create user [aadsqlmi\testUser1] from login [aadsqlmi\testUser1];
go

Controleer de gebruikersmachtigingen:

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

Maak een rol en wijs uw testgebruiker aan deze rol toe:

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

Gebruik de volgende query om gebruikersnamen weer te geven die zijn toegewezen aan een specifieke rol:

-- 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;

Gebruik de volgende syntaxis om een groep te maken. Voeg de groep vervolgens toe aan de rol db_owner.

-- 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)

Maak een testtabel en voeg gegevens toe met behulp van de volgende syntaxis:

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

Deel 3: Een back-up maken van de individuele gebruikersdatabase en deze herstellen naar SQL Managed Instance

Maak een back-up van de migratiedatabase met behulp van het artikel Databases kopiëren met back-up en herstel, of gebruik de volgende syntaxis:

use master;
go
backup database migration to disk = 'C:\Migration\migration.bak';
go

Volg onze quickstart: Een database herstellen naar een met SQL beheerd exemplaar.

Deel 4: Gebruikers migreren naar SQL Managed Instance

Voer de opdracht ALTER USER uit om het migratieproces op het beheerde SQL-exemplaar te voltooien.

  1. Meld u aan bij uw sql Managed Instance met behulp van het Microsoft Entra-beheerdersaccount voor SQL Managed Instance. Maak vervolgens uw Microsoft Entra-aanmelding in het met SQL beheerde exemplaar met behulp van de volgende syntaxis. Zie Zelfstudie: BEVEILIGING van SQL Managed Instance in Azure SQL Database met behulp van Microsoft Entra-server-principals (aanmeldingen) voor meer informatie.

    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. Controleer of de migratie de juiste database, tabel en principals heeft.

    -- 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. Gebruik de syntaxis ALTER USER om de on-premises gebruiker toe te wijzen aan de Microsoft Entra-aanmelding.

    /** 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. Gebruik de syntaxis ALTER USER om de on-premises groep toe te wijzen aan de Microsoft Entra-aanmelding.

    /** 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'
    

Deel 5: Microsoft Entra-gebruikers- of groepsverificatie testen

Test verificatie bij SQL Managed Instance met behulp van de gebruiker die eerder is toegewezen aan de Microsoft Entra-aanmelding met behulp van de syntaxis ALTER USER.

  1. Meld u aan bij de federatieve VM met uw abonnement voor beheerde exemplaren van Azure SQLals aadsqlmi\testUser1

  2. Gebruik SQL Server Management Studio (SSMS) om u aan te melden bij uw beheerde SQL-exemplaar met geïntegreerde Active Directory-verificatie en maak verbinding met de databasemigration.

    1. U kunt zich ook aanmelden met de testUser1@aadsqlmi.net aanmeldingsgegevens met de SSMS-optie Active Directory - Universeel met MFA-ondersteuning . In dit geval kunt u het mechanisme voor eenmalige aanmelding echter niet gebruiken en moet u een wachtwoord invoeren. U hoeft geen federatieve VM te gebruiken om u aan te melden bij uw beheerde SQL-exemplaar.
  3. Als onderdeel van het rollid SELECTEREN, kunt u uit de tabel test kiezen

    Select * from test  --  and see one row (1,10)
    

Test de verificatie bij een beheerd SQL-exemplaar met behulp van een lid van een Windows-groep migration. De gebruiker aadsqlmi\testGroupUser moet zijn toegevoegd aan de groep migration vóór de migratie.

  1. Meld u aan bij de federatieve VM met uw abonnement voor beheerde exemplaren van Azure SQLals aadsqlmi\testGroupUser

  2. Gebruik SSMS met geïntegreerde Active Directory-verificatie om verbinding maken met de server van het beheerde Azure SQL-exemplaar en de database migration

    1. U kunt zich ook aanmelden met de testGroupUser@aadsqlmi.net aanmeldingsgegevens met de SSMS-optie Active Directory - Universeel met MFA-ondersteuning . In dit geval kunt u het mechanisme voor eenmalige aanmelding echter niet gebruiken en moet u een wachtwoord invoeren. U hoeft geen federatieve VM te gebruiken om u aan te melden bij uw beheerde SQL-exemplaar.
  3. Als onderdeel van de db_owner-rol kunt u een nieuwe tabel maken.

    -- Create table named 'new' with a default schema
    Create table dbo.new ( a int, b int)
    

Notitie

Vanwege een bekend ontwerpprobleem voor Azure SQL Database mislukt een tabelinstructie die als lid van een groep wordt uitgevoerd, met de volgende fout:


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.
de huidige tijdelijke oplossing is het maken van een tabel met een bestaand schema in het geval boven <dbo.new>

Volgende stappen

Zelfstudie: SQL Server offline migreren naar Azure SQL Managed Instance met behulp van DMS