OPENDATASOURCE (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Menyediakan informasi koneksi ad hoc sebagai bagian dari nama objek empat bagian tanpa menggunakan nama server tertaut.

Konvensi sintaks transact-SQL

Sintaksis

OPENDATASOURCE ( 'provider_name', 'init_string' )  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

'provider_name'

Adalah nama yang terdaftar sebagai PROGID penyedia OLE DB yang digunakan untuk mengakses sumber data. provider_name adalah jenis data karakter, tanpa nilai default.

Penting

SQL Server Native Client (sering disingkat SNAC) telah dihapus dari SQL Server 2022 (16.x) dan SQL Server Management Studio 19 (SSMS). Penyedia SQL Server Native Client OLE DB (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak direkomendasikan untuk pengembangan baru. Beralih ke Microsoft OLE DB Driver (MSOLEDBSQL) baru untuk SQL Server ke depannya.

'init_string'

Apakah string koneksi diteruskan ke antarmuka IDataInitialize dari penyedia tujuan. Sintaks string penyedia didasarkan pada pasangan nilai kata kunci yang dipisahkan oleh titik koma, seperti: 'kata kunci1=nilai;nilai kata kunci2='.

Untuk pasangan nilai kata kunci tertentu yang didukung pada penyedia, lihat Microsoft Data Access SDK. Dokumentasi ini mendefinisikan sintaks dasar. Tabel berikut mencantumkan kata kunci yang paling sering digunakan dalam argumen init_string .

Kata kunci Properti OLE DB Nilai dan deskripsi yang valid
Sumber data DBPROP_INIT_DATASOURCE Nama sumber data yang akan disambungkan. Penyedia yang berbeda menafsirkan ini dengan cara yang berbeda. Untuk penyedia SQL Server Native Client OLE DB, ini menunjukkan nama server. Untuk penyedia Jet OLE DB, ini menunjukkan jalur lengkap file .mdb atau file .xls.
Lokasi DBPROP_INIT_LOCATION Lokasi database yang akan disambungkan.
Properti yang Diperluas DBPROP_INIT_PROVIDERSTRING String koneksi khusus penyedia.
Batas waktu koneksi DBPROP_INIT_TIMEOUT Nilai waktu habis setelah koneksi mencoba gagal.
Id Pengguna DBPROP_AUTH_USERID ID pengguna yang akan digunakan untuk koneksi.
Kata sandi DBPROP_AUTH_PASSWORD Kata sandi yang akan digunakan untuk koneksi.
Katalog DBPROP_INIT_CATALOG Nama katalog awal atau default saat menyambungkan ke sumber data.
Keamanan Terintegrasi DBPROP_AUTH_INTEGRATED SSPI, untuk menentukan Autentikasi Windows

Keterangan

OPENROWSET selalu mewarisi kolase instans, terlepas dari kolase yang ditetapkan untuk kolom.

OPENDATASOURCE dapat digunakan untuk mengakses data jarak jauh dari sumber data OLE DB hanya ketika opsi registri DisallowAdhocAccess secara eksplisit diatur ke 0 untuk penyedia yang ditentukan, dan opsi konfigurasi lanjutan Kueri Terdistribusi Ad Hoc diaktifkan. Ketika opsi ini tidak diatur, perilaku default tidak memungkinkan akses ad hoc.

Fungsi OPENDATASOURCE ini dapat digunakan di lokasi sintaks Transact-SQL yang sama dengan nama server tertaut. Oleh karena itu, OPENDATASOURCE dapat digunakan sebagai bagian pertama dari nama empat bagian yang mengacu pada tabel atau nama tampilan dalam pernyataan SELECT, INSERT, UPDATE, atau DELETE, atau ke prosedur tersimpan jarak jauh dalam pernyataan EXECUTE. Saat menjalankan prosedur tersimpan jarak jauh, OPENDATASOURCE harus merujuk ke instans lain dari SQL Server. OPENDATASOURCE tidak menerima variabel untuk argumennya.

Seperti fungsi , OPENROWSETOPENDATASOURCE seharusnya hanya mereferensikan sumber data OLE DB yang jarang diakses. Tentukan server tertaut untuk sumber data apa pun yang diakses lebih dari beberapa kali. BAIK OPENDATASOURCE maupun OPENROWSET tidak menyediakan semua fungsionalitas definisi server tertaut, seperti manajemen keamanan dan kemampuan untuk mengkueri informasi katalog. Semua informasi koneksi, termasuk kata sandi, harus disediakan setiap kali OPENDATASOURCE dipanggil.

Penting

Autentikasi Windows jauh lebih aman daripada Autentikasi SQL Server. Anda harus menggunakan Autentikasi Windows jika memungkinkan. OPENDATASOURCEtidak boleh digunakan dengan kata sandi eksplisit dalam string koneksi.

Persyaratan koneksi untuk setiap penyedia mirip dengan persyaratan untuk parameter tersebut saat membuat server tertaut. Detail untuk banyak penyedia umum tercantum dalam artikel sp_addlinkedserver (Transact-SQL).

Setiap panggilan ke OPENDATASOURCE, OPENQUERY, atau OPENROWSET dalam FROM klausul dievaluasi secara terpisah dan independen dari panggilan apa pun ke fungsi-fungsi ini yang digunakan sebagai target pembaruan, bahkan jika argumen identik diberikan ke dua panggilan. Secara khusus, kondisi filter atau gabungan yang diterapkan pada hasil salah satu panggilan tersebut tidak berpengaruh pada hasil yang lain.

Izin

Setiap pengguna dapat menjalankan OPENDATASOURCE. Izin yang digunakan untuk menyambungkan ke server jarak jauh ditentukan dari string koneksi.

Contoh

J. Menggunakan OPENDATASOURCE dengan SELECT dan Driver OLE DB SQL Server

Contoh berikut menggunakan Driver Microsoft OLE DB untuk SQL Server untuk mengakses HumanResources.Department tabel dalam AdventureWorks2022 database di server Seattle1jarak jauh . Pernyataan SELECT digunakan untuk menentukan kumpulan baris yang dikembalikan. String penyedia berisi Server kata kunci dan Trusted_Connection . Kata kunci ini dikenali oleh Driver SQL Server OLE DB.

SELECT GroupName, Name, DepartmentID  
FROM OPENDATASOURCE('MSOLEDBSQL', 'Server=Seattle1;Database=AdventureWorks2022;TrustServerCertificate=Yes;Trusted_Connection=Yes;').HumanResources.Department  
ORDER BY GroupName, Name;  

B. Menggunakan OPENDATASOURCE dengan SELECT dan Penyedia OLE DB SQL Server

Contoh berikut membuat koneksi ad hoc ke Payroll instans SQL Server di server London, dan mengkueri AdventureWorks2022.HumanResources.Employee tabel.

Catatan

Menggunakan SQLNCLI akan mengalihkan SQL Server ke versi terbaru Penyedia OLE DB SQL Server Native Client. Penyedia OLE DB diharapkan terdaftar dengan PROGID yang ditentukan dalam registri.

Penting

Penyedia SQL Server Native Client OLE DB (SQLNCLI) tetap tidak digunakan lagi dan tidak disarankan untuk menggunakannya untuk pekerjaan pengembangan baru. Sebagai gantinya, gunakan Driver Microsoft OLE DB baru untuk SQL Server (MSOLEDBSQL) yang akan diperbarui dengan fitur server terbaru.

SELECT *  
FROM OPENDATASOURCE('SQLNCLI',  
    'Data Source=London\Payroll;Integrated Security=SSPI')  
    .AdventureWorks2022.HumanResources.Employee;  

C. Menggunakan Penyedia Microsoft OLE DB untuk Jet

Contoh berikut membuat koneksi ad hoc ke lembar bentang Excel dalam format 1997 - 2003.

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',  
    'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;  

Langkah berikutnya