Membuat server tertaut (Mesin Database SQL Server)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Managed Instance

Artikel ini memperlihatkan cara membuat server tertaut dan mengakses data dari SQL Server lain, Azure SQL Managed Instance, atau sumber data lain dengan menggunakan SQL Server Management Studio (SSMS) atau Transact-SQL. Server tertaut memungkinkan mesin database SQL Server dan Azure SQL Managed Instance untuk membaca data dari sumber data jarak jauh dan menjalankan perintah terhadap server database jarak jauh (misalnya, sumber data OLE DB) di luar instans SQL Server.

Latar belakang

Server tertaut biasanya dikonfigurasi untuk memungkinkan mesin database menjalankan pernyataan Transact-SQL yang menyertakan tabel dalam instans lain SQL Server, atau produk database lain seperti Oracle. Banyak jenis sumber data dapat dikonfigurasi sebagai server tertaut, termasuk penyedia database pihak ketiga dan Azure Cosmos DB.

Setelah server tertaut dibuat, kueri terdistribusi dapat dijalankan terhadap server ini, dan kueri dapat menggabungkan tabel dari lebih dari satu sumber data. Jika server tertaut didefinisikan sebagai instans SQL Server atau Azure SQL Managed Instance, prosedur tersimpan jarak jauh dapat dijalankan.

Kemampuan dan argumen yang diperlukan dari server yang ditautkan dapat bervariasi secara signifikan. Contoh dalam artikel ini memberikan contoh umum tetapi semua opsi tidak dijelaskan. Untuk informasi selengkapnya, lihat sp_addlinkedserver (Transact-SQL).

Izin

Saat menggunakan pernyataan Transact-SQL, memerlukan izin UBAH SERVER TERTAUT APA PUN di server atau keanggotaan dalam peran server tetap setupadmin . Saat menggunakan Management Studio memerlukan izin ATAU keanggotaan CONTROL SERVER dalam peran server tetap sysadmin .

Membuat server tertaut dengan SQL Server Management Directory

Buat server tertaut dengan SQL Server Management Directory menggunakan prosedur berikut:

Buka dialog Server Tertaut Baru

Di SQL Server Management Studio (SSMS):

  • Buka Object Explorer.
  • Perluas Objek Server.
  • Klik kanan Server Tertaut.
  • Pilih Server Tertaut Baru.

Edit halaman Umum untuk properti server yang ditautkan

Pada halaman Umum , dalam kotak Server tertaut , ketik nama instans SQL Server yang Anda tautkan areanya.

Catatan

Jika instans SQL Server adalah instans default, masukkan nama komputer yang menghosting instans SQL Server. Jika SQL Server adalah instans bernama, masukkan nama komputer dan nama instans, seperti Accounting\SQLExpress.

Tentukan Jenis server dan informasi terkait jika diperlukan:

  • SQL Server
    Identifikasi server yang ditautkan sebagai instans Microsoft SQL Server atau Azure SQL Managed Instance. Jika Anda menggunakan metode ini untuk mendefinisikan server tertaut, nama yang ditentukan di Server tertaut harus menjadi nama jaringan server. Selain itu, tabel apa pun yang diambil dari server berasal dari database default yang ditentukan untuk login di server yang ditautkan.

  • Sumber data lainnya
    Tentukan jenis server OLE DB selain SQL Server. Mengklik opsi ini akan mengaktifkan opsi di bawahnya.

    • Penyedia
      Pilih sumber data OLE DB dari kotak daftar. Penyedia OLE DB terdaftar dengan PROGID yang diberikan dalam registri.

    • Nama produk
      Ketik nama produk sumber data OLE DB untuk ditambahkan sebagai server tertaut.

    • Sumber Data
      Ketik nama sumber data seperti yang ditafsirkan oleh penyedia OLE DB. Jika Anda menyambungkan ke instans SQL Server, berikan nama instans.

    • String penyedia
      Ketik pengidentifikasi terprogram unik (PROGID) penyedia OLE DB yang sesuai dengan sumber data. Untuk contoh string penyedia yang valid, lihat sp_addlinkedserver (Transact-SQL).

    • Lokasi
      Ketik lokasi database seperti yang ditafsirkan oleh penyedia OLE DB.

    • Katalog
      Ketik nama katalog yang akan digunakan saat membuat koneksi ke penyedia OLE DB.

