Sdílet prostřednictvím


sys.sp_data_source_objects (Transact-SQL)

platí pro: SQL Server 2019 (15.x)

Vrátí seznam objektů tabulky, které jsou k dispozici pro virtualizaci.

Transact-SQL konvence syntaxe

Syntaxe

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'

Název externího zdroje dat, ze které chcete získat metadata. @data_source je sysname bez výchozího nastavení.

[ @object_root_name = ] N'object_root_name'

Kořen názvu objektu nebo objektů, které chcete vyhledat. @object_root_name je nvarchar(max), s výchozí hodnotou NULL.

Toto volání vrací pouze externí objekty, které začínají hodnotou nastavenou pro @object_root_name.

Pokud se zdroj dat ODBC připojuje k systému pro správu relačních databází (RDBMS), který používá názvy tří částí, @object_root_name nemůže obsahovat částečný název databáze. V těchto případech by parametr @object_root_name měl obsahovat všechny tři části, přičemž třetí část je název objektu, který se má prohledávat.

Upozornění

Vzhledem k rozdílům mezi externími datovými platformami některé platformy nevrací žádné výsledky, pokud je k dispozici výchozí hodnota NULL . Někteří považují NULL za nedostatek filtru. Oracle RDMBS například nevrátí výsledky, pokud NULL je k dispozici pro @object_root_name.

[ @max_search_depth = ] max_search_depth

Tato hodnota určuje maximální hloubku (v částech) za @object_root_name , kterou chcete vyhledat. @max_search_depth je int, s výchozím nastavením 1.

Například @max_search_depth 1 s @object_root_name , která je názvem databáze SQL Serveru, by vrátila schémata obsažená v databázi.

@max_search_depthNULL vrátí informace o @object_root_name, pokud existuje a není prázdný v případě katalogu nebo schématu.

[ @search_options = ] N'search_options'

Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.

Sada výsledků

Název sloupce Datový typ Description
OBJECT_TYPE nvarchar(200) Typ objektu (Příklad: TABLE nebo DATABASE).
OBJECT_NAME nvarchar(max) Plně kvalifikovaný název objektu. Řídicí znak s použitím znaku uvozovky specifického pro back-end.
OBJECT_LEAF_NAME nvarchar(max) Nekvalifikovaný název objektu.
TABLE_LOCATION nvarchar(max) Platný řetězec umístění tabulky, který lze použít pro CREATE EXTERNAL TABLE příkaz. Je NULL to, pokud se to nedá použít.

Povolení

Vyžaduje ALTER ANY EXTERNAL DATA SOURCE oprávnění.

Poznámky

Instance SQL Serveru musí mít nainstalovanou funkci PolyBase . Tento postup byl poprvé představen v SQL Serveru 2019 (15.x) CU 5.

Tato uložená procedura podporuje konektory pro:

  • SQL Server
  • Oracle
  • Teradata
  • MongoDB
  • Azure Cosmos DB

Uložená procedura nepodporuje obecný zdroj dat ODBC ani konektory Hadoop.

Pojem prázdný vs. neprázdný souvisí s chováním ovladače ODBC a funkce SQLTables . Neprázdný indikuje, že objekt obsahuje tabulky, ne řádky. Například prázdné schéma neobsahuje v SQL Serveru žádné tabulky. Prázdná databáze neobsahuje žádné tabulky uvnitř Teradata.

Typy objektů jsou určeny ovladačem ODBC externího zdroje dat. Každý externí zdroj dat určuje, co se kvalifikuje jako tabulka. To může zahrnovat databázové objekty, jako jsou funkce v Teradata, nebo synonyma v Oracle. PolyBase se nemůže připojit k některým objektům ODBC jako externím tabulkám, a proto nebude mít ve TABLE_LOCATION sloupci hodnotu. Navzdory absenci hodnot může TABLE_LOCATIONpřítomnost jednoho z těchto objektů ODBC vytvořit databázi nebo schéma neprázdné.

Ke zjišťování externích objektů použijte sp_data_source_objects a sp_data_source_table_columns . Tyto systémové uložené procedury vrací schéma tabulek, které jsou k dispozici pro virtualizaci. Ke zjišťování schémat externích tabulek reprezentovaných v datových typech SQL Serveru použijte sp_data_source_table_columns .

Externí tabulky kolekcí MongoDB, které obsahují pole

Pomocí sp_data_source_objects detekujte schéma kolekce (sloupce) pro kolekce MongoDB, které obsahují pole, a ručně vytvořte externí tabulku. Uložená procedura sp_data_source_table_columns také automaticky provede zplošťování prostřednictvím ovladače PolyBase ODBC pro ovladač MongoDB.

Poznámky týkající se konkrétního typu zdroje dat

  • Teradata: Systémová zobrazení Teradata nepoužívají zabezpečení na úrovni řádků (RLS), takže uživatelé uvidí existenci tabulek, které nemůžou dotazovat.

  • MongoDB: Některé starší verze MongoDB omezují možnost vypsat všechny databáze na uživatele podobné správcům. Uživatelům bez tohoto oprávnění můžou při pokusu o provedení tohoto postupu s hodnotou null @object_root_name dojít k chybám ověřování.

  • Oracle: Synonyma Oracle nejsou podporována pro použití s PolyBase.

Examples

SQL Server

Následující příklad vrátí všechny databáze, schémata a tabulky/zobrazení.

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;
TYP_OBJEKTU 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]

Následující příklad vrátí všechny databáze.

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;
TYP_OBJEKTU 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

Následující příklad vrátí všechna schémata v databázi.

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;
TYP_OBJEKTU OBJECT_NAME OBJECT_LEAF_NAME TABLE_LOCATION
SCHEMA "database"."dbo" dbo NULL
SCHEMA "database"."INFORMATION_SCHEMA" INFORMATION_SCHEMA NULL
SCHEMA "database"."sys" sys NULL

Následující příklad vrátí všechny tabulky ve schématu.

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;
TYP_OBJEKTU 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

Následující příklad vrátí kompletní schéma a tabulky, funkce, zobrazení a atd.

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;
TYP_OBJEKTU 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

Následující příklad vrátí všechny databáze a tabulky, funkce, zobrazení a atd.

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;
TYP_OBJEKTU 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

Následující příklad vrátí všechny databáze a tabulky.

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;
TYP_OBJEKTU 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]