إنشاء دفق خارجي (Transact-SQL)

هام

سيتم إيقاف Azure SQL Edge في 30 سبتمبر 2025. لمزيد من المعلومات وخيارات الترحيل، راجع إشعار الإيقاف.

إشعار

لم يعد Azure SQL Edge يدعم النظام الأساسي ARM64.

يحتوي كائن EXTERNAL STREAM على غرض مزدوج لكل من دفق الإدخال والإخراج. يمكن استخدامه كمدخل للاستعلام عن البيانات المتدفقة من خدمات استيعاب الأحداث مثل Azure Event Hubs أو Azure IoT Hub (أو Edge Hub) أو Kafka أو يمكن استخدامه كإخراج لتحديد مكان وكيفية تخزين النتائج من استعلام دفق.

يمكن أيضا تحديد الدفق الخارجي وإنشاءه كإخراج وإدخال لخدمات مثل مراكز الأحداث أو تخزين Blob. وهذا يسهل سيناريوهات التسلسل حيث يستمر استعلام الدفق في النتائج إلى الدفق الخارجي كإخراج واستعلام دفق آخر يقرأ من نفس الدفق الخارجي مثل الإدخال.

يدعم Azure SQL Edge حاليا مصادر البيانات التالية فقط كإدخالات ومخرجات دفق.

نوع مصدر البيانات الإدخال الإخراج ‏‏الوصف
مركز Azure IoT Edge نعم نعم مصدر بيانات لقراءة وكتابة البيانات المتدفقة إلى مركز Azure IoT Edge. لمزيد من المعلومات، راجع IoT Edge Hub.
قاعدة بيانات SQL N Y اتصال مصدر البيانات لكتابة البيانات المتدفقة إلى قاعدة بيانات SQL. يمكن أن تكون قاعدة البيانات قاعدة بيانات محلية في Azure SQL Edge، أو قاعدة بيانات بعيدة في SQL Server أو قاعدة بيانات Azure SQL.
Kafka Y N مصدر بيانات لقراءة البيانات المتدفقة من موضوع Kafka.

بناء الجملة

CREATE EXTERNAL STREAM { external_stream_name }
( <column_definition> [ , <column_definition> ] * ) -- Used for Inputs - optional
WITH  ( <with_options> )

<column_definition> ::=
  column_name <column_data_type>

<data_type> ::=
[ type_schema_name . ] type_name
    [ ( precision [ , scale ] | max ) ]

<with_options> ::=
  DATA_SOURCE = data_source_name ,
  LOCATION = location_name ,
  [ FILE_FORMAT = external_file_format_name ] , --Used for Inputs - optional
  [ <optional_input_options> ] ,
  [ <optional_output_options> ] ,
  TAGS = <tag_column_value>

<optional_input_options> ::=
  INPUT_OPTIONS = ' [ <input_options_data> ] '

<Input_option_data> ::=
      <input_option_values> [ , <input_option_values> ]

<input_option_values> ::=
  PARTITIONS: [ number_of_partitions ]
  | CONSUMER_GROUP: [ consumer_group_name ]
  | TIME_POLICY: [ time_policy ]
  | LATE_EVENT_TOLERANCE: [ late_event_tolerance_value ]
  | OUT_OF_ORDER_EVENT_TOLERANCE: [ out_of_order_tolerance_value ]

<optional_output_options> ::=
  OUTPUT_OPTIONS = ' [ <output_option_data> ] '

<output_option_data> ::=
      <output_option_values> [ , <output_option_values> ]

<output_option_values> ::=
   REJECT_POLICY: [ reject_policy ]
   | MINIMUM_ROWS: [ row_value ]
   | MAXIMUM_TIME: [ time_value_minutes ]
   | PARTITION_KEY_COLUMN: [ partition_key_column_name ]
   | PROPERTY_COLUMNS: [ ( [ output_col_name ] ) ]
   | SYSTEM_PROPERTY_COLUMNS: [ ( [ output_col_name ] ) ]
   | PARTITION_KEY: [ partition_key_name ]
   | ROW_KEY: [ row_key_name ]
   | BATCH_SIZE: [ batch_size_value ]
   | MAXIMUM_BATCH_COUNT: [ batch_value ]
   | STAGING_AREA: [ blob_data_source ]

