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
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.
- MESTERKULCS LÉTREHOZÁSA
- CREATE DATABASE SCOPED CREDENTIAL
- CREATE EXTERNAL DATA SOURCE
- 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
- A rugalmas lekérdezés áttekintését a Rugalmas lekérdezés áttekintése című témakörben tekintheti meg.
- A rugalmas lekérdezés korlátozásait lásd : Előzetes verziójú korlátozások
- Függőleges particionálási oktatóanyagért tekintse meg az adatbázisközi lekérdezés (függőleges particionálás) első lépéseit.
- Horizontális particionálási (horizontális) oktatóanyagért tekintse meg a horizontális particionálás (horizontális particionálás) rugalmas lekérdezésének első lépéseit.>
- A horizontálisan particionált adatok szintaxisa és minta lekérdezései: Horizontálisan particionált adatok lekérdezése)
- Tekintse meg a sp_execute _remote egy olyan tárolt eljárást, amely transact-SQL utasítást hajt végre egyetlen távoli Azure SQL Database-adatbázison vagy horizontális particionálási sémában szegmensként szolgáló adatbázisok készletén.