Öğretici: T-SQL DDL söz dizimini kullanarak SQL Server örneğindeki Windows kullanıcılarını ve gruplarını Azure SQL Yönetilen Örneği geçirme

Şunlar için geçerlidir:Azure SQL Yönetilen Örneği

Bu makale, SQL Server'ınızdaki şirket içi Windows kullanıcılarınızı ve gruplarınızı T-SQL söz dizimini kullanarak Azure SQL Yönetilen Örneği geçirme işleminde size yol gösterir.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • SQL Server için oturum açma bilgileri oluşturma
  • Geçiş için test veritabanı oluşturma
  • Oturum açma bilgileri, kullanıcılar ve roller oluşturma
  • Veritabanınızı yedekleme ve SQL Yönetilen Örneği (MI) olarak geri yükleme
  • ALTER USER söz dizimini kullanarak kullanıcıları MI'ye el ile geçirme
  • Yeni eşlenen kullanıcılarla kimlik doğrulamasını test etme

Not

Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdaki önkoşullar geçerlidir:

T-SQL DDL söz dizimi

Aşağıda, Windows kullanıcılarının ve gruplarının bir SQL Server örneğinden Microsoft Entra kimlik doğrulamasıyla SQL Yönetilen Örneği geçişini desteklemek için kullanılan T-SQL DDL söz dizimi yer almaktadır.

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

Bağımsız değişkenler

domainName
Kullanıcının etki alanı adını belirtir.

userName
Veritabanında tanımlanan kullanıcının adını belirtir.

= loginName@domainName.com
Kullanıcıyı Microsoft Entra oturum açma bilgileriyle yeniden eşler

groupName
Veritabanında tanımlanan grubun adını belirtir.

1. Bölüm: Windows kullanıcıları ve grupları için SQL Server'da oturum açma bilgileri oluşturma

Önemli

Aşağıdaki söz dizimi, SQL Server'ınızda bir kullanıcı ve grup oturumu oluşturur. Aşağıdaki söz dizimini yürütmeden önce kullanıcının ve grubun Active Directory'nizde (AD) bulunduğundan emin olmanız gerekir.

Kullanıcılar: testUser1, testGroupUser
Group: migration - testGroupUser'ın AD'deki geçiş grubuna ait olması gerekir

Aşağıdaki örnek, aadsqlmi etki alanı altında testUser1 adlı bir hesap için SQL Server'da oturum açma bilgisi oluşturur.

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

Bu test için bir veritabanı oluşturun.

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

2. Bölüm: Windows kullanıcıları ve grupları oluşturma, ardından roller ve izinler ekleme

Test kullanıcısını oluşturmak için aşağıdaki söz dizimini kullanın.

use migration;  
go

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

Kullanıcı izinlerini denetleyin:

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

Bir rol oluşturun ve test kullanıcınızı bu role atayın:

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

Belirli bir role atanan kullanıcı adlarını görüntülemek için aşağıdaki sorguyu kullanın:

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

Grup oluşturmak için aşağıdaki söz dizimini kullanın. Ardından grubu rolüne db_ownerekleyin.

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

Aşağıdaki söz dizimini kullanarak bir test tablosu oluşturun ve bazı veriler ekleyin:

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

3. Bölüm: Tek tek kullanıcı veritabanını yedekleme ve SQL Yönetilen Örneği geri yükleme

Veritabanlarını Yedekleme ve Geri Yükleme ile Kopyalama makalesini kullanarak geçiş veritabanının yedeğini oluşturun veya aşağıdaki söz dizimini kullanın:

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

Hızlı Başlangıcımızı izleyin: Veritabanını bir SQL Yönetilen Örneği geri yükleme.

Bölüm 4: Kullanıcıları SQL Yönetilen Örneği geçirme

geçiş işlemini SQL Yönetilen Örneği tamamlamak için ALTER USER komutunu yürütebilirsiniz.

  1. SQL Yönetilen Örneği için Microsoft Entra yönetici hesabını kullanarak SQL Yönetilen Örneği oturum açın. Ardından aşağıdaki söz dizimini kullanarak SQL Yönetilen Örneği Microsoft Entra oturum açma bilgilerinizi oluşturun. Daha fazla bilgi için bkz. Öğretici: Microsoft Entra sunucu sorumlularını (oturum açma bilgileri) kullanarak Azure SQL Veritabanı güvenliği SQL Yönetilen Örneği.

    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. Doğru veritabanı, tablo ve sorumlular için geçişinizi denetleyin.

    -- 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. Şirket içi kullanıcıyı Microsoft Entra oturum açma bilgileriyle eşlemek için ALTER USER söz dizimini kullanın.

    /** 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. Şirket içi grubu Microsoft Entra oturum açma bilgileriyle eşlemek için ALTER USER söz dizimini kullanın.

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

5. Bölüm: Microsoft Entra kullanıcı veya grup kimlik doğrulamayı test etme

DAHA önce ALTER USER söz dizimini kullanarak Microsoft Entra oturum açma bilgilerine eşlenen kullanıcıyı kullanarak SQL Yönetilen Örneği kimlik doğrulamasını test edin.

  1. Azure SQL Yönetilen Örneği aboneliğinizi kullanarak federasyon VM'sinde şu şekilde oturum açın:aadsqlmi\testUser1

  2. SQL Server Management Studio'yu (SSMS) kullanarak, veritabanına migrationbağlanarak Active Directory Tümleşik kimlik doğrulamasını kullanarak SQL Yönetilen Örneği oturum açın.

    1. Ayrıca SSMS seçeneği Active Directory – MFA desteğiyle Evrensel ile kimlik bilgilerini kullanarak testUser1@aadsqlmi.net da oturum açabilirsiniz. Ancak bu durumda, Çoklu Oturum Açma mekanizmasını kullanamazsınız ve bir parola yazmanız gerekir. SQL Yönetilen Örneği oturum açmak için federasyon VM'sini kullanmanız gerekmez.
  3. Rol üyesi SELECT'in bir parçası olarak tablodan test

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

Windows grubunun migrationbir üyesini kullanarak bir SQL Yönetilen Örneği kimlik doğrulamasını test edin. Kullanıcı aadsqlmi\testGroupUser , geçiş öncesinde gruba migration eklenmiş olmalıdır.

  1. Azure SQL Yönetilen Örneği aboneliğinizi kullanarak federasyon VM'sinde şu şekilde oturum açın:aadsqlmi\testGroupUser

  2. Active Directory Tümleşik kimlik doğrulaması ile SSMS kullanarak Azure SQL Yönetilen Örneği sunucusuna ve veritabanına bağlanınmigration

    1. Ayrıca SSMS seçeneği Active Directory – MFA desteğiyle Evrensel ile kimlik bilgilerini kullanarak testGroupUser@aadsqlmi.net da oturum açabilirsiniz. Ancak bu durumda, Çoklu Oturum Açma mekanizmasını kullanamazsınız ve bir parola yazmanız gerekir. SQL Yönetilen Örneği oturum açmak için federasyon VM'sini kullanmanız gerekmez.
  3. Rolün db_owner bir parçası olarak yeni bir tablo oluşturabilirsiniz.

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

Not

Azure SQL Veritabanı için bilinen bir tasarım sorunu nedeniyle, bir grubun üyesi olarak yürütülen tablo oluşturma deyimi şu hatayla başarısız olur:


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.
Geçerli geçici çözüm, yukarıdaki dbo.new örneğinde <mevcut şemaya sahip bir tablo oluşturmaktır>

Sonraki adımlar

Öğretici: DMS kullanarak SQL Server'ı çevrimdışı Azure SQL Yönetilen Örneği geçirme