Bagikan melalui


sys.sp_data_source_objects (Transact-SQL)

Berlaku untuk: SQL Server 2019 (15.x)

Mengembalikan daftar objek tabel yang tersedia untuk divirtualisasi.

Konvensi sintaks transact-SQL

Sintaks

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' ]
[ ; ]

Argumen

[ @data_source = ] N'data_source'

Nama sumber data eksternal untuk mendapatkan metadata. @data_source adalah sysname, tanpa default.

[ @object_root_name = ] N'object_root_name'

Akar nama objek atau objek yang akan dicari. @object_root_name adalah nvarchar(max), dengan default NULL.

Panggilan ini hanya mengembalikan objek eksternal yang dimulai dengan nilai yang ditetapkan untuk @object_root_name.

Jika sumber data ODBC tersambung ke sistem manajemen database relasional (RDBMS) yang menggunakan nama tiga bagian, @object_root_name tidak dapat berisi nama database parsial. Dalam kasus ini, parameter @object_root_name harus berisi ketiga bagian, dengan bagian ketiga menjadi nama objek untuk dicari.

Perhatian

Karena perbedaan antara platform data eksternal, beberapa platform tidak mengembalikan hasil apa pun jika nilai NULL default disediakan. Beberapa memperlakukan NULL sebagai kurangnya filter. Misalnya, Oracle RDMBS tidak akan mengembalikan hasil jika NULL disediakan untuk @object_root_name.

[ @max_search_depth = ] max_search_depth

Nilai ini menentukan kedalaman maksimum (dalam bagian) melewati @object_root_name yang ingin Anda cari. @max_search_depthint, dengan default 1.

Misalnya, @max_search_depth 1, dengan @object_root_name yang merupakan nama database SQL Server, akan mengembalikan skema yang terkandung di dalam database.

@max_search_depthNULL mengembalikan informasi tentang @object_root_name jika ada dan tidak kosong, dalam kasus katalog atau skema.

[ @search_options = ] N'search_options'

Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.

Tataan hasil

Nama kolom Jenis data Deskripsi
OBJECT_TYPE nvarchar(200) Jenis objek (Contoh: TABLE atau DATABASE).
OBJECT_NAME nvarchar(maks) Nama objek yang sepenuhnya memenuhi syarat. Lolos menggunakan karakter kutipan khusus backend.
OBJECT_LEAF_NAME nvarchar(maks) Nama objek yang tidak memenuhi syarat.
TABLE_LOCATION nvarchar(maks) String lokasi tabel yang valid yang dapat digunakan untuk pernyataan tersebut CREATE EXTERNAL TABLE . Apakah NULL jika tidak berlaku.

Izin

Memerlukan ALTER ANY EXTERNAL DATA SOURCE izin.

Keterangan

Instans SQL Server harus menginstal fitur PolyBase . Prosedur ini pertama kali diperkenalkan di SQL Server 2019 (15.x) CU 5.

Prosedur tersimpan ini mendukung konektor untuk:

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

Prosedur tersimpan tidak mendukung sumber data ODBC generik atau konektor Hadoop.

Gagasan kosong vs. tidak kosong berkaitan dengan perilaku driver ODBC dan fungsi SQLTables . Tidak kosong menunjukkan objek berisi tabel, bukan baris. Misalnya, skema kosong tidak berisi tabel di SQL Server. Database kosong berisi tanpa tabel di dalam Teradata.

Jenis objek ditentukan oleh driver ODBC sumber data eksternal. Setiap sumber data eksternal menentukan apa yang memenuhi syarat sebagai tabel. Ini dapat mencakup objek database seperti fungsi di Teradata, atau sinonim di Oracle. PolyBase tidak dapat tersambung ke beberapa objek ODBC sebagai tabel eksternal dan karenanya tidak akan memiliki nilai dalam TABLE_LOCATION kolom. Meskipun tidak adanya nilai dalam TABLE_LOCATION, kehadiran salah satu objek ODBC ini mungkin membuat database atau skema tidak kosong.

Gunakan sp_data_source_objects dan sp_data_source_table_columns untuk menemukan objek eksternal. Prosedur tersimpan sistem ini mengembalikan skema tabel yang tersedia untuk divirtualisasi. Gunakan sp_data_source_table_columns untuk menemukan skema tabel eksternal yang diwakili dalam jenis data SQL Server.

Tabel eksternal ke koleksi MongoDB yang berisi array

Gunakan sp_data_source_objects untuk mendeteksi skema koleksi (kolom) untuk koleksi MongoDB yang berisi array, dan buat tabel eksternal secara manual. Prosedur sp_data_source_table_columns tersimpan juga secara otomatis melakukan meratakan melalui Driver ODBC PolyBase untuk driver MongoDB.

Keterangan khusus jenis sumber data

  • Teradata: Tampilan sistem Teradata tidak menggunakan keamanan tingkat baris (RLS), sehingga pengguna dapat melihat keberadaan tabel yang tidak dapat mereka kueri.

  • MongoDB: Beberapa versi MongoDB yang lebih lama membatasi kemampuan untuk mencantumkan semua database ke pengguna seperti admin. Pengguna tanpa izin ini mungkin mendapatkan kesalahan autentikasi yang mencoba menjalankan prosedur ini dengan @object_root_name null.

  • Oracle: Sinonim Oracle tidak didukung untuk penggunaan dengan PolyBase.

Contoh

SQL Server

Contoh berikut mengembalikan semua database, skemata, dan tabel/tampilan

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]

Contoh berikut mengembalikan semua database

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

Contoh berikut mengembalikan semua skema dalam database

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

Contoh berikut mengembalikan semua tabel dalam skema

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

Contoh berikut mengembalikan skema dan tabel lengkap, fungsi, tampilan, dan lain-lain.

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

Contoh berikut mengembalikan semua database dan tabel, fungsi, tampilan, dan lain-lain.

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

Contoh berikut mengembalikan semua database dan tabel.

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]