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
Azure SQL Managed Instance
Menyediakan informasi koneksi ad hoc sebagai bagian dari nama objek empat bagian tanpa menggunakan nama server tertaut.
Syntax
OPENDATASOURCE ( 'provider_name', 'init_string' )
Arguments
'provider_name'
Nama yang terdaftar sebagai PROGID penyedia OLE DB yang digunakan untuk mengakses sumber data. provider_name adalah jenis data karakter, tanpa nilai default.
Important
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'
String koneksi diteruskan ke antarmuka IDataInitialize dari penyedia tujuan. Sintaks string penyedia didasarkan pada pasangan kata kunci-nilai yang dipisahkan oleh titik koma, seperti: 'keyword1=value;keyword2=value'.
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 .
| Keyword | 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. |
| Location | DBPROP_INIT_LOCATION | Lokasi database yang akan disambungkan. |
| Properti yang Diperluas | DBPROP_INIT_PROVIDERSTRING | String koneksi khusus penyedia. |
| Waktu habis sambungan | DBPROP_INIT_TIMEOUT | Nilai waktu habis setelah koneksi mencoba gagal. |
| ID Pengguna | DBPROP_AUTH_USERID | ID pengguna yang akan digunakan untuk koneksi. |
| Password | DBPROP_AUTH_PASSWORD | Kata sandi yang akan digunakan untuk koneksi. |
| Catalog | DBPROP_INIT_CATALOG | Nama katalog awal atau default saat menyambungkan ke sumber data. |
| Keamanan Terintegrasi | DBPROP_AUTH_INTEGRATED | SSPI, untuk menentukan Autentikasi Windows |
Remarks
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. Dalam 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.
Important
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.
Permissions
Setiap pengguna dapat menjalankan OPENDATASOURCE. Izin yang digunakan untuk menyambungkan ke server jarak jauh ditentukan dari string koneksi.
Limitations
Tidak didukung dengan driver Microsoft Access Database Engine.
Examples
A. 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 AdventureWorks2025 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.
Note
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.
Important
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$] ;