Delen via


sp_data_source_objects (Transact-SQL)

Van toepassing op: SQL Server 2019 (15.x)

Retourneert een lijst met tabelobjecten die beschikbaar zijn om te worden gevirtualiseerd.

Syntaxis

Transact-SQL syntaxis-conventies

sp_data_source_objects
        [ @data_source = ] 'data_source'
    [ , [ @object_root_name = ] 'object_root_name' ]
    [ , [ @max_search_depth = ] max_search_depth ]
    [ , [ @search_options = ] 'search_options' ]
[ ; ]

Arguments

[ @data_source = ] 'data_source'

De naam van de externe gegevensbron waaruit de metagegevens moeten worden opgehaald. @data_source is sysname.

[ @object_root_name = ] 'object_root_name'

Deze parameter is de hoofdmap van de naam van de objecten waarnaar moet worden gezocht. @object_root_name is nvarchar(max), met een standaardwaarde van NULL.

Met deze aanroep worden alleen externe objecten geretourneerd die beginnen met de waarde die is ingesteld voor @object_root_name.

Als een ODBC-gegevensbron verbinding maakt met een relationeel databasebeheersysteem (RDBMS) dat gebruikmaakt van driedelige namen, kan @object_root_name geen gedeeltelijke databasenaam bevatten. In deze gevallen moet de parameter @object_root_name alle drie de onderdelen bevatten, waarbij het derde deel de objectnaam is om te zoeken.

Waarschuwing

Vanwege verschillen tussen externe gegevensplatformen retourneren sommige platforms geen resultaten als de standaardwaarde is NULL opgegeven. Sommigen behandelen NULL het ontbreken van een filter. Oracle RDMBS retourneert bijvoorbeeld geen resultaten als NULL deze is opgegeven voor @object_root_name.

[ @max_search_depth = ] max_search_depth

Met deze waarde geeft u de maximale diepte (in delen) achter de @object_root_name die we willen doorzoeken. @max_search_depth is een int met een standaardwaarde van 1.

Een @max_search_depth van 1, met een @object_root_name die de naam is van een SQL Server-database, retourneert bijvoorbeeld schemata in de database.

Een @max_search_depth retourneert NULL informatie over @object_root_name als deze bestaat en niet leeg is, in het geval van catalogus of schema.

[ @search_options = ] 'search_options'

De search_options parameter is nvarchar(max) met een standaardwaarde van NULL.

Deze parameter wordt niet gebruikt, maar kan in de toekomst worden geïmplementeerd.

Resultaatset

Kolomnaam Gegevenstype Description
OBJECT_TYPE nvarchar(200) Het type object (voorbeeld: TABLE of DATABASE).
OBJECT_NAME nvarchar(max) De volledig gekwalificeerde naam van het object. Ontsnapt met een back-endspecifiek aanhalingsteken.
OBJECT_LEAF_NAME nvarchar(max) De niet-gekwalificeerde objectnaam.
TABLE_LOCATION nvarchar(max) Een geldige tabellocatietekenreeks die kan worden gebruikt voor de instructie CREATE EXTERNAL TABLE. Is NULL het niet van toepassing.

Permissions

Vereist ALTER ANY EXTERNAL DATA SOURCE permission.

Opmerkingen

Op het SQL Server-exemplaar moet de PolyBase-functie zijn geïnstalleerd. Deze procedure is voor het eerst geïntroduceerd in SQL Server 2019 CU5.

Deze opgeslagen procedure ondersteunt connectors voor:

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

De opgeslagen procedure biedt geen ondersteuning voor algemene ODBC-gegevensbron of Hadoop-connectors.

Het begrip leeg versus niet-leeg heeft betrekking op het gedrag van het ODBC-stuurprogramma en de functie SQLTables . Niet-leeg geeft aan dat een object tabellen bevat, niet rijen. Een leeg schema bevat bijvoorbeeld geen tabellen in SQL Server. Een lege database bevat geen tabellen in Teradata.

Objecttypen worden bepaald door het ODBC-stuurprogramma van de externe gegevensbron. Elke externe gegevensbron bepaalt wat in aanmerking komt als een tabel. Dit kunnen databaseobjecten zijn zoals functies in Teradata of synoniemen in Oracle. PolyBase kan geen verbinding maken met sommige ODBC-objecten als externe tabellen en heeft daarom geen waarde in de TABLE_LOCATION kolom. Ondanks het ontbreken van waarden, TABLE_LOCATIONkan de aanwezigheid van een van deze ODBC-objecten een database of schema niet leeg maken.

Gebruik sp_data_source_objects en sp_data_source_table_columns om externe objecten te detecteren. Deze opgeslagen systeemprocedures retourneren het schema van tabellen die beschikbaar zijn om te worden gevirtualiseerd. Azure Data Studio maakt gebruik van deze twee opgeslagen procedures ter ondersteuning van gegevensvirtualisatie. Gebruik sp_data_source_table_columns om externe tabelschema's te detecteren die worden weergegeven in SQL Server-gegevenstypen.

Externe tabellen voor MongoDB-verzamelingen die matrices bevatten

Als u externe tabellen wilt maken voor MongoDB-verzamelingen die matrices bevatten, moet u de extensie Gegevensvirtualisatie voor Azure Data Studio gebruiken om een CREATE EXTERNAL TABLE-instructie te maken op basis van het schema dat is gedetecteerd door het PolyBase ODBC-stuurprogramma voor MongoDB. De afvlakkende acties worden automatisch uitgevoerd door het stuurprogramma. U kunt ook sp_data_source_objects gebruiken om het verzamelingsschema (kolommen) te detecteren en de externe tabel handmatig te maken. De sp_data_source_table_columns opgeslagen procedure voert ook automatisch het platmaken uit via het PolyBase ODBC-stuurprogramma voor mongoDB-stuurprogramma. De datavirtualisatie-extensie voor Azure Data Studio en sp_data_source_table_columns dezelfde interne opgeslagen procedures gebruiken om een query uit te voeren op het externe schema.

Specifieke opmerkingen voor gegevensbrontype

  • Teradata

    Teradata-systeemweergaven maken geen gebruik van beveiliging op rijniveau (RLS), zodat gebruikers het bestaan van tabellen kunnen zien waarop ze geen query's kunnen uitvoeren.

  • MongoDB

    Sommige eerdere versies van MongoDB beperken de mogelijkheid om alle databases weer te geven aan beheerdersachtige gebruikers. Gebruikers zonder deze machtiging krijgen mogelijk verificatiefouten bij het uitvoeren van deze procedure met een null -@object_root_name.

  • Oracle

    Oracle-synoniemen worden niet ondersteund voor gebruik met PolyBase.

Voorbeelden

SQL Server

In het volgende voorbeeld worden alle databases, schemata en tabellen/weergaven geretourneerd

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

In het volgende voorbeeld worden alle databases geretourneerd

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

In het volgende voorbeeld worden alle schemata's in een database geretourneerd

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

In het volgende voorbeeld worden alle tabellen in het schema geretourneerd

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

In het volgende voorbeeld worden de volledige schemata en tabellen, functies, weergaven en enzovoort geretourneerd.

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

In het volgende voorbeeld worden alle databases en tabellen, functies, weergaven en enzovoort geretourneerd.

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

Mongo DB

In het volgende voorbeeld worden alle databases en tabellen geretourneerd.

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