Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2019 (15.x)
A virtualizálni kívánt táblaobjektumok listáját adja vissza.
Transact-SQL szintaxis konvenciók
Szemantika
sys.sp_data_source_objects
[ @data_source = ] N'data_source'
[ , [ @object_root_name = ] N'object_root_name' ]
[ , [ @max_search_depth = ] max_search_depth ]
[ , [ @search_options = ] N'search_options' ]
[ ; ]
Arguments
[ @data_source = ] N'data_source'
A metaadatok lekéréséhez használt külső adatforrás neve. @data_sourcea sysname, alapértelmezés nélkül.
[ @object_root_name = ] N'object_root_name'
A keresendő objektum vagy objektumok nevének gyökere.
@object_root_namenvarchar(max), alapértelmezés szerint NULL.
Ez a hívás csak olyan külső objektumokat ad vissza, amelyek a @object_root_name értékével kezdődnek.
Ha egy ODBC-adatforrás háromrészes neveket használó relációs adatbázis-kezelő rendszerhez (RDBMS) csatlakozik, @object_root_name nem tartalmazhat részleges adatbázisnevet. Ezekben az esetekben a @object_root_name paraméternek mindhárom részt tartalmaznia kell, a harmadik pedig a keresendő objektum neve.
Caution
A külső adatplatformok közötti különbségek miatt egyes platformok nem adnak vissza eredményt, ha az alapértelmezett érték NULL meg van adva. Vannak, akik a szűrő hiányát kezelik NULL . Az Oracle RDMBS például nem ad vissza eredményeket, ha NULL az @object_root_name van megadva.
[ @max_search_depth = ] max_search_depth
Ez az érték határozza meg a keresni kívánt @object_root_name (részekben) legnagyobb mélységét.
@max_search_depthint, alapértelmezés szerint 1.
Az 1-ből álló @max_search_depth például egy SQL Server-adatbázis nevét tartalmazó @object_root_name az adatbázisban található sémaképet adja vissza.
A @max_search_depthNULL a katalógus vagy séma esetében @object_root_name adatokat ad vissza, és nem üres.
[ @search_options = ] N'search_options'
Csak tájékoztatási célokra van meghatározva. Nem támogatott. A jövőbeli kompatibilitás nem garantált.
Eredményhalmaz
| Oszlop név | Adattípus | Description |
|---|---|---|
OBJECT_TYPE |
nvarchar(200) | Az objektum típusa (példa: TABLE vagy DATABASE). |
OBJECT_NAME |
nvarchar(max) | Az objektum teljes neve. Háttérspecifikus idézőjellel szökött meg. |
OBJECT_LEAF_NAME |
nvarchar(max) | A nem minősített objektum neve. |
TABLE_LOCATION |
nvarchar(max) | Érvényes táblahely sztring, amely használható az CREATE EXTERNAL TABLE utasításhoz. Akkor NULL van, ha nem alkalmazható. |
Permissions
Engedélyre van szükség ALTER ANY EXTERNAL DATA SOURCE .
Megjegyzések
Az SQL Server-példányon telepítve kell lennie a PolyBase szolgáltatásnak. Ezt az eljárást először az SQL Server 2019 (15.x) CU 5-ben vezették be.
Ez a tárolt eljárás a következő összekötőket támogatja:
- SQL Server
- Oracle
- Teradata
- MongoDB
- Azure Cosmos DB
A tárolt eljárás nem támogatja az általános ODBC-adatforrásokat vagy Hadoop-összekötőket.
Az üres és a nem üres fogalma az ODBC-illesztő és az SQLTables függvény viselkedéséhez kapcsolódik. A nem üres értékek azt jelzik, hogy egy objektum táblákat tartalmaz, nem sorokat. Egy üres séma például nem tartalmaz táblákat az SQL Serverben. Egy üres adatbázis nem tartalmaz táblákat a Teradata-ben.
Az objektumtípusokat a külső adatforrás ODBC-illesztőprogramja határozza meg. Minden külső adatforrás meghatározza, hogy mi minősül táblának. Ilyenek lehetnek az adatbázis-objektumok, például a Teradata függvényei, vagy az Oracle szinonimái. A PolyBase nem tud külső táblaként csatlakozni néhány ODBC-objektumhoz, ezért nem lesz értéke az TABLE_LOCATION oszlopban. Annak ellenére, hogy nincsenek értékek a fájlban TABLE_LOCATION, előfordulhat, hogy az egyik ODBC-objektum jelenléte miatt az adatbázis vagy a séma nem üres.
Külső sp_data_source_objects objektumok felderítése és sp_data_source_table_columns . Ezek a rendszer által tárolt eljárások visszaadják a virtualizálható táblák sémáját. A sp_data_source_table_columns segítségével felderítheti az SQL Server-adattípusokban képviselt külső táblasémákat.
Tömböket tartalmazó mongoDB-gyűjtemények külső táblái
A sp_data_source_objects segítségével észlelhető a tömböket tartalmazó MongoDB-gyűjtemények gyűjteményséma (oszlopai), és manuálisan hozhatja létre a külső táblát. A sp_data_source_table_columns tárolt eljárás automatikusan elvégzi az összesimítást a MongoDB-illesztőHöz készült PolyBase ODBC-illesztőprogramon keresztül.
Adatforrástípus-specifikus megjegyzések
Teradata: A Teradata rendszernézetek nem használnak sorszintű biztonságot (RLS), így a felhasználók láthatják, hogy léteznek olyan táblák, amelyeket nem tudnak lekérdezni.
MongoDB: A MongoDB néhány korábbi verziója korlátozza, hogy az összes adatbázist rendszergazdai felhasználókra listázhassa. Az engedély nélküli felhasználók hitelesítési hibákat kaphatnak, amikor null @object_root_name próbálják végrehajtani ezt az eljárást.
Oracle: Az Oracle szinonimái nem támogatottak a PolyBase használata esetén.
Példák
SQL Server
Az alábbi példa az összes adatbázist, sémát és táblát/nézetet visszaadja
DECLARE @data_source AS SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name AS NVARCHAR (MAX) = NULL;
DECLARE @max_search_depth AS INT = 3;
EXECUTE sp_data_source_objects
@data_source,
@object_root_name,
@max_search_depth;
| OBJEKTUM_TÍPUS | OBJECT_NAME | OBJECT_LEAF_NAME | TABLE_LOCATION |
|---|---|---|---|
DATABASE |
"database" |
database |
NULL |
SCHEMA |
"database"."dbo" |
dbo |
NULL |
TABLE |
"database"."dbo"."customer" |
customer |
[database].[dbo].[customer] |
TABLE |
"database"."dbo"."item" |
item |
[database].[dbo].[item] |
TABLE |
"database"."dbo"."nation" |
nation |
[database].[dbo].[nation] |
Az alábbi példa az összes adatbázist visszaadja
DECLARE @data_source AS SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name AS NVARCHAR (MAX) = NULL;
EXECUTE sp_data_source_objects
@data_source,
@object_root_name;
| OBJEKTUM_TÍPUS | OBJECT_NAME | OBJECT_LEAF_NAME | TABLE_LOCATION |
|---|---|---|---|
DATABASE |
UserDatabase |
UserDatabase |
NULL |
DATABASE |
master |
master |
NULL |
DATABASE |
msdb |
msdb |
NULL |
DATABASE |
tempdb |
tempdb |
NULL |
DATABASE |
database |
database |
NULL |
Az alábbi példa egy adatbázis összes sémáját visszaadja
DECLARE @data_source AS SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name AS NVARCHAR (MAX) = N'[database]';
EXECUTE sp_data_source_objects
@data_source,
@object_root_name;
| OBJEKTUM_TÍPUS | OBJECT_NAME | OBJECT_LEAF_NAME | TABLE_LOCATION |
|---|---|---|---|
SCHEMA |
"database"."dbo" |
dbo |
NULL |
SCHEMA |
"database"."INFORMATION_SCHEMA" |
INFORMATION_SCHEMA |
NULL |
SCHEMA |
"database"."sys" |
sys |
NULL |
Az alábbi példa a séma összes tábláját visszaadja
DECLARE @data_source AS SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name AS NVARCHAR (MAX) = N'[database].[dbo]';
EXECUTE sp_data_source_objects
@data_source,
@object_root_name;
| OBJEKTUM_TÍPUS | OBJECT_NAME | OBJECT_LEAF_NAME | TABLE_LOCATION |
|---|---|---|---|
TABLE |
"database"."dbo"."customer" |
customer |
[database].[dbo].[customer] |
TABLE |
"database"."dbo"."item" |
item |
[database].[dbo].[item] |
TABLE |
"database"."dbo"."nation" |
nation |
[database].[dbo].[nation] |
TABLE |
"database"."dbo"."orders" |
orders |
[database].[dbo].[orders] |
TABLE |
"database"."dbo"."part" |
part |
[database].[dbo].[part] |
Oracle
Az alábbi példa a teljes sémát és táblázatokat, függvényeket, nézeteket és egyebeket adja vissza.
DECLARE @data_source AS SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name AS NVARCHAR (MAX) = N'[OracleObjectRoot]';
DECLARE @max_search_depth AS INT = 2;
EXECUTE sp_data_source_objects
@data_source,
@object_root_name,
@max_search_depth;
| OBJEKTUM_TÍPUS | OBJECT_NAME | OBJECT_LEAF_NAME | TABLE_LOCATION |
|---|---|---|---|
VIEW |
"SYS"."ALL_SQLSET_STATEMENTS" |
ALL_SQLSET_STATEMENTS |
[ORACLEOBJECTROOT].[SYS].[ALL_SQLSET_STATEMENTS] |
SYSTEM TABLE |
"SYS"."BOOTSTRAP$" |
BOOTSTRAP$ |
[ORACLEOBJECTROOT].[SYS].[BOOTSTRAP$] |
SYNONYM |
"PUBLIC"."ALL_ALL_TABLES" |
ALL_ALL_TABLES |
NULL |
SCHEMA |
"database" |
database |
NULL |
TABLE |
"database"."customer" |
customer |
[ORACLEOBJECTROOT].[database].[customer] |
Teradata
Az alábbi példa az összes adatbázist és táblát, függvényt, nézetet és egyebeket visszaadja.
DECLARE @data_source AS SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name AS NVARCHAR (MAX) = NULL;
DECLARE @max_search_depth AS INT = 2;
EXECUTE sp_data_source_objects
@data_source,
@object_root_name,
@max_search_depth;
| OBJEKTUM_TÍPUS | OBJECT_NAME | OBJECT_LEAF_NAME | TABLE_LOCATION |
|---|---|---|---|
FUNCTION |
"SYSLIB"."ExtractRoles" |
ExtractRoles |
NULL |
SYSTEM TABLE |
"DBC"."UDTCast" |
UDTCast |
[DBC].[UDTCast] |
TYPE |
"SYSUDTLIB"."XML" |
XML |
NULL |
DATABASE |
"database" |
database |
NULL |
TABLE |
"database"."customer" |
customer |
[database].[customer] |
MongoDB
Az alábbi példa az összes adatbázist és táblát visszaadja.
DECLARE @data_source AS SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name AS NVARCHAR (MAX) = NULL;
DECLARE @max_search_depth AS INT = 2;
EXECUTE sp_data_source_objects
@data_source,
@object_root_name,
@max_search_depth;
| OBJEKTUM_TÍPUS | OBJECT_NAME | OBJECT_LEAF_NAME | TABLE_LOCATION |
|---|---|---|---|
DATABASE |
"database" |
database |
NULL |
TABLE |
"database"."customer" |
customer |
[database].[customer] |
TABLE |
"database"."item" |
item |
[database].[item] |
TABLE |
"database"."nation" |
nation |
[database].[nation] |
TABLE |
"database"."orders" |
orders |
[database].[orders] |