Megosztás a következőn keresztül:


KÜLSŐ STREAM LÉTREHOZÁSA (Transact-SQL)

Fontos

Az Azure SQL Edge 2025. szeptember 30-tól megszűnik. További információkért és a migrálási lehetőségekért tekintse meg a kivonásról szóló közleményt.

Megjegyzés:

Az Azure SQL Edge már nem támogatja az ARM64 platformot.

A KÜLSŐ STREAM objektumnak kettős célja van mind a bemeneti, mind a kimeneti streamnek. Bemenetként használható az olyan eseménybetöltési szolgáltatások streamelési adatainak lekérdezéséhez, mint az Azure Event Hubs, az Azure IoT Hub (vagy az Edge Hub) vagy a Kafka, vagy kimenetként is használható a streamelési lekérdezések eredményeinek tárolására és tárolására.

Külső STREAM is megadható és létrehozható kimenetként és bemenetként olyan szolgáltatásokhoz, mint az Event Hubs vagy a Blob Storage. Ez megkönnyíti az olyan láncolási forgatókönyveket, amikor egy streamlekérdezés kimenetként megőrzi az eredményeket a külső streamben, és egy másik streamlekérdezés ugyanazon a külső streamből olvas be, mint a bemenet.

Az Azure SQL Edge jelenleg csak a következő adatforrásokat támogatja streambemenetként és kimenetként.

Adatforrás típusa Bemenet Kimenet Description
Azure IoT Edge Hub Y Y Adatforrás streamelési adatok olvasásához és írásához egy Azure IoT Edge-központba. További információ: IoT Edge Hub.
SQL adatbázis N Y Adatforrás-kapcsolat streamelési adatok SQL Database-be való írásához. Az adatbázis lehet egy helyi adatbázis az Azure SQL Edge-ben, vagy egy távoli adatbázis az SQL Serveren vagy az Azure SQL Database-ben.
Kafka Y N Adatforrás a streamelési adatok Kafka-témakörből való olvasásához.

Szemantika

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

Arguments

ADAT_FORRÁS

További információ: DATA_SOURCE.

FÁJL_FORMÁTUM

További információ: FILE_FORMAT.

HELYSZÍN

Megadja az adatforrás tényleges adatainak vagy helyének nevét.

  • Edge Hub- vagy Kafka-streamobjektumok esetén a hely adja meg annak az Edge Hubnak vagy Kafka-témakörnek a nevét, amelyből olvasni vagy írni szeretne.
  • SQL Stream-objektumok (SQL Server, Azure SQL Database vagy Azure SQL Edge) esetén a hely határozza meg a tábla nevét. Ha a stream ugyanabban az adatbázisban és sémában jön létre, mint a céltábla, akkor elegendő csak a Tábla neve. Ellenkező esetben teljes mértékben meg kell jelölnie a tábla nevét (<database_name>.<schema_name>.<table_name>).
  • Az Azure Blob Storage streamobjektum-helye a blobtárolón belül használandó elérésiút-mintát jelenti. További információ: Az Azure Stream Analytics kimenetei.

INPUT_OPTIONS

Adja meg a beállításokat kulcs-érték párként olyan szolgáltatásokhoz, mint a Kafka és az IoT Edge Hubs, amelyek a streamelési lekérdezések bemenetei.

  • PARTÍCIÓK:

    A témakörhöz definiált partíciók száma. A használható partíciók maximális száma legfeljebb 32 lehet (a Kafka bemeneti streamekre vonatkozik).

    • CONSUMER_GROUP:

      Az Event és az IoT Hubs egy fogyasztói csoportban (5-re) korlátozza az olvasók számát. Ha üresen hagyja ezt a mezőt, a "$Default" fogyasztói csoportot fogja használni.

      • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.
    • TIME_POLICY:

      Azt ismerteti, hogy az események elvetése vagy az esemény időének módosítása, amikor a késői események vagy a rendelésen kívüli események átadják a tűrésértéküket.

      • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.
    • LATE_EVENT_TOLERANCE:

      A maximális elfogadható időkésés. A késés az esemény időbélyege és a rendszer órajele közötti különbséget jelöli.

      • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.
    • OUT_OF_ORDER_EVENT_TOLERANCE:

      Az események sorrendből érkezhetnek, miután végrehajtották az utazást a bemeneti adatokból a streamelési lekérdezésbe. Ezeket az eseményeket elfogadhatja az adott időpontban, vagy dönthet úgy, hogy szünetelteti egy adott időszakra az átrendezésükhöz.

      • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.