Edit halaman Keamanan untuk properti server yang ditautkan

Pada halaman Keamanan , tentukan konteks keamanan yang akan digunakan saat instans asli tersambung ke server yang ditautkan. Ada dua strategi untuk dikonfigurasi di sini yang dapat digunakan sendiri atau digabungkan. Yang pertama adalah memetakan login dari server lokal ke server jarak jauh, dan yang kedua adalah bagaimana server yang ditautkan harus memperlakukan login yang tidak dipetakan.

Menambahkan pemetaan login

Anda dapat secara opsional menentukan bagaimana login server lokal tertentu akan mengautentikasi menggunakan server yang ditautkan.

Di bawah Login server lokal ke pemetaan masuk server jarak jauh, ulangi proses berikut untuk setiap login yang ingin Anda petakan:

  • Pilih Tambahkan.

  • Tentukan Login lokal.

    Tentukan login lokal yang dapat tersambung ke server tertaut. Login lokal dapat berupa login menggunakan Autentikasi SQL Server atau login Autentikasi Windows. Menggunakan grup Windows tidak didukung. Gunakan daftar ini untuk membatasi koneksi ke login tertentu, atau untuk mengizinkan beberapa login terhubung sebagai login yang berbeda.

Catatan

Masalah umum dengan server tertaut menggunakan Autentikasi Windows ke instans SQL Server jarak jauh muncul dari masalah dengan nama prinsipal layanan (SPN). Untuk informasi selengkapnya, lihat Dukungan Nama Prinsipal Layanan (SPN) di Koneksi Klien. Microsoft Kerberos Configuration Manager untuk SQL Server adalah alat diagnostik yang membantu memecahkan masalah konektivitas terkait Kerberos dengan SQL Server. Untuk informasi selengkapnya, lihat Microsoft Kerberos Configuration Manager untuk SQL Server.

  • Pilih Impersonate (opsional) .

    Teruskan nama pengguna dan kata sandi dari login lokal ke server yang ditautkan. Untuk Autentikasi SQL Server, login dengan nama dan kata sandi yang sama persis harus ada di server jarak jauh. Untuk login Windows, login harus berupa login yang valid di server yang ditautkan.

    Untuk menggunakan peniruan identitas, konfigurasi harus memenuhi persyaratan untuk delegasi.

  • Tentukan Pengguna Jarak Jauh jika Anda tidak menggunakan peniruan identitas.

    Gunakan pengguna jarak jauh untuk memetakan pengguna yang ditentukan dalam Login lokal. Pengguna Jarak Jauh harus merupakan login Autentikasi SQL Server di server jarak jauh.

  • Tentukan Kata Sandi Jarak Jauh jika Anda tidak menggunakan peniruan identitas.

    • Tentukan kata sandi Pengguna Jarak Jauh.

Pilih Hapus untuk menghapus login lokal yang ada, jika diinginkan.

Tentukan konteks keamanan default untuk login yang tidak ada dalam daftar pemetaan

Di lingkungan domain tempat pengguna terhubung dengan menggunakan login domain mereka, memilih Dibuat menggunakan konteks keamanan login saat ini sering kali merupakan pilihan terbaik. Ketika pengguna terhubung ke SQL Server asli dengan menggunakan login SQL Server , pilihan terbaik sering kali adalah memilih Dengan menggunakan konteks keamanan ini, lalu memberikan kredensial yang diperlukan untuk mengautentikasi di server yang ditautkan.

