Access external storage using serverless SQL pool in Azure Synapse Analytics

تلميح

Microsoft Fabric Data Warehouse هو مستودع علائقي على نطاق مؤسسي قائم على أساس بحيرة البيانات، مع بنية جاهزة للمستقبل، وذكاء اصطناعي مدمج، وميزات جديدة. إذا كنت جديدا في مستودع البيانات، ابدأ ب Fabric Data Warehouse. يمكن لأحمال عمل تجمع SQL المخصصة الحالية الترقية إلى Fabric للوصول إلى قدرات جديدة في علوم البيانات، والتحليلات اللحظية، والتقارير.

تصف هذه المقالة كيف يمكن للمستخدمين قراءة البيانات من الملفات المخزنة على تخزين Azure في مجموعة SQL بدون خادم. لدى المستخدمين الخيارات التالية للوصول إلى التخزين:

  • OPENROWSET التي تتيح الاستعلامات التلقائية على الملفات في تخزين Azure.
  • جدول خارجي هو هيكل بيانات محدد مسبقا مبني فوق مجموعة من الملفات الخارجية.

يمكن للمستخدم استخدام طرق طرق مصادقة مختلفة مثل المصادقة Microsoft Entra عبر المصادقة (الافتراضية لمبادئ Microsoft Entra) ومصادقة SAS (الافتراضية لمبادئ SQL).

ملفات الاستعلام باستخدام OPENROWSET

يتيح OPENROWSET للمستخدمين الاستعلام عن الملفات الخارجية على تخزين Azure إذا كان لديهم وصول إلى التخزين. يجب على المستخدم المتصل بمجموعة SQL بدون خادم استخدام الاستعلام التالي لقراءة محتوى الملفات على تخزين Azure:

SELECT * FROM
 OPENROWSET(BULK 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/*.parquet', format= 'parquet') as rows

يمكن للمستخدم الوصول إلى التخزين باستخدام قواعد الوصول التالية:

  • Microsoft Entra المستخدم - OPENROWSET سيستخدم هوية المتصل Microsoft Entra للوصول إلى تخزين Azure أو الوصول إلى التخزين بوصول مجهول.
  • مستخدم SQL – OPENROWSET سيصل إلى التخزين باستخدام وصول مجهول أو يمكن انتحال شخصيته باستخدام رمز SAS أو هوية إدارة مساحة العمل.

يمكن لمبادئ SQL أيضا استخدام OPENROWSET للاستعلام المباشر عن الملفات المحمية برموز SAS أو الهوية المدارة لمساحة العمل. إذا نفذ مستخدم SQL هذه الوظيفة، يجب على المستخدم المحترف الذي لديه ALTER ANY CREDENTIAL إذن إنشاء بيانات اعتماد ضمن نطاق الخادم تطابق رابط URL في الدالة (باستخدام اسم التخزين والحاوية) ومنح إذن REFERENCES لهذه الشهادة للمتصل بدالة OPENROWSET:

EXECUTE AS somepoweruser

CREATE CREDENTIAL [https://<storage_account>.dfs.core.windows.net/<container>]
 WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sas token';

GRANT REFERENCES ON CREDENTIAL::[https://<storage_account>.dfs.core.windows.net/<container>] TO sqluser

إذا لم يكن هناك بيانات اعتماد على مستوى الخادم تطابق العنوان، أو إذا لم يكن لدى مستخدم SQL إذن مراجع لهذه الاعتمادات، فسيتم إرجاع الخطأ. لا يمكن لمبادئ SQL انتحال الشخصية باستخدام هوية Microsoft Entra.

ملحوظة

تم تصميم هذا الإصدار من OPENROWSET لاستكشاف البيانات بسرعة وسهولة باستخدام المصادقة الافتراضية. للاستفادة من الانتحال أو الهوية المدارة، استخدم OPENROWSET مع DATA_SOURCE الموضح في القسم التالي.

استعلام مصادر البيانات باستخدام OPENROWSET

يتيح OPENROWSET للمستخدم الاستعلام عن الملفات الموضوعة على مصدر بيانات خارجي:

SELECT * FROM
 OPENROWSET(BULK 'file/path/*.parquet',
 DATA_SOURCE = MyAzureInvoices,
 FORMAT= 'parquet') as rows

يجب أن يكون المستخدم الذي ينفذ هذا الاستعلام قادرا على الوصول إلى الملفات. يجب انتحال الشخصيات باستخدام SAS token أو Managed Identity of workspace إذا لم يتمكنوا من الوصول المباشر إلى الملفات باستخدام Microsoft Entra Identity أو Anonymous access.

DATABASE SCOPED CREDENTIAL يحدد كيفية الوصول إلى الملفات على مصدر البيانات المشار إليه (حاليا SAS والهوية المدارة). المستخدم المحترف الذي لديه CONTROL DATABASE إذن يحتاج إلى إنشاء DATABASE SCOPED CREDENTIAL ما سيستخدم للوصول إلى التخزين ويحدد EXTERNAL DATA SOURCE رابط مصدر البيانات وبيانات الاعتماد التي يجب استخدامها:

EXECUTE AS somepoweruser;

-- Create MASTER KEY if it doesn't exists in database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'some very strong password';

CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
 WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
 SECRET = '******srt=sco&amp;sp=rwac&amp;se=2017-02-01T00:55:34Z&amp;st=201********' ;

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
 WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/' ,
 CREDENTIAL = AccessAzureInvoices) ;

يجب أن يكون لدى المتصل أحد الأذونات التالية لتنفيذ دالة OPENROWSET:

  • أحد الأذونات لتنفيذ OPENROWSET:
    • ADMINISTER BULK OPERATIONS يتيح تسجيل الدخول لتنفيذ دالة OPENROWSET.
    • ADMINISTER DATABASE BULK OPERATIONS يمكن المستخدم المحدد في نطاق قاعدة البيانات من تنفيذ وظيفة OPENROWSET.
  • REFERENCES DATABASE SCOPED CREDENTIAL إلى الشهادة المشار إليها في EXTERNAL DATA SOURCE.

جدول خارجي

يمكن للمستخدم الذي يمتلك صلاحيات قراءة جدول الوصول إلى الملفات الخارجية باستخدام جدول خارجي تم إنشاؤه فوق مجموعة من مجلدات وملفات تخزين Azure.

يمكن للمستخدم الذي لديه صلاحيات لإنشاء جدول خارجي (على سبيل المثال إنشاء جدول وتعديل أي بيانات اعتماد أو مراجع في نطاق بيانات البيانات) استخدام السكريبت التالي لإنشاء جدول فوق مصدر البيانات تخزين Azure:

CREATE EXTERNAL TABLE [dbo].[DimProductexternal]
( ProductKey int, ProductLabel nvarchar, ProductName nvarchar )
WITH
(
LOCATION='/DimProduct/year=*/month=*' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat
) ;

