Självstudie: Migrera Windows-användare och -grupper i en SQL Server-instans till Azure SQL Managed Instance med hjälp av T-SQL DDL-syntax
Gäller för:Azure SQL Managed Instance
Den här artikeln beskriver hur du migrerar dina lokala Windows-användare och -grupper i SQL Server till Azure SQL Managed Instance med hjälp av T-SQL-syntax.
I den här självstudien lär du dig att:
- Skapa inloggningar för SQL Server
- Skapa en testdatabas för migrering
- Skapa inloggningar, användare och roller
- Säkerhetskopiera och återställa databasen till SQL Managed Instance (MI)
- Migrera användare till MI manuellt med ALTER USER-syntax
- Testa autentisering med nya mappade användare
Kommentar
Microsoft Entra-ID är det nya namnet för Azure Active Directory (Azure AD). Vi uppdaterar dokumentationen just nu.
Förutsättningar
För att slutföra den här självstudien gäller följande krav:
- Windows-domänen är federerad med Microsoft Entra-ID.
- Åtkomst till Active Directory för att skapa användare/grupper.
- En befintlig SQL Server i din lokala miljö.
- En befintlig SQL Managed Instance. Se Snabbstart: Skapa en SQL-hanterad instans.
- A
sysadmin
i SQL Managed Instance måste användas för att skapa Microsoft Entra-inloggningar.
- A
- Skapa en Microsoft Entra-administratör för SQL Managed Instance.
- Du kan ansluta till din SQL Managed Instance i nätverket. Mer information finns i följande artiklar:
T-SQL DDL-syntax
Nedan visas T-SQL DDL-syntaxen som används för migrering av Windows-användare och -grupper från en SQL Server-instans till SQL Managed Instance med Microsoft Entra-autentisering.
-- 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]
Argument
domainName
Anger användarens domännamn.
userName
Anger namnet på den användare som identifieras i databasen.
= loginName@domainName.com
Mappar om en användare till Microsoft Entra-inloggningen
groupName
Anger namnet på den grupp som identifieras i databasen.
Del 1: Skapa inloggningar i SQL Server för Windows-användare och -grupper
Viktigt!
Följande syntax skapar en användare och en gruppinloggning i SQL Server. Du måste se till att användaren och gruppen finns i Active Directory (AD) innan du kör syntaxen nedan.
Användare: testUser1, testGroupUser
Group: migration – testGroupUser måste tillhöra migreringsgruppen i AD
Exemplet nedan skapar en inloggning i SQL Server för ett konto med namnet testUser1 under domänen 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;
Skapa en databas för det här testet.
-- Create a database called [migration]
create database migration
go
Del 2: Skapa Windows-användare och -grupper och lägg sedan till roller och behörigheter
Använd följande syntax för att skapa testanvändaren.
use migration;
go
-- Create Windows user [aadsqlmi\testUser1] with login
create user [aadsqlmi\testUser1] from login [aadsqlmi\testUser1];
go
Kontrollera användarbehörigheterna:
-- 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
Skapa en roll och tilldela testanvändaren till den här rollen:
-- 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
Använd följande fråga för att visa användarnamn som tilldelats en viss roll:
-- 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;
Använd följande syntax för att skapa en grupp. Lägg sedan till gruppen i rollen 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)
Skapa en testtabell och lägg till vissa data med hjälp av följande syntax:
-- 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
Del 3: Säkerhetskopiera och återställa den enskilda användardatabasen till SQL Managed Instance
Skapa en säkerhetskopia av migreringsdatabasen med hjälp av artikeln Kopiera databaser med säkerhetskopiering och återställning, eller använd följande syntax:
use master;
go
backup database migration to disk = 'C:\Migration\migration.bak';
go
Följ vår snabbstart: Återställa en databas till en SQL-hanterad instans.
Del 4: Migrera användare till SQL Managed Instance
Kör kommandot ALTER USER för att slutföra migreringsprocessen på SQL Managed Instance.
Logga in på din SQL Managed Instance med hjälp av Microsoft Entra-administratörskontot för SQL Managed Instance. Skapa sedan din Microsoft Entra-inloggning i SQL Managed Instance med hjälp av följande syntax. Mer information finns i Självstudie: SQL Managed Instance-säkerhet i Azure SQL Database med microsoft Entra-serverhuvudnamn (inloggningar)..
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
Kontrollera migreringen för rätt databas, tabell och huvudnamn.
-- 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
Använd syntaxen ALTER USER för att mappa den lokala användaren till Microsoft Entra-inloggningen.
/** 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;
Använd syntaxen ALTER USER för att mappa den lokala gruppen till Microsoft Entra-inloggningen.
/** 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'
Del 5: Testa Microsoft Entra-användar- eller gruppautentisering
Testa autentisering till SQL Managed Instance med hjälp av användaren som tidigare mappats till Microsoft Entra-inloggningen med hjälp av ALTER USER-syntaxen.
Logga in på den federerade virtuella datorn med din Azure SQL Managed Instance-prenumeration som
aadsqlmi\testUser1
Använd SQL Server Management Studio (SSMS) och logga in på din SQL Managed Instance med hjälp av Active Directory-integrerad autentisering och ansluter till databasen
migration
.- Du kan också logga in med autentiseringsuppgifterna testUser1@aadsqlmi.net med SSMS-alternativet Active Directory – Universal med MFA-stöd. I det här fallet kan du dock inte använda mekanismen Enkel inloggning och du måste ange ett lösenord. Du behöver inte använda en federerad virtuell dator för att logga in på din SQL Managed Instance.
Som en del av rollmedlemmen SELECT kan du välja från
test
tabellenSelect * from test -- and see one row (1,10)
Testa autentisering till en SQL Managed Instance med en medlem i en Windows-grupp migration
. Användaren aadsqlmi\testGroupUser
bör ha lagts till i gruppen migration
före migreringen.
Logga in på den federerade virtuella datorn med din Azure SQL Managed Instance-prenumeration som
aadsqlmi\testGroupUser
Anslut till Azure SQL Managed Instance-servern och databasen med hjälp av SSMS med integrerad Active Directory-autentisering
migration
- Du kan också logga in med autentiseringsuppgifterna testGroupUser@aadsqlmi.net med SSMS-alternativet Active Directory – Universal med MFA-stöd. I det här fallet kan du dock inte använda mekanismen Enkel inloggning och du måste ange ett lösenord. Du behöver inte använda en federerad virtuell dator för att logga in på din SQL Managed Instance.
Som en del av
db_owner
rollen kan du skapa en ny tabell.-- Create table named 'new' with a default schema Create table dbo.new ( a int, b int)
Kommentar
På grund av ett känt designproblem för Azure SQL Database misslyckas en skapa en tabellsats som körs som medlem i en grupp med följande fel: 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.
Den aktuella lösningen är att skapa en tabell med ett befintligt schema i fallet ovan <dbo.new>
Nästa steg
Självstudie: Migrera SQL Server till Azure SQL Managed Instance offline med DMS