Öğ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:
- Windows etki alanı Microsoft Entra Id ile birleştirilir.
- Kullanıcı/grup oluşturmak için Active Directory'ye erişim.
- Şirket içi ortamınızda var olan bir SQL Server.
- Mevcut bir SQL Yönetilen Örneği. Bkz. Hızlı Başlangıç: SQL Yönetilen Örneği oluşturma.
- Microsoft Entra oturum açma bilgilerini oluşturmak için SQL Yönetilen Örneği içindeki bir
sysadmin
kullanılmalıdır.
- Microsoft Entra oturum açma bilgilerini oluşturmak için SQL Yönetilen Örneği içindeki bir
- SQL Yönetilen Örneği için bir Microsoft Entra yöneticisi oluşturun.
- Ağınızdaki SQL Yönetilen Örneği bağlanabilirsiniz. Ek bilgi için aşağıdaki makalelere bakın:
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_owner
ekleyin.
-- 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.
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
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
Ş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;
Ş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.
Azure SQL Yönetilen Örneği aboneliğinizi kullanarak federasyon VM'sinde şu şekilde oturum açın:
aadsqlmi\testUser1
SQL Server Management Studio'yu (SSMS) kullanarak, veritabanına
migration
bağlanarak Active Directory Tümleşik kimlik doğrulamasını kullanarak SQL Yönetilen Örneği oturum açın.- 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.
Rol üyesi SELECT'in bir parçası olarak tablodan
test
Select * from test -- and see one row (1,10)
Windows grubunun migration
bir ü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.
Azure SQL Yönetilen Örneği aboneliğinizi kullanarak federasyon VM'sinde şu şekilde oturum açın:
aadsqlmi\testGroupUser
Active Directory Tümleşik kimlik doğrulaması ile SSMS kullanarak Azure SQL Yönetilen Örneği sunucusuna ve veritabanına bağlanın
migration
- 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.
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin