sys.sp_data_source_objects (Transact-SQL)

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]