Bagikan melalui


sp_data_source_objects (T-SQL)

Berlaku untuk: SQL Server 2019 (15.x)

Mengembalikan daftar objek tabel yang tersedia untuk divirtualisasi.

Sintaks

Konvensi sintaks transact-SQL

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

Argumen

[ @data_source = ] 'data_source'

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

[ @object_root_name = ] 'object_root_name'

Parameter ini adalah akar nama 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 kami cari. @max_search_depth adalah int 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_depth NULL mengembalikan informasi tentang @object_root_name jika ada dan tidak kosong, dalam kasus katalog atau skema.

[ @search_options = ] 'search_options'

Parameternya search_options adalah nvarchar(max) dengan default NULL.

Parameter ini tidak digunakan tetapi mungkin diimplementasikan di masa mendatang.

Tataan hasil

Nama kolom Jenis data Deskripsi
OBJECT_TYPE nvarchar(200) Jenis objek (Contoh: TABEL 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 valid yang dapat digunakan untuk pernyataan CREATE EXTERNAL TABLE. Apakah NULL jika tidak berlaku.

Izin

Memerlukan izin UBAH SUMBER DATA EKSTERNAL APA PUN.

Keterangan

Instans SQL Server harus menginstal fitur PolyBase . Prosedur ini pertama kali diperkenalkan di SQL Server 2019 CU5.

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. Azure Data Studio menggunakan dua prosedur tersimpan ini untuk mendukung virtualisasi data. 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

Untuk membuat tabel eksternal ke koleksi MongoDB yang berisi array, Anda harus menggunakan ekstensi Virtualisasi Data untuk Azure Data Studio untuk menghasilkan pernyataan CREATE EXTERNAL TABLE, berdasarkan skema yang terdeteksi oleh PolyBase ODBC Driver for MongoDB. Tindakan meratakan secara otomatis dilakukan oleh driver. Atau, Anda dapat menggunakan sp_data_source_objects untuk mendeteksi skema koleksi (kolom) dan membuat tabel eksternal secara manual. Prosedur sp_data_source_table_columns tersimpan juga secara otomatis melakukan meratakan melalui Driver ODBC PolyBase untuk driver MongoDB. Ekstensi Virtualisasi Data untuk Azure Data Studio dan sp_data_source_table_columns gunakan prosedur tersimpan internal yang sama untuk mengkueri skema eksternal.

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 sebelumnya 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 SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name NVARCHAR(MAX) = NULL;
DECLARE @max_search_depth INT = 3;

EXEC 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 SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name NVARCHAR(MAX) = NULL;

EXEC 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 SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name NVARCHAR(MAX) = N'[database]';

EXEC 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 SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name NVARCHAR(MAX) = N'[database].[dbo]';

EXEC 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 SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name NVARCHAR(MAX) = N'[OracleObjectRoot]';
DECLARE @max_search_depth INT = 2;

EXEC 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 SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name NVARCHAR(MAX) = NULL;
DECLARE @max_search_depth INT = 2;

EXEC 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

Contoh berikut mengembalikan semua database dan tabel.

DECLARE @data_source SYSNAME = N'ExternalDataSourceName';
DECLARE @object_root_name NVARCHAR(MAX) = NULL;
DECLARE @max_search_depth INT = 2;

EXEC 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]