OUTPUT_OPTIONS

Adja meg a beállításokat kulcs-érték párként a támogatott szolgáltatásokhoz, amelyek streamelési lekérdezések kimenetei

  • REJECT_POLICY: DROP | ÚJRA

    Adatkonvertálási hibák esetén az adathiba-kezelési szabályzatok fajosítása.

    • Az összes támogatott kimenetre vonatkozik.
  • MINIMUM_ROWS:

    A kimenetbe írt kötegenként szükséges minimális sorok. A Parquet esetében minden köteg létrehoz egy új fájlt.

    • Az összes támogatott kimenetre vonatkozik.
  • MAXIMUM_TIME:

    Maximális várakozási idő percekben kötegenként. Ezután a köteg akkor is a kimenetbe lesz beírva, ha a minimális sorkövetelmények nem teljesülnek.

    • Az összes támogatott kimenetre vonatkozik.
  • PARTITION_KEY_COLUMN:

    A partíciókulcshoz használt oszlop.

    • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.
  • PROPERTY_COLUMNS:

    Vesszővel tagolt lista az üzenetekhez egyéni tulajdonságokként csatolt kimeneti oszlopok nevének vesszővel tagolt listájáról, ha vannak ilyenek.

    • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.
  • SYSTEM_PROPERTY_COLUMNS:

    A Service Bus-üzenetekben feltöltendő rendszertulajdonság-nevek és kimeneti oszlopok név-érték párjainak JSON-formátumú gyűjteménye. Például: { "MessageId": "column1", "PartitionKey": "column2" }.

    • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.
  • PARTITION_KEY:

    A partíciókulcsot tartalmazó kimeneti oszlop neve. A partíciókulcs egy adott táblán belüli partíció egyedi azonosítója, amely egy entitás elsődleges kulcsának első részét képezi. Ez egy legfeljebb 1 KB méretű sztringérték.

    • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.
  • ROW_KEY:

    A sorkulcsot tartalmazó kimeneti oszlop neve. A sorkulcs egy adott partíción belüli entitás egyedi azonosítója. Ez egy entitás elsődleges kulcsának második részét képezi. A sorkulcs egy legfeljebb 1 KB méretű sztringérték.

    • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.
  • BATCH_SIZE:

    Ez a táblatároló tranzakcióinak számát jelöli, ahol a maximális érték akár 100 rekord is lehet. Az Azure Functions esetében ez a függvénynek küldött bájtokban lévő kötegméretet jelöli hívásonként – az alapértelmezett érték 256 kB.

    • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.
  • MAXIMUM_BATCH_COUNT:

    A függvénynek küldött események maximális száma hívásonként az Azure-függvény esetében – alapértelmezés szerint 100. Az SQL Database esetében ez az összes tömeges beszúrási tranzakcióval küldött rekordok maximális számát jelenti – az alapértelmezett érték 10 000.

    • Minden SQL-alapú kimenetre vonatkozik
  • STAGING_AREA: KÜLSŐ ADATFORRÁS-objektum a Blob Storage-hoz

    A nagy átviteli sebességű adatbetöltés átmeneti területe az Azure Synapse Analyticsbe

    • Jövőbeli használatra fenntartva. Nem vonatkozik az Azure SQL Edge-re.

Az adatforrás típusának megfelelő támogatott bemeneti és kimeneti lehetőségekről további információt az Azure Stream Analytics – Bemenetek áttekintése és az Azure Stream Analytics – Kimenetek áttekintése című témakörben talál.

Példák

A példa: EdgeHub

Típus: Bemenet vagy kimenet.

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

B példa: Azure SQL Database, Azure SQL Edge, SQL Server

Típus: Kimenet

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 példa: Kafka

Típus: Bemenet

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