<tag_column_value> ::= -- Reserved for Future Usage
);

الوسيطات

مصدر_البيانات

لمزيد من المعلومات، راجع DATA_SOURCE.

FILE_FORMAT

لمزيد من المعلومات، راجع FILE_FORMAT.

الموقع

تحديد اسم البيانات أو الموقع الفعلي في مصدر البيانات.

  • بالنسبة لعناصر دفق Edge Hub أو Kafka، يحدد الموقع اسم موضوع Edge Hub أو Kafka للقراءة منه أو الكتابة إليه.
  • بالنسبة لعناصر دفق SQL (SQL Server أو قاعدة بيانات Azure SQL أو Azure SQL Edge)، يحدد الموقع اسم الجدول. إذا تم إنشاء الدفق في نفس قاعدة البيانات والمخطط كجدول الوجهة، يكفي اسم الجدول فقط. وإلا تحتاج إلى تأهيل اسم الجدول بالكامل (<database_name>.<schema_name>.<table_name>).
  • بالنسبة إلى موقع كائن دفق تخزين Azure Blob، يشير إلى نمط المسار لاستخدامه داخل حاوية الكائن الثنائي كبير الحجم. لمزيد من المعلومات، راجع المخرجات من Azure Stream Analytics.

INPUT_OPTIONS

حدد الخيارات كأزواج قيم المفاتيح لخدمات مثل Kafka وIoT Edge Hubs، وهي مدخلات لتدفق الاستعلامات.

  • اقسام:

    عدد الأقسام المعرفة لموضوع ما. يقتصر الحد الأقصى لعدد الأقسام التي يمكن استخدامها على 32 (ينطبق على تدفقات إدخال Kafka).

    • CONSUMER_GROUP:

      يحد Event وIoT Hubs من عدد القراء داخل مجموعة مستهلكين واحدة (إلى 5). سيؤدي ترك هذا الحقل فارغا إلى استخدام مجموعة المستهلكين "$Default".

      • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.
    • TIME_POLICY:

      توضح هذه المقالة ما إذا كنت تريد إسقاط الأحداث أو ضبط وقت الحدث عندما تمر الأحداث المتأخرة أو الأحداث خارج الترتيب بقيمة التسامح الخاصة بها.

      • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.
    • LATE_EVENT_TOLERANCE:

      الحد الأقصى للتأخير الزمني المقبول. يمثل التأخير الفرق بين الطابع الزمني للحدث وساعة النظام.

      • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.
    • OUT_OF_ORDER_EVENT_TOLERANCE:

      يمكن أن تصل الأحداث خارج الترتيب بعد القيام بالرحلة من الإدخال إلى استعلام الدفق. يمكن قبول هذه الأحداث كما هي، أو يمكنك اختيار إيقاف مؤقت لفترة معينة لإعادة ترتيبها.

      • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.

OUTPUT_OPTIONS