يجب أن يكون المستخدم الذي يقرأ البيانات من هذا الجدول قادرا على الوصول إلى الملفات. يجب انتحال الشخصيات باستخدام SAS token أو Managed Identity of workspace إذا لم يتمكنوا من الوصول مباشرة إلى الملفات باستخدام Microsoft Entra هويتهم أو Anonymous access.

تحدد بيانات الاعتماد المحدد نطاق قاعدة البيانات كيفية الوصول إلى الملفات على مصدر البيانات المشار إليه. المستخدم الذي يحمل إذن قاعدة بيانات التحكم سيحتاج إلى إنشاء بيانات اعتمادية محدودة لقاعدة البيانات ستستخدم للوصول إلى التخزين، ومصدر بيانات خارجي يحدد عنوان مصدر البيانات وبيانات الاعتماد التي يجب استخدامها:

EXECUTE AS somepoweruser;

-- Create MASTER KEY if it doesn't exists in database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'some very strong password';

CREATE DATABASE SCOPED CREDENTIAL cred
 WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
 SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=201********' ;

CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
 WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>' ,
 CREDENTIAL = cred
 ) ;

اقرأ الملفات الخارجية مع جدول خارجي

يتيح لك EXTERNAL TABLE قراءة البيانات من الملفات التي يتم الرجوع إليها عبر مصدر البيانات باستخدام عبارة SQL SELECT القياسية:

SELECT *
FROM dbo.DimProductsExternal

يجب أن يكون لدى المتصل الأذونات التالية لقراءة البيانات:

  • SELECT الإذن على الجدول الخارجي
  • REFERENCES DATABASE SCOPED CREDENTIAL إذن إذا DATA SOURCE كان لديه CREDENTIAL

الأذونات

الجدول التالي يسرد الأذونات المطلوبة للعمليات المذكورة أعلاه.

Query الصلاحيات المطلوبة
مجموعة OPENROW (BULK) بدون مصدر بيانات ADMINISTER BULK OPERATIONS, ADMINISTER DATABASE BULK OPERATIONS، أو يجب أن يحتوي تسجيل الدخول على SQL على REFERENCES CREDENTIAL::<URL> للتخزين المحمي بنظام SAS
OPENROWSET(BULK) مع مصدر بيانات بدون بيانات معتمدة ADMINISTER BULK OPERATIONS أو ADMINISTER DATABASE BULK OPERATIONS،
OPENROWSET(BULK) مع مصدر بيانات مع بيانات الاعتماد REFERENCES DATABASE SCOPED CREDENTIAL وواحد من ADMINISTER BULK OPERATIONS أو ADMINISTER DATABASE BULK OPERATIONS
إنشاء مصدر بيانات خارجي ALTER ANY EXTERNAL DATA SOURCE وREFERENCES DATABASE SCOPED CREDENTIAL
إنشاء جدول خارجي CREATE TABLEو ALTER ANY SCHEMAALTER ANY EXTERNAL FILE FORMATوALTER ANY EXTERNAL DATA SOURCE
اختر من الجدول الخارجي SELECT TABLE وREFERENCES DATABASE SCOPED CREDENTIAL
CETAS لإنشاء الجدول - CREATE TABLE، ALTER ANY SCHEMA، ALTER ANY DATA SOURCE، و ALTER ANY EXTERNAL FILE FORMAT. لقراءة البيانات: ADMINISTER BULK OPERATIONS أو REFERENCES CREDENTIALSELECT TABLE لكل جدول/عرض/وظيفة في الاستعلام + إذن R/W على التخزين

الخطوات التالية

أنت الآن مستعد للاستمرار مع المقالات التالية حول كيفية الكتابة: