Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op: SQL Server 2019 (15.x)
Retourneert een lijst met tabelobjecten die beschikbaar zijn om te worden gevirtualiseerd.
Transact-SQL syntaxis-conventies
Syntaxis
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'
De naam van de externe gegevensbron waaruit de metagegevens moeten worden opgehaald. @data_source is sysname, zonder standaardwaarde.
[ @object_root_name = ] N'object_root_name'
De hoofdmap van de naam van het object of 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 u wilt doorzoeken.
@max_search_depth is 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 = ] N'search_options'
Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
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 CREATE EXTERNAL TABLE instructie. Is NULL het niet van toepassing. |
Permissions
Hiervoor is toestemming vereist ALTER ANY EXTERNAL DATA SOURCE .
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 (15.x) CU 5.
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. 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
Gebruik sp_data_source_objects om het verzamelingsschema (kolommen) te detecteren voor MongoDB-verzamelingen die matrices bevatten 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.
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] |
MongoDB
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] |
Verwante inhoud
- sp_data_source_columns
- CREATE EXTERNAL TABLE AS SELECT (CETAS) (Transact-SQL) (Dit is een SQL-opdracht voor het maken van externe tabellen)
- CREËER EXTERNE TABEL (Transact-SQL)
- Gegevensvirtualisatie met PolyBase in SQL Server
- systeemopslagprocedures (Transact-SQL)