Pilih salah satu opsi berikut ini:

  • Tidak dibuat
    Koneksi tidak akan dibuat untuk masuk yang tidak ditentukan dalam daftar.

  • Dibuat tanpa menggunakan konteks keamanan
    Koneksi akan dibuat tanpa menggunakan konteks keamanan untuk masuk yang tidak ditentukan dalam daftar.

  • Dibuat menggunakan konteks keamanan login saat ini
    Koneksi akan dibuat menggunakan konteks keamanan login saat ini untuk masuk yang tidak ditentukan dalam daftar. Jika tersambung ke server lokal menggunakan Autentikasi Windows, kredensial Windows Anda akan digunakan untuk menyambungkan ke server jarak jauh. Jika tersambung ke server lokal menggunakan Autentikasi SQL Server, nama login dan kata sandi akan digunakan untuk menyambungkan ke server jarak jauh. Dalam hal ini, login dengan nama dan kata sandi yang sama persis harus ada di server jarak jauh.

  • Dibuat menggunakan konteks keamanan ini
    Koneksi akan dibuat menggunakan login dan kata sandi yang ditentukan dalam kotak Masuk jarak jauh dan Dengan kata sandi untuk login yang tidak ditentukan dalam daftar. Login jarak jauh harus berupa login Autentikasi SQL Server di server jarak jauh.

Edit halaman Opsi Server di properti server tertaut (opsional)

Untuk melihat atau menentukan opsi server, pilih halaman Opsi Server . Anda bisa mengedit salah satu opsi berikut:

  • Kompatibel Kolaborasi
    Mempengaruhi eksekusi Kueri Terdistribusi terhadap server yang ditautkan. Jika opsi ini diatur ke true, SQL Server mengasumsikan bahwa semua karakter di server yang ditautkan kompatibel dengan server lokal, sehubungan dengan kumpulan karakter dan urutan kolase (atau urutan pengurutan). Ini memungkinkan SQL Server untuk mengirim perbandingan pada kolom karakter ke penyedia. Jika opsi ini tidak diatur, SQL Server selalu mengevaluasi perbandingan pada kolom karakter secara lokal.

    Opsi ini harus diatur hanya jika yakin bahwa sumber data yang sesuai dengan server yang ditautkan memiliki kumpulan karakter dan urutan sortir yang sama dengan server lokal.

  • Akses Data
    Mengaktifkan dan menonaktifkan server tertaut untuk akses kueri terdistribusi.

  • RPC
    Mengaktifkan panggilan prosedur jarak jauh (RPC) dari server yang ditentukan.

  • RPC Keluar
    Mengaktifkan RPC ke server yang ditentukan.

  • Gunakan Kolajeasi Jarak Jauh
    Menentukan apakah kolase kolom jarak jauh atau server lokal akan digunakan.

    Jika true, kolake kolom jarak jauh digunakan untuk sumber data SQL Server, dan kolab yang ditentukan dalam nama kolab digunakan untuk sumber data non-SQL Server.

    Jika false, kueri terdistribusi akan selalu menggunakan kolase default server lokal, sementara nama kolase dan kolase kolom jarak jauh diabaikan. Defaultnya adalah false.

  • Nama Kolajek
    Menentukan nama kolajeasi yang digunakan oleh sumber data jarak jauh jika penggunaan kolab jarak jauh benar dan sumber data bukan sumber data SQL Server. Nama harus menjadi salah satu kolase yang didukung oleh SQL Server.

    Gunakan opsi ini saat mengakses sumber data OLE DB selain SQL Server, tetapi kolajeasinya cocok dengan salah satu kolae SQL Server.

    Server yang ditautkan harus mendukung satu kolase yang akan digunakan untuk semua kolom di server tersebut. Jangan atur opsi ini jika server tertaut mendukung beberapa kolase dalam satu sumber data, atau jika kolase server yang ditautkan tidak dapat ditentukan untuk mencocokkan salah satu kolase SQL Server.

  • Batas Waktu Koneksi
    Nilai waktu habis dalam hitungan detik untuk menyambungkan ke server yang ditautkan.

    Jika 0, gunakan sp_configure nilai opsi batas waktu masuk jarak jauh default.

  • Waktu Habis Kueri
    Nilai batas waktu dalam detik untuk kueri terhadap server yang ditautkan.

    Jika 0, gunakan sp_configure nilai opsi batas waktu kueri jarak jauh default.

  • Aktifkan Promosi Transaksi Terdistribusi
    Gunakan opsi ini untuk melindungi tindakan prosedur server-ke-server melalui transaksi Koordinator Transaksi Terdistribusi Microsoft (MS DTC). Ketika opsi ini TRUE, memanggil prosedur tersimpan jarak jauh memulai transaksi terdistribusi dan mendaftarkan transaksi dengan MS DTC. Untuk informasi selengkapnya, lihat sp_serveroption (Transact-SQL).

