إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ترشدك هذه المقالة خلال إنشاء واستخدام عمليات تسجيل الدخول المدعومة ب Microsoft Entra ID (المعروف سابقا باسم Azure Active Directory) ضمن قاعدة البيانات الافتراضية master لتجمع SQL مخصص ل Azure Synapse Analytics (المعروف سابقا باسم SQL DW). مجموعات SQL المخصصة في Azure Synapse Analytics workspaces لا تستخدم خوادم SQL المنطقية.
Note
مبادئ خوادم Microsoft Entra حاليا قيد المعاينة ل Azure Synapse Analytics.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء تسجيل دخول إلى Microsoft Entra في قاعدة البيانات الافتراضية
master - إنشاء مستخدم مرتبط بتسجيل دخول Microsoft Entra في قاعدة البيانات الافتراضية
master - استخدم صياغة الجملة
WITH OBJECT_IDلأسماء العرض غير الفريدة - منح أدوار الخوادم لمستخدم Microsoft Entra
- تعطيل تسجيل الدخول إلى Microsoft Entra
المتطلبات المسبقه
- An Azure Synapse Analytics dedicated SQL pool and a database.
- Microsoft Entra authentication configured for Azure Synapse Analytics. لمزيد من المعلومات، راجع Configure and manage Microsoft Entra authentication with Azure Synapse Analytics.
- توجهك هذه المقالة لإنشاء تسجيل دخول ومستخدم في Microsoft Entra داخل قاعدة البيانات الافتراضية
master. فقط مسؤول Microsoft Entra يمكنه إنشاء مستخدم داخل قاعدة البيانات الافتراضيةmaster، لذا ننصحك باستخدام حساب مسؤول Microsoft Entra عند مراجعة هذا الدرس. يمكن لمبدأ Microsoft Entra الذي يحمل هذاloginmanagerالدور إنشاء تسجيل دخول، لكنه لا يمكنه إنشاء مستخدم داخل قاعدة البيانات الافتراضيةmaster.
Note
بالنسبة للمنظمات التي تتعامل مع أسماء العرض غير الفريدة في Microsoft Entra ID (خصوصا لمديري الخدمة)، تأكد من توفر معلومات معرف الكائنات لأي مبادئ خدمة تخطط لإنشاء تسجيلات الدخول لها. يمكن لامتداد WITH OBJECT_ID النحو أن يساعد في حل هذه السيناريوهات.
إنشاء تسجيل دخول Microsoft Entra
أنشئ تسجيل دخول لحساب Microsoft Entra. في هذا المثال، الاستخدام
bob@contoso.comالموجود في نطاق Microsoft Entra يسمىcontoso. يمكنك أيضا إنشاء تسجيل دخول من مجموعة Microsoft Entra أو مبدأ الخدمة (التطبيقات). لمزيد من المعلومات، راجع إنشاء تسجيل الدخول (Transact-SQL).Note
يجب أن يتم إنشاء أول تسجيل دخول ل Microsoft Entra بواسطة مسؤول Microsoft Entra. يمكن أن يكون مسؤول Microsoft Entra مستخدما أو مجموعة في Microsoft Entra. تسجيل الدخول بمصادقة SQL لا يمكنه إنشاء تسجيلات دخول Microsoft Entra.
Tip
إذا واجهت مشاكل مع أسماء العرض غير الفريدة في Microsoft Entra ID، استخدم إضافة
WITH OBJECT_IDالصياغة (syntax). هذه الميزة مفيدة بشكل خاص لمديري الخدمة الذين لديهم أسماء عرض مكررة. على سبيل المثال:CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'لمزيد من المعلومات، راجع اعتبارات الأسماء.
باستخدام SQL Server Management Studio (SSMS)، سجل الدخول إلى مجموعة SQL المخصصة لك باستخدام حساب مسؤول Microsoft Entra.
توسيع قواعد بيانات>النظام في قواعد البيانات. انقر بزر الفأرة الأيمن على
masterقاعدة البيانات واختر استعلام جديد لفتح نافذة استعلام جديدة في سياقmasterقاعدة البيانات.قم بتشغيل الاستعلام التالي:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOتحقق من تسجيل
sys.server_principalsالدخول الذي تم إنشاؤه . تنفيذ الاستعلام التالي:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'ترى مخرجا مشابها للما يلي:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0يتم إنشاء تسجيل الدخول
bob@contoso.comفي قاعدة البيانات الافتراضيةmaster.
إنشاء مستخدم من تسجيل دخول Microsoft Entra
بعد إنشاء تسجيل دخول Microsoft Entra، أنشئ مستخدم Microsoft Entra على مستوى قاعدة البيانات يرتبط بتسجيل الدخول إلى Microsoft Entra في قاعدة البيانات الافتراضية
master. لإظهار كيفية إضافة المستخدم إلى أدوار خاصة، استخدم مثالنا،bob@contoso.com، لإنشاء مستخدم في قاعدة البيانات الافتراضيةmaster. فقط مسؤول Microsoft Entra أو مسؤول خادم SQL يمكنه إنشاء المستخدمين في قاعدة البيانات الافتراضيةmaster.استخدم قاعدة البيانات الافتراضية
master، لكن يمكنك إعادة الاتصال بقاعدة بيانات تختارها إذا أردت إنشاء مستخدمين في قواعد بيانات أخرى. قم بتشغيل الاستعلام التالي.CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]Tip
على الرغم من أنه ليس من الضروري استخدام أسماء مستعارة لمستخدمي Microsoft Entra (على سبيل المثال)،
bob@contoso.comإلا أنه من الممارسات المثلى الموصى بها استخدام نفس الاسم المستعار لمستخدمي Microsoft Entra وتسجيل الدخول إلى Microsoft Entra.إذا كنت بحاجة لإنشاء مستخدم مباشرة من مزود خارجي بمعرف كائن محدد (على سبيل المثال، لحل مشاكل اسم العرض غير الفريد)، استخدم الصياغة التالية:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'تحقق من المستخدم الذي تم إنشاؤه في
sys.database_principals. تنفيذ الاستعلام التالي:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'ترى مخرجا مشابها للما يلي:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Note
لا يزال بناء الجملة الحالي لإنشاء مستخدم Microsoft Entra بدون تسجيل دخول إلى Microsoft Entra مدعوما. إذا قمت بتشغيل النحو التالي، فإنشاء قاعدة بيانات مستخدم محتوى في قاعدة البيانات المحددة التي أنت متصل بها. هذا المستخدم غير مرتبط بأي تسجيل دخول، حتى لو كان هناك تسجيل دخول بنفس الاسم في قاعدة البيانات الافتراضية master .
على سبيل المثال، CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
يمكنك إنشاء تسجيل دخول إلى Microsoft Entra باستخدام مدير خدمة باسم عرض غير فريد. لمزيد من المعلومات، راجع اعتبارات الأسماء.
منح أدوار على مستوى الخادم لتسجيلات الدخول إلى Microsoft Entra
يمكنك إضافة تسجيلات الدخول إلى أدوار ثابتة على مستوى الخادم، مثل دور ##MS_DefinitionReader##،##MS_ServerStateReader###، أو ##MS_ServerStateManager## في master قاعدة البيانات.
Note
الأدوار على مستوى الخادم المذكورة هنا غير مدعومة لمجموعات Microsoft Entra.
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateManager## ADD MEMBER [AzureAD_object];
الأذونات غير فعالة حتى يعيد المستخدم الاتصال. قم أيضا بمسح ذاكرة DBCC المؤقتة:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
للتحقق من أي تسجيلات الدخول في Microsoft Entra هي جزء من أدوار على مستوى الخادم، قم بتشغيل الاستعلام التالي:
SELECT roles.principal_id AS RolePID,roles.name AS RolePName,
server_role_members.member_principal_id AS MemberPID, members.name AS MemberPName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members
ON server_role_members.member_principal_id = members.principal_id;
منح أدوار خاصة لمستخدمي Microsoft Entra
يمكنك تعيين أدوار خاصة ل Azure Synapse Analytics للمستخدمين في قاعدة البيانات الافتراضيةmaster.
لمنح أحد أدوار قاعدة البيانات الخاصة للمستخدم، يجب أن يكون المستخدم موجودا في قاعدة البيانات الافتراضية master .
لإضافة مستخدم إلى دور، قم بتشغيل الاستعلام التالي:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
لإزالة مستخدم من دور، قم بتشغيل الاستعلام التالي:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_objectيمكن أن يكون مستخدما Microsoft Entra أو مجموعة أو مدير خدمة في Microsoft Entra ID.
في المثال التالي، تقوم بإنشاء المستخدم bob@contoso.com. تعيين أدوار dbmanagerومدير تسجيل الدخول للمستخدم.
قم بتشغيل الاستعلام التالي:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]تحقق من تعيين دور قاعدة البيانات من خلال تشغيل الاستعلام التالي:
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'and DP2.name like 'bob%'ترى مخرجا مشابها للما يلي:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
اختياري - تعطيل تسجيل الدخول
استخدم صياغة تسجيل الدخول (Transact-SQL) DDL لتمكين أو تعطيل تسجيل دخول Microsoft Entra في تجمع SQL مخصص.
ALTER LOGIN [bob@contoso.com] DISABLE
لإجراء DISABLE أو ENABLE بدء التغييرات فورا، قم بمسح ذاكرة التحقق المؤقتة وذاكرة TokenAndPermUserStore التخزين المؤقت باستخدام أوامر T-SQL التالية:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
تحقق من تعطيل تسجيل الدخول عن طريق تشغيل الاستعلام التالي:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1