Aracılığıyla paylaş


sys.sp_data_source_objects (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2019 (15.x)

Sanallaştırılabilen tablo nesnelerinin listesini döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

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'

Meta verileri almak için dış veri kaynağının adı. @data_sourcesysname'dir ve varsayılan değer yoktur.

[ @object_root_name = ] N'object_root_name'

Aranacak nesne veya nesnelerin adının kökü. @object_root_name , varsayılan değeri olan nvarchar(max)'dir NULL.

Bu çağrı yalnızca @object_root_name değeriyle başlayan dış nesneleri döndürür.

ODBC veri kaynağı üç parçalı adlar kullanan bir ilişkisel veritabanı yönetim sistemine (RDBMS) bağlanırsa , @object_root_name kısmi veritabanı adı içeremez. Bu durumlarda, parametre @object_root_name üç bölümü de içermelidir ve üçüncü bölüm aranacak nesne adıdır.

Dikkat

Dış veri platformları arasındaki farklar nedeniyle, varsayılan değeri NULL sağlanırsa bazı platformlar herhangi bir sonuç döndürmez. Bazıları filtre eksikliği olarak ele alır NULL . Örneğin, NULL için sağlanmışsa Oracle RDMBS sonuç döndürmez.

[ @max_search_depth = ] max_search_depth

Bu değer, aramak istediğiniz @object_root_name en fazla derinliği (parça olarak) belirtir. @max_search_depth, varsayılan değeri olan int'tir1.

Örneğin, SQL Server veritabanının adı olan bir @object_root_name içeren 1 @max_search_depth, veritabanının içinde bulunan şemayı döndürür.

@max_search_depthNULL, katalog veya şema söz konusu olduğunda @object_root_name varsa ve boş değilse hakkındaki bilgileri döndürür.

[ @search_options = ] N'search_options'

Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.

Sonuç kümesi

Sütun adı Veri türü Description
OBJECT_TYPE nvarchar(200) Nesnenin türü (Örnek: TABLE veya DATABASE).
OBJECT_NAME nvarchar(max) Nesnenin tam adı. Arka uca özgü tırnak karakteri kullanılarak kaçış.
OBJECT_LEAF_NAME nvarchar(max) Nitelenmemiş nesne adı.
TABLE_LOCATION nvarchar(max) deyimi için CREATE EXTERNAL TABLE kullanılabilecek geçerli bir tablo konumu dizesi. NULL Geçerli değilse olur.

Permissions

İzin gerektirir ALTER ANY EXTERNAL DATA SOURCE .

Açıklamalar

SQL Server örneğinde PolyBase özelliği yüklü olmalıdır. Bu yordam ilk olarak SQL Server 2019 (15.x) CU 5'te kullanıma sunulmuştur.

Bu saklı yordam aşağıdakiler için bağlayıcıları destekler:

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

Saklı yordam genel ODBC veri kaynağını veya Hadoop bağlayıcılarını desteklemez.

Boş ile boş olmayan arasındaki ilişki, ODBC sürücüsünün ve SQLTables işlevinin davranışıyla ilgilidir. Boş olmayan, bir nesnenin satır değil tablo içerdiğini gösterir. Örneğin, boş bir şema SQL Server'da tablo içermiyor. Boş bir veritabanı, Teradata içinde tablo içermeyen bir veritabanı içerir.

Nesne türleri dış veri kaynağının ODBC sürücüsü tarafından belirlenir. Her dış veri kaynağı, neyin tablo olarak niteleneceğini belirler. Bu, Teradata'daki işlevler veya Oracle'daki eş anlamlılar gibi veritabanı nesnelerini içerebilir. PolyBase bazı ODBC nesnelerine dış tablo olarak bağlanamaz ve bu nedenle sütunda TABLE_LOCATION bir değere sahip olmaz. içinde TABLE_LOCATIONdeğer olmamasına rağmen, bu ODBC nesnelerinden birinin varlığı bir veritabanını veya şemayı boş yapamaz.

Dış nesneleri bulmak için kullanın sp_data_source_objects ve sp_data_source_table_columns . Bu sistem saklı yordamları, sanallaştırılmaya uygun tabloların şemasını döndürür. SQL Server veri türlerinde temsil edilen dış tablo şemalarını bulmak için sp_data_source_table_columns kullanın.

Diziler içeren MongoDB koleksiyonlarına dış tablolar

sp_data_source_objects kullanarak diziler içeren MongoDB koleksiyonlarının koleksiyon şemasını (sütunlar) tespit edin ve dış tabloyu manuel olarak oluşturun. sp_data_source_table_columns saklı yordamı, MongoDB sürücüsü için PolyBase ODBC Sürücüsü aracılığıyla da otomatik olarak düzleştirme gerçekleştirir.

Veri kaynağı türüne özgü açıklamalar

  • Teradata: Teradata sistem görünümleri satır düzeyi güvenlik (RLS) kullanmaz ve bu nedenle kullanıcılar sorgulayamadıkları tabloların varlığını görebilir.

  • MongoDB: MongoDB'nin önceki bazı sürümleri, tüm veritabanlarını yönetici benzeri kullanıcılarla listeleme özelliğini kısıtlar. Bu izne sahip olmayan kullanıcılar, bu yordamı null @object_root_name yürütmeye çalışırken kimlik doğrulaması hataları alabilir.

  • Oracle: Oracle eş anlamlıları PolyBase ile kullanım için desteklenmez.

Örnekler

SQL Server

Aşağıdaki örnek tüm veritabanlarını, şemaları ve tabloları/görünümleri döndürür

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]

Aşağıdaki örnek tüm veritabanlarını döndürür

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

Aşağıdaki örnek bir veritabanındaki tüm şemaları döndürür

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

Aşağıdaki örnek şemadaki tüm tabloları döndürür

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

Aşağıdaki örnek şemata ve tabloların, işlevlerin, görünümlerin vb. tamamını döndürür.

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

Aşağıdaki örnek tüm veritabanlarını ve tabloları, işlevleri, görünümleri vb. döndürür.

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

Aşağıdaki örnek tüm veritabanlarını ve tabloları döndürür.

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]