OPENDATASOURCE (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Menyediakan informasi koneksi ad hoc sebagai bagian dari nama objek empat bagian tanpa menggunakan nama server tertaut.
Sintaks
OPENDATASOURCE ( 'provider_name', 'init_string' )
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 kata kunci-nilai 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 , OPENROWSET
OPENDATASOURCE
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. OPENDATASOURCE
tidak 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 Seattle1
jarak 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$] ;