تحديد الخيارات كأزواج قيم المفاتيح للخدمات المدعومة التي هي مخرجات لاستعلامات الدفق

  • REJECT_POLICY: DROP | اعاده المحاوله

    الأنواع نهج معالجة أخطاء البيانات عند حدوث أخطاء تحويل البيانات.

    • ينطبق على جميع المخرجات المدعومة.
  • MINIMUM_ROWS:

    الحد الأدنى للصفوف المطلوبة لكل دفعة مكتوبة إلى إخراج. بالنسبة إلى Parquet، ستنشئ كل دفعة ملفاً جديداً.

    • ينطبق على جميع المخرجات المدعومة.
  • MAXIMUM_TIME:

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

    • ينطبق على جميع المخرجات المدعومة.
  • PARTITION_KEY_COLUMN:

    العمود المستخدم لمفتاح القسم.

    • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.
  • PROPERTY_COLUMNS:

    قائمة مفصولة بفواصل بأسماء أعمدة الإخراج المرفقة بالرسائل كخصائص مخصصة، إذا تم توفيرها.

    • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.
  • SYSTEM_PROPERTY_COLUMNS:

    مجموعة بتنسيق JSON من أزواج الاسم/القيمة لأسماء خصائص النظام وأعمدة الإخراج التي سيتم ملؤها في رسائل ناقل خدمة Microsoft Azure. على سبيل المثال، { "MessageId": "column1", "PartitionKey": "column2" }

    • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.
  • PARTITION_KEY:

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

    • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.
  • ROW_KEY:

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

    • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.
  • BATCH_SIZE:

    يمثل هذا عدد المعاملات لتخزين الجدول حيث يمكن أن يصل الحد الأقصى إلى 100 سجل. بالنسبة إلى Azure Functions، يمثل هذا حجم الدفعة بالبايت المرسل إلى الدالة لكل استدعاء - الافتراضي هو 256 كيلوبايت.

    • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.
  • MAXIMUM_BATCH_COUNT:

    الحد الأقصى لعدد الأحداث المرسلة إلى الدالة لكل استدعاء لدالة Azure - الافتراضي هو 100. بالنسبة لقاعدة بيانات SQL، يمثل هذا الحد الأقصى لعدد السجلات المرسلة مع كل عملية إدراج مجمع - الافتراضي هو 10000.

    • ينطبق على جميع المخرجات المستندة إلى SQL
  • STAGING_AREA: كائن مصدر البيانات الخارجية إلى Blob Storage

    منطقة التقسيم المرحلي لاستيعاب البيانات عالية الإنتاجية في Azure Synapse Analytics

    • محجوز للاستخدام في المستقبل. لا ينطبق على Azure SQL Edge.

لمزيد من المعلومات حول خيارات الإدخال والإخراج المدعومة المقابلة لنوع مصدر البيانات، راجع Azure Stream Analytics - نظرة عامة على الإدخال وAzure Stream Analytics - نظرة عامة على المخرجات على التوالي.

الأمثلة

مثال أ: EdgeHub

النوع: الإدخال أو الإخراج.

CREATE EXTERNAL DATA SOURCE MyEdgeHub
    WITH (LOCATION = 'edgehub://');

CREATE EXTERNAL FILE FORMAT myFileFormat
    WITH (FORMAT_TYPE = JSON);

CREATE EXTERNAL STREAM Stream_A
    WITH (
            DATA_SOURCE = MyEdgeHub,
            FILE_FORMAT = myFileFormat,
            LOCATION = '<mytopicname>',
            OUTPUT_OPTIONS = 'REJECT_TYPE: Drop'
            );

مثال ب: قاعدة بيانات Azure SQL وAzure SQL Edge وSQL Server

النوع: الإخراج

CREATE DATABASE SCOPED CREDENTIAL SQLCredName
    WITH IDENTITY = '<user>',
        SECRET = '<password>';

-- Azure SQL Database
CREATE EXTERNAL DATA SOURCE MyTargetSQLTabl
    WITH (
            LOCATION = '<my_server_name>.database.windows.net',
            CREDENTIAL = SQLCredName
            );

--SQL Server or Azure SQL Edge
CREATE EXTERNAL DATA SOURCE MyTargetSQLTabl
    WITH (
            LOCATION = ' <sqlserver://<ipaddress>,<port>',
            CREDENTIAL = SQLCredName
            );

CREATE EXTERNAL STREAM Stream_A
    WITH (
            DATA_SOURCE = MyTargetSQLTable,
            LOCATION = '<DatabaseName>.<SchemaName>.<TableName>',
            --Note: If table is contained in the database, <TableName> should be sufficient
            OUTPUT_OPTIONS = 'REJECT_TYPE: Drop'
            );

مثال C: Kafka

النوع: الإدخال

CREATE EXTERNAL DATA SOURCE MyKafka_tweets
    WITH (
            --The location maps to KafkaBootstrapServer
            LOCATION = 'kafka://<kafkaserver>:<ipaddress>',
            CREDENTIAL = kafkaCredName
            );

CREATE EXTERNAL FILE FORMAT myFileFormat
    WITH (
            FORMAT_TYPE = JSON,
            DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec'
            );

CREATE EXTERNAL STREAM Stream_A (
    user_id VARCHAR,
    tweet VARCHAR
    )
    WITH (
            DATA_SOURCE = MyKafka_tweets,
            LOCATION = '<KafkaTopicName>',
            FILE_FORMAT = myFileFormat,
            INPUT_OPTIONS = 'PARTITIONS: 5'
            );