Lekérdezés különböző sémájú felhőalapú adatbázisokban (előzetes verzió)

A KÖVETKEZŐKRE VONATKOZIK: Azure SQL Database

Lekérdezés különböző adatbázisok táblái között

A függőlegesen particionált adatbázisok különböző táblakészleteket használnak a különböző adatbázisokon. Ez azt jelenti, hogy a séma eltérő a különböző adatbázisokban. Például a leltár összes táblája egy adatbázison, míg a nyilvántartással kapcsolatos összes tábla egy második adatbázison található.

Előfeltételek

  • A felhasználónak ALTER ANY EXTERNAL DATA SOURCE engedéllyel kell rendelkeznie. Ezt az engedélyt az ALTER DATABASE engedély tartalmazza.
  • AZ ALTER ANY EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁSOK MEGVÁLTOZTATÁSA) engedélyre van szükség a mögöttes adatforrásra való hivatkozáshoz.

Áttekintés

Megjegyzés

A horizontális particionálástól eltérően ezek a DDL-utasítások nem függnek egy adatréteg szegmenstérképpel való definiálásától a rugalmas adatbázis ügyféloldali kódtárán keresztül.

  1. FŐKULCS LÉTREHOZÁSA
  2. CREATE DATABASE SCOPED CREDENTIAL
  3. CREATE EXTERNAL DATA SOURCE
  4. CREATE EXTERNAL TABLE

Adatbázishoz hatókörrel tartozó főkulcs és hitelesítő adatok létrehozása

A hitelesítő adatokat a rugalmas lekérdezés használja a távoli adatbázisokhoz való csatlakozáshoz.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'master_key_password';
CREATE DATABASE SCOPED CREDENTIAL [<credential_name>]  WITH IDENTITY = '<username>',  
SECRET = '<password>';

Megjegyzés

Győződjön meg <username> arról, hogy a nem tartalmaz @ "kiszolgálónév" utótagot.

Külső adatforrások létrehozása

Szintaxis:

<External_Data_Source> ::=
CREATE EXTERNAL DATA SOURCE <data_source_name> WITH
    (TYPE = RDBMS,
    LOCATION = ’<fully_qualified_server_name>’,
    DATABASE_NAME = ‘<remote_database_name>’,  
    CREDENTIAL = <credential_name>
    ) [;]

Fontos

A TYPE paramétert RDBMS-re kell állítani.

Példa

Az alábbi példa a CREATE utasítás külső adatforrások esetén való használatát mutatja be.

CREATE EXTERNAL DATA SOURCE RemoteReferenceData
   WITH
      (
         TYPE=RDBMS,
         LOCATION='myserver.database.windows.net',
         DATABASE_NAME='ReferenceData',
         CREDENTIAL= SqlUser
      );

Az aktuális külső adatforrások listájának lekérése:

select * from sys.external_data_sources;

Külső táblák

Szintaxis:

CREATE EXTERNAL TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name  
    ( { <column_definition> } [ ,...n ])
    { WITH ( <rdbms_external_table_options> ) }
    )[;]

<rdbms_external_table_options> ::=
    DATA_SOURCE = <External_Data_Source>,
    [ SCHEMA_NAME = N'nonescaped_schema_name',]
    [ OBJECT_NAME = N'nonescaped_object_name',]

Példa

CREATE EXTERNAL TABLE [dbo].[customer]
   (
      [c_id] int NOT NULL,
      [c_firstname] nvarchar(256) NULL,
      [c_lastname] nvarchar(256) NOT NULL,
      [street] nvarchar(256) NOT NULL,
      [city] nvarchar(256) NOT NULL,
      [state] nvarchar(20) NULL,
      DATA_SOURCE = RemoteReferenceData
   );

Az alábbi példa bemutatja, hogyan lehet lekérni a külső táblák listáját az aktuális adatbázisból:

select * from sys.external_tables;

Megjegyzések

A rugalmas lekérdezés kibővíti a meglévő külső táblaszintaxist, és RDBMS típusú külső adatforrásokat használ külső táblák definiálása érdekében. A vertikális particionálás külső tábladefiníciója a következő szempontokat fedi le:

  • Séma: A külső tábla DDL-e egy olyan sémát határoz meg, amely a lekérdezések számára használható. A külső tábla definíciójában megadott sémának meg kell egyeznie a tényleges adatokat tároló távoli adatbázis táblái sémájának.
  • Távoli adatbázis-referencia: A külső DDL-tábla egy külső adatforrásra hivatkozik. A külső adatforrás megadja annak a távoli adatbázisnak a kiszolgálónevét és adatbázisnevét, ahol a tényleges táblaadatok vannak tárolva.

Az előző szakaszban ismertetett külső adatforrások használatával a külső táblák létrehozására vonatkozó szintaxis a következő:

A DATA_SOURCE záradék határozza meg a külső táblához használt külső adatforrást (azaz a távoli adatbázist vertikális particionálásban).

A SCHEMA_NAME és OBJECT_NAME záradékok lehetővé teszik a külső tábla definíciójának leképezését egy másik sémában található táblára a távoli adatbázisban, vagy egy másik nevű táblára. Ez a leképezés akkor hasznos, ha külső táblát szeretne definiálni katalógusnézethez vagy DMV-hez a távoli adatbázison – vagy bármely más olyan helyzet esetén, ahol a távoli tábla neve már helyben készült.

A következő DDL-utasítás eldob egy meglévő külső tábladefiníciót a helyi katalógusból. Ez nincs hatással a távoli adatbázisra.

DROP EXTERNAL TABLE [ [ schema_name ] . | schema_name. ] table_name[;]  

Create/DROP EXTERNAL TABLE engedélyei: ALTER ANY EXTERNAL DATA SOURCE permissions van szükség a külső tábla DDL-hez, amelyre az alapul szolgáló adatforrásra való hivatkozáshoz is szükség van.

Biztonsági szempontok

A külső táblához hozzáférő felhasználók automatikusan hozzáférést kapnak a mögöttes távoli táblákhoz a külső adatforrás definíciójában megadott hitelesítő adatokkal. Gondosan kezelje a külső táblához való hozzáférést, hogy elkerülje a jogosultságok nem szükséges kiterjesztését a külső adatforrás hitelesítő adataival. A SQL engedélyek a külső táblához való hozzáférés megadására vagy visszavonására is használhatók, úgy, mintha az egy normál tábla lenne.

Példa: függőlegesen particionált adatbázisok lekérdezése

A következő lekérdezés három módon illeszti össze a megrendeléseket és a rendeléssorokat a két helyi tábla, valamint az ügyfelek távoli táblája között. Ez egy példa a rugalmas lekérdezés referenciaadat-használatára:

    SELECT
     c_id as customer,
     c_lastname as customer_name,
     count(*) as cnt_orderline,
     max(ol_quantity) as max_quantity,
     avg(ol_amount) as avg_amount,
     min(ol_delivery_d) as min_deliv_date
    FROM customer
    JOIN orders
    ON c_id = o_c_id
    JOIN  order_line
    ON o_id = ol_o_id and o_c_id = ol_c_id
    WHERE c_id = 100

Tárolt eljárás távoli T-SQL végrehajtáshoz: sp _ execute_remote

A rugalmas lekérdezés egy tárolt eljárást is bevezet, amely közvetlen hozzáférést biztosít a távoli adatbázishoz. A tárolt eljárás neve sp _ execute _ remote, és távoli tárolt eljárások vagy T-SQL végrehajtására használható a távoli adatbázison. A következő paramétereket veszi igénybe:

  • Adatforrás neve (nvarchar): Az RDBMS típusú külső adatforrás neve.
  • Lekérdezés (nvarchar): A SQL adatbázison végrehajtandó T-SQL lekérdezés.
  • Paraméterdeklaráció (nvarchar) – nem kötelező: A Lekérdezés paraméterben használt paraméterek adattípus-definícióit (például az sp_executesql).
  • Paraméterértékek listája – nem kötelező: paraméterértékek vesszővel elválasztott listája (például sp_executesql).

A távoli sp végrehajtása a meghívási paraméterekben megadott külső adatforrást használja a megadott T-SQL utasítás végrehajtására _ a távoli _ adatbázison. A külső adatforrás hitelesítő adatait használja a távoli adatbázishoz való csatlakozáshoz.

Példa:

    EXEC sp_execute_remote
        N'MyExtSrc',
        N'select count(w_id) as foo from warehouse'

Eszközök csatlakoztatása

A szokásos kapcsolati sztringek SQL Server a BI- és adatintegrációs eszközöket olyan adatbázisokhoz csatlakoztathatja a kiszolgálón, amelyeken engedélyezve van a rugalmas lekérdezés és a külső táblák definiálva. Győződjön meg SQL Server, hogy az eszköz támogatott adatforrásként. Ezután tekintse meg a rugalmas lekérdezési adatbázist és annak külső tábláját, mint bármely SQL Server, amelyekhez az eszközzel csatlakozna.

Ajánlott eljárások

  • Győződjön meg arról, hogy a rugalmas lekérdezési végpont adatbázisa hozzáférést kapott a távoli adatbázishoz úgy, hogy engedélyezi az Azure-szolgáltatások hozzáférését a Azure SQL Database konfigurációjában. Győződjön meg arról is, hogy a külső adatforrás definíciójában megadott hitelesítő adatok sikeresen be tudnak jelentkezni a távoli adatbázisba, és rendelkezniük kell a távoli táblához való hozzáféréshez szükséges engedélyekkel.
  • A rugalmas lekérdezés olyan lekérdezések esetén működik a legjobban, ahol a számítás nagy része a távoli adatbázisokon használhatja. Általában a legjobb lekérdezési teljesítményt használhatja szelektív szűrő-predikátumokkal, amelyek kiértékelhetők a távoli adatbázisokon vagy olyan illesztésekkel, amelyek teljes mértékben a távoli adatbázison végezhetők el. Előfordulhat, hogy más lekérdezési mintáknak nagy mennyiségű adatot kell betöltenie a távoli adatbázisból, és rosszul teljesíthetnek.

Következő lépések