OPENDATASOURCE (Transact-SQL)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Managed Instance
Menyediakan informasi koneksi ad hoc sebagai bagian dari nama objek empat bagian tanpa menggunakan nama server yang ditautkan.
Sintaks
OPENDATASOURCE ( 'provider_name', 'init_string' )
Catatan
Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan 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
Penyedia Microsoft OLE DB sebelumnya untuk SQL Server (SQLOLEDB) dan penyedia SQL Server Native Client OLE DB (SQLNCLI) tetap tidak digunakan lagi dan tidak disarankan untuk menggunakan baik untuk pekerjaan pengembangan baru. Sebagai gantinya, gunakan Driver Microsoft OLE DB baru untuk SQL Server (MSOLEDBSQL) yang akan diperbarui dengan fitur server terbaru.
'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;kata kunci2=nilai'.
Untuk pasangan nilai kata kunci tertentu yang didukung pada penyedia, lihat SDK Microsoft Data Access. Dokumentasi ini mendefinisikan sintaks dasar. Tabel berikut ini 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 | Connect-string 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 tingkat lanjut Kueri Terdistribusi Ad Hoc diaktifkan. Ketika opsi ini tidak diatur, perilaku default tidak memungkinkan akses ad hoc.
Fungsi ini OPENDATASOURCE 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 nama tabel atau 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 SQL Server lain. 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 bila 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 yang ditautkan. 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 dari 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
A. Menggunakan OPENDATASOURCE dengan SELECT dan Driver SQL Server OLE DB
Contoh berikut menggunakan Driver Microsoft OLE DB untuk SQL Server untuk mengakses HumanResources.Department tabel dalam database AdventureWorks2012 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=AdventureWorks2016;TrustServerCertificate=Yes;Trusted_Connection=Yes;').HumanResources.Department
ORDER BY GroupName, Name;
B. Menggunakan OPENDATASOURCE dengan SELECT dan Penyedia SQL Server OLE DB
Contoh berikut membuat koneksi ad hoc ke Payroll instans SQL Server di server London, dan mengkueri AdventureWorks2012.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')
.AdventureWorks2012.HumanResources.Employee;
C. Menggunakan Penyedia Microsoft OLE DB untuk Jet
Contoh berikut membuat koneksi ad hoc ke spreadsheet 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$] ;
