Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2019 (15.x)
Mengembalikan daftar objek tabel yang tersedia untuk divirtualisasi.
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] |