Lekérdezés különböző sémákkal rendelkező felhőadatbázisok között (előzetes verzió)

A következőre vonatkozik: Azure SQL Database

Query across tables in different databases

A függőlegesen particionált adatbázisok különböző táblákat használnak 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ázisban található, míg a könyveléssel kapcsolatos táblák egy második adatbázisban találhatók.

Előfeltételek

  • A felhasználónak bármilyen külső adatforrás engedélyével kell rendelkeznie. Ez az engedély az ALTER DATABASE engedély részét képezi.
  • A mögöttes adatforrásra való hivatkozáshoz BÁRMILYEN KÜLSŐ ADATFORRÁS-engedély módosítása szükséges.

Áttekintés

Megjegyzés:

A horizontális particionálástól eltérően ezek a DDL-utasítások nem függnek attól, hogy a rugalmas adatbázis-ügyfélkódtáron keresztül szegmenstérképet tartalmazó adatréteget definiálnak.

  1. MESTERKULCS LÉTREHOZÁSA
  2. CREATE DATABASE SCOPED CREDENTIAL
  3. CREATE EXTERNAL DATA SOURCE
  4. KÜLSŐ TÁBLA LÉTREHOZÁSA

Adatbázis hatókörű 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 arról, hogy nem <username> tartalmaz "@servername" 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 értékre kell állítani.

Példa

Az alábbi példa a CREATE utasítás külső adatforrásokhoz 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
   )
   WITH
   (
      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 az RDBMS típusú külső adatforrásokat használó külső táblák meghatározásához. A függőleges particionálás külső tábladefiníciója a következő szempontokat foglalja magában:

  • Séma: A külső tábla DDL egy olyan sémát határoz meg, amelyet a lekérdezések használhatnak. A külső tábladefinícióban megadott sémának meg kell egyeznie a távoli adatbázisban lévő táblák sémájának, ahol a tényleges adatokat tárolják.
  • Távoli adatbázis-referenciák: A külső tábla DDL-értéke egy külső adatforrásra hivatkozik. A külső adatforrás annak a távoli adatbázisnak a kiszolgálónevét és adatbázisnevét adja meg, ahol a tényleges táblaadatokat tárolják.

Az előző szakaszban ismertetett külső adatforrás használata esetén a külső táblák létrehozásának szintaxisa 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 a függőleges particionálásban).

A SCHEMA_NAME és OBJECT_NAME záradékok lehetővé teszik a külső tábladefiníció hozzárendelését egy másik sémában lévő táblához a távoli adatbázisban, vagy egy másik nevű táblához. Ez a megfeleltetés akkor hasznos, ha a távoli adatbázis katalógusnézetéhez vagy DMV-éhez szeretne külső táblát definiálni, vagy ha a távoli tábla neve helyileg már szerepel.

Az alábbi DDL-utasítás elvet egy meglévő külső tábladefiníciót a helyi katalógusból. Nincs hatással a távoli adatbázisra.

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

KÜLSŐ TÁBLA LÉTREHOZÁSA/ELVETÉSE: A külső tábla DDL-jének módosításához külső adatforrás-engedélyekre van szükség, amely az alapul szolgáló adatforrásra való hivatkozáshoz is szükséges.

Biztonsági szempontok

A külső táblához hozzáféréssel rendelkező felhasználók automatikusan hozzáférnek az alapul szolgáló távoli táblákhoz a külső adatforrás definíciójában megadott hitelesítő adatok alapján. A külső tábla hozzáférésének gondos kezelése annak érdekében, hogy a külső adatforrás hitelesítő adataival elkerülhető legyen a jogosultságok nem kívánt emelése. A rendszeres SQL-engedélyek a külső táblákhoz való hozzáférés engedélyezésére vagy visszavonására ugyanúgy használhatók, mintha normál tábláról lenne szó.

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

Az alábbi lekérdezés háromirányú illesztési műveletet hajt végre a rendelések és rendeléssorok két helyi táblája, valamint az ügyfelek távoli táblája között. Ez egy példa a rugalmas lekérdezés referenciaadat-használati esetére:

    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-kód távoli adatbázison való végrehajtására használható. 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 távoli adatbázisban végrehajtandó T-SQL-lekérdezés.
  • Paraméterdeklaráció (nvarchar) – nem kötelező: A Lekérdezés paraméterben (például sp_executesql) használt paraméterek adattípus-definícióival rendelkező sztring.
  • Paraméterértékek listája – nem kötelező: Paraméterértékek vesszővel tagolt listája (például sp_executesql).

A sp_execute_remote a meghívási paraméterekben megadott külső adatforrás használatával hajtja végre a megadott T-SQL utasítást a távoli adatbázisban. 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 bi- és adatintegrációs eszközöket rendszeres SQL Server-kapcsolati sztringek használatával csatlakoztathatja a rugalmas lekérdezést engedélyező adatbázisokhoz és a külső táblákhoz. Győződjön meg arról, hogy az SQL Server támogatott az eszköz adatforrásaként. Ezután tekintse meg a rugalmas lekérdezési adatbázist és annak külső tábláit, ugyanúgy, mint bármely más SQL Server-adatbázist, amelyhez csatlakozni szeretne az eszközével.

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 az Azure Services azure SQL Database tűzfalkonfigurációjában való engedélyezésével. Győződjön meg arról is, hogy a külső adatforrás-definícióban megadott hitelesítő adatok sikeresen bejelentkezhetnek a távoli adatbázisba, és rendelkezik a távoli tábla elérésére vonatkozó engedélyekkel.
  • A rugalmas lekérdezés olyan lekérdezésekhez működik a legjobban, ahol a számítás nagy része elvégezhető a távoli adatbázisokon. Általában a legjobb lekérdezési teljesítményt kapja szelektív szűrő predikátumokkal, amelyek kiértékelhetők a távoli adatbázisokon vagy illesztéseken, amelyek teljes mértékben elvégezhetők a távoli adatbázisban. Más lekérdezési minták esetében előfordulhat, hogy nagy mennyiségű adatot kell betölteni a távoli adatbázisból, ezért alacsonyabb lehet a teljesítményük.

További lépések