Simpan server yang ditautkan

PilihOK.

Menampilkan atau mengedit opsi penyedia server tertaut di SQL Server Management Directory

Semua penyedia tidak memiliki opsi yang sama yang tersedia. Misalnya, beberapa jenis data memiliki indeks yang tersedia dan beberapa mungkin tidak. Gunakan kotak dialog ini untuk membantu SQL Server memahami kemampuan penyedia. SQL Server menginstal beberapa penyedia data umum, namun ketika produk yang menyediakan perubahan data, penyedia yang diinstal oleh SQL Server mungkin tidak mendukung semua fitur terbaru. Sumber informasi terbaik tentang kemampuan produk yang menyediakan data adalah dokumentasi untuk produk tersebut.
Untuk membuka halaman Opsi Penyedia server tertaut di SQL Server Management Studio:

  • Buka Object Explorer.
  • Perluas Objek Server.
  • Perluas Server Tertaut.
  • Perluas Penyedia.
  • Klik kanan penyedia dan pilih Properti.

Opsi penyedia didefinisikan sebagai berikut:

  • Parameter dinamis
    Menunjukkan bahwa penyedia mengizinkan sintaks penanda parameter '?' untuk kueri berparameter. Atur opsi ini hanya jika penyedia mendukung antarmuka ICommandWithParameters dan mendukung '?' sebagai penanda parameter. Mengatur opsi ini memungkinkan SQL Server untuk menjalankan kueri parameter terhadap penyedia. Kemampuan untuk menjalankan kueri berparameter terhadap penyedia dapat menghasilkan performa yang lebih baik untuk kueri tertentu.

  • Kueri bertingkat
    Menunjukkan bahwa penyedia mengizinkan pernyataan berlapis SELECT dalam klausa FROM. Mengatur opsi ini memungkinkan SQL Server mendelegasikan kueri tertentu ke penyedia yang memerlukan pernyataan SELECT berlapis dalam klausa FROM.

  • Tingkat nol saja
    Hanya antarmuka OLE DB tingkat 0 yang dipanggil terhadap penyedia.

  • Perbolehkan proses

    SQL Server memungkinkan penyedia untuk diinstansiasi sebagai server dalam proses. Ketika opsi ini tidak diatur, perilaku default adalah membuat instans penyedia di luar proses SQL Server. Membuat instans penyedia di luar proses SQL Server melindungi proses SQL Server dari kesalahan di penyedia. Ketika penyedia dibuat di luar proses SQL Server, pembaruan atau penyisipan yang mereferensikan kolom panjang (teks, ntext, atau gambar) tidak diizinkan.

  • Pembaruan yang tidak ditransaksikan
    SQL Server memungkinkan pembaruan, bahkan jika ITransactionLocal tidak tersedia. Jika opsi ini diaktifkan, pembaruan terhadap penyedia tidak dapat dipulihkan, karena penyedia tidak mendukung transaksi.

  • Indeks sebagai jalur akses
    SQL Server mencoba menggunakan indeks penyedia untuk mengambil data. Secara default, indeks hanya digunakan untuk metadata dan tidak pernah dibuka

  • Melarang akses ad hoc
    SQL Server tidak mengizinkan akses ad hoc melalui fungsi OPENROWSET dan OPENDATASOURCE terhadap penyedia OLE DB. Ketika opsi ini tidak diatur, SQL Server juga tidak mengizinkan akses ad hoc.

  • Mendukung operator 'Like'
    Menunjukkan bahwa penyedia mendukung kueri menggunakan kata kunci LIKE.

Membuat server tertaut dengan Transact-SQL

Untuk membuat server tertaut dengan menggunakan Transact-SQL, gunakan pernyataan sp_addlinkedserver (Transact-SQL),CREATE LOGIN (Transact-SQL), dan sp_addlinkedsrvlogin (Transact-SQL).

Contoh ini membuat server tertaut ke instans SQL Server lain menggunakan Transact-SQL:

  1. Di Editor Kueri, masukkan perintah Transact-SQL berikut untuk menautkan ke instans SQL Server bernama SRVR002\ACCTG:

    USE [master]  
    GO  
    EXEC master.dbo.sp_addlinkedserver   
        @server = N'SRVR002\ACCTG',   
        @srvproduct=N'SQL Server';  
    GO  
    
    
  2. Jalankan kode berikut untuk mengonfigurasi server yang ditautkan untuk menggunakan kredensial domain login yang menggunakan server tertaut.

    EXEC master.dbo.sp_addlinkedsrvlogin   
        @rmtsrvname = N'SRVR002\ACCTG',   
        @locallogin = NULL ,   
        @useself = N'True';  
    GO  
    

Tindak Lanjut: Langkah-langkah yang harus dilakukan setelah Anda membuat server tertaut

Langkah-langkah berikut membantu Anda memvalidasi server tertaut.

Menguji server tertaut

Mempertimbangkan salah satu dari dua pendekatan berikut untuk menguji autentikasi server yang ditautkan dalam konteks keamanan Anda saat ini.

  • Untuk menguji kemampuan untuk menyambungkan ke server tertaut di SQL Server Management Studio, telusuri ke server yang ditautkan di Object Explorer, klik kanan server yang ditautkan lalu pilih Uji Koneksi.

  • Untuk menguji kemampuan untuk terhubung ke server yang ditautkan di T-SQL, jalankan pernyataan SELECT sederhana, misalnya, untuk mengambil informasi katalog database dasar. Contoh ini mengembalikan nama database di server yang ditautkan.

    SELECT name FROM [SRVR002\ACCTG].master.sys.databases;  
    GO  
    
    

Menggabungkan tabel dari server tertaut

Gunakan nama empat bagian untuk merujuk ke objek di server yang ditautkan. Jalankan kode berikut untuk mengembalikan daftar semua login di server lokal dan login yang cocok di server yang ditautkan.

SELECT local.name AS LocalLogins, linked.name AS LinkedLogins  
FROM master.sys.server_principals AS local  
LEFT JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked  
     ON local.name = linked.name;  
GO  

Ketika NULL dikembalikan untuk login server yang ditautkan, itu menunjukkan bahwa login tidak ada di server yang ditautkan. Login ini tidak akan dapat menggunakan server tertaut kecuali server yang ditautkan dikonfigurasi untuk melewati konteks keamanan yang berbeda atau server yang ditautkan menerima koneksi anonim.

Server tertaut dengan Azure SQL Managed Instance

Jika Anda menggunakan Azure SQL Managed Instance, lihat contoh berikut dari sp_addlinkedserver (Transact-SQL):

Langkah berikutnya

Pelajari selengkapnya tentang mengelola server tertaut di artikel ini: