Dela via


SKAPA EXTERN STRÖM (Transact-SQL)

Viktigt!

Azure SQL Edge dras tillbaka den 30 september 2025. Mer information och migreringsalternativ finns i meddelandet Om pensionering.

Kommentar

Azure SQL Edge stöder inte längre ARM64-plattformen.

EXTERNAL STREAM-objektet har ett dubbelt syfte med både indata- och utdataströmmen. Den kan användas som indata för att fråga strömmande data från händelseinmatningstjänster, till exempel Azure Event Hubs, Azure IoT Hub (eller Edge Hub) eller Kafka, eller så kan den användas som utdata för att ange var och hur resultatet ska lagras från en direktuppspelningsfråga.

En EXTERN STRÖM kan också anges och skapas som både utdata och indata för tjänster som Event Hubs eller Blob Storage. Detta underlättar länkningsscenarier där en strömmande fråga bevarar resultat till den externa strömmen som utdata och en annan strömmande fråga som läser från samma externa ström som indata.

Azure SQL Edge stöder för närvarande endast följande datakällor som indata och utdata för dataströmmar.

Typ av datakälla Indata Utdata beskrivning
Azure IoT Edge-hubb Y Y Datakälla för att läsa och skriva strömmande data till en Azure IoT Edge-hubb. Mer information finns i IoT Edge Hub.
SQL Database N Y Datakällans anslutning för att skriva strömmande data till SQL Database. Databasen kan vara en lokal databas i Azure SQL Edge eller en fjärrdatabas i SQL Server eller Azure SQL Database.
Kafka Y N Datakälla för att läsa strömmande data från ett Kafka-ämne.

Syntax

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

Argument

DATA_SOURCE

Mer information finns i DATA_SOURCE.

FILE_FORMAT

Mer information finns i FILE_FORMAT.

PLATS

Anger namnet på faktiska data eller platsen i datakällan.

  • För Edge Hub- eller Kafka-strömobjekt anger platsen namnet på Edge Hub- eller Kafka-ämnet att läsa från eller skriva till.
  • För SQL Stream-objekt (SQL Server, Azure SQL Database eller Azure SQL Edge) anger platsen namnet på tabellen. Om strömmen skapas i samma databas och schema som måltabellen räcker det med tabellnamnet. Annars måste du helt kvalificera tabellnamnet (<database_name>.<schema_name>.<table_name>).
  • För Azure Blob Storage refererar dataströmobjektplatsen till sökvägsmönstret som ska användas i blobcontainern. Mer information finns i Utdata från Azure Stream Analytics.

INPUT_OPTIONS

Ange alternativ som nyckel/värde-par för tjänster som Kafka och IoT Edge Hubs, som är indata till strömmande frågor.

  • PARTITIONER:

    Antal partitioner som definierats för ett ämne. Det maximala antalet partitioner som kan användas är begränsat till 32 (gäller för Kafka-indataströmmar).

    • CONSUMER_GROUP:

      Händelse- och IoT Hubs begränsar antalet läsare inom en konsumentgrupp (till 5). Om du lämnar det här fältet tomt använder du konsumentgruppen "$Default".

      • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.
    • TIME_POLICY:

      Beskriver om du vill släppa händelser eller justera händelsetiden när sena händelser eller out-of-order-händelser passerar deras toleransvärde.

      • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.
    • LATE_EVENT_TOLERANCE:

      Den maximala godkända tidsfördröjningen. Fördröjningen representerar skillnaden mellan händelsens tidsstämpel och systemklockan.

      • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.
    • OUT_OF_ORDER_EVENT_TOLERANCE:

      Händelser kan komma i fel ordning när de har gjort resan från indata till strömningsfrågan. Dessa händelser kan accepteras som de är, eller så kan du välja att pausa för en viss period för att ordna om dem.

      • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.

OUTPUT_OPTIONS

Ange alternativ som nyckel/värde-par för tjänster som stöds och som är utdata till strömmande frågor

  • REJECT_POLICY: DROP | IGEN

    Arten datafelhanteringsprinciper när datakonverteringsfel inträffar.

    • Gäller för alla utdata som stöds.
  • MINIMUM_ROWS:

    Minsta antal rader som krävs per batch som skrivits till utdata. För Parquet skapar varje batch en ny fil.

    • Gäller för alla utdata som stöds.
  • MAXIMUM_TIME:

    Maximal väntetid i minuter per batch. Efter den här tiden skrivs batchen till utdata även om minimikravet för rader inte uppfylls.

    • Gäller för alla utdata som stöds.
  • PARTITION_KEY_COLUMN:

    Kolumnen som används för partitionsnyckeln.

    • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.
  • PROPERTY_COLUMNS:

    En kommaavgränsad lista över namnen på utdatakolumner som är kopplade till meddelanden som anpassade egenskaper, om det tillhandahålls.

    • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.
  • SYSTEM_PROPERTY_COLUMNS:

    En JSON-formaterad samling med namn/värdepar med systemegenskapsnamn och utdatakolumner som ska fyllas i i Service Bus-meddelanden. Exempel: { "MessageId": "column1", "PartitionKey": "column2" }

    • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.
  • PARTITION_KEY:

    Namnet på utdatakolumnen som innehåller partitionsnyckeln. Partitionsnyckeln är en unik identifierare för partitionen i en viss tabell som utgör den första delen av en entitets primärnyckel. Det är ett strängvärde som kan vara upp till 1 KB stort.

    • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.
  • ROW_KEY:

    Namnet på utdatakolumnen som innehåller radnyckeln. Radnyckeln är en unik identifierare för en entitet inom en viss partition. Den utgör den andra delen av en entitets primärnyckel. Radnyckeln är ett strängvärde som kan vara upp till 1 KB stort.

    • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.
  • BATCH_SIZE:

    Detta representerar antalet transaktioner för tabelllagring där det maximala antalet kan gå upp till 100 poster. För Azure Functions representerar detta batchstorleken i byte som skickas till funktionen per anrop – standardvärdet är 256 kB.

    • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.
  • MAXIMUM_BATCH_COUNT:

    Maximalt antal händelser som skickas till funktionen per anrop för Azure-funktionen – standardvärdet är 100. För SQL Database representerar detta det maximala antalet poster som skickas med varje massinfogningstransaktion – standardvärdet är 10 000.

    • Gäller för alla SQL-baserade utdata
  • STAGING_AREA: EXTERNT DATAKÄLLA-objekt till Blob Storage

    Mellanlagringsområdet för datainmatning med högt dataflöde till Azure Synapse Analytics

    • Reserverad för framtida användning. Gäller inte för Azure SQL Edge.

Mer information om indata- och utdataalternativ som stöds som motsvarar datakälltypen finns i Översikt över Azure Stream Analytics – Indataöversikt respektive Azure Stream Analytics – Utdataöversikt .

Exempel

Exempel A: EdgeHub

Typ: Indata eller utdata.

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

Exempel B: Azure SQL Database, Azure SQL Edge, SQL Server

Typ: Utdata

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

Exempel C: Kafka

Typ: Indata

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