Mengelola server tertaut

Halaman ini memberikan informasi tentang cara mengelola server tertaut pada instance Cloud SQL Anda, termasuk mendaftarkan instance, menambahkan server tertaut dan membuat kueri ke server tertaut tersebut.

Mendaftarkan instance untuk mengizinkan server tertaut

Untuk menambahkan cloudsql enable linked servers flag ke instance Anda, gunakan perintah berikut:

gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=on

Ganti INSTANCE_NAME dengan nama instance yang ingin Anda gunakan untuk menautkan server.

Untuk informasi selengkapnya, lihat mengonfigurasi flag database.

Menambahkan server tertaut

Untuk menambahkan server tertaut, jalankan perintah sp_addlinkedserver Transact-SQL:

EXEC master.dbo.sp_addlinkedserver
    @server = N'LINKED_SERVER_NAME',
    @srvproduct=N'',
    @provider=N'SQLNCLI',
    @datasrc=N'TARGET_SERVER_ID'

Ganti kode berikut:

  • LINKED_SERVER_NAME dengan nama server tertaut yang akan dibuat.
  • TARGET_SERVER_ID dengan nama jaringan, nama DNS, atau alamat IP untuk server tertaut. Untuk nama instance, gunakan format servername\instancename. Jika instance Anda menggunakan port non-standard, tambahkan nomor port tersebut. Misalnya, servername\instancename, 8080.

Untuk menambahkan pemetaan pengguna bagi pengguna yang saat ini sedang login, jalankan perintah berikut:

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @useself=N'True'

Ganti LINKED_SERVER_NAME dengan nama server tertaut.

Untuk membuat atau memperbarui login dan sandi jarak jauh, dan menerapkannya ke seluruh login lokal, jalankan perintah berikut:

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @useself=N'False',
    @locallogin=N'LOGIN',
    @rmtuser=N'USER_ID',
    @rmtpassword='PASSWORD';

Ganti kode berikut:

  • LINKED_SERVER_NAME dengan nama server tertaut.
  • LOGIN dengan login pada server lokal. locallogin adalah sysname, dengan default NULL. NULL menentukan bahwa entri ini berlaku untuk seluruh login lokal yang terhubung ke rmtsrvname. Jika bukan NULL, locallogin dapat berupa login SQL Server atau login Windows. Jika Anda menggunakan login Windows, login tersebut harus memiliki akses ke SQL Server baik secara langsung, ataupun melalui keanggotaan dalam grup Windows yang memiliki akses.
  • USER_ID dengan pengguna yang login.
  • PASSWORD dengan sandi pengguna.

Menambahkan server tertaut dengan koneksi terenkripsi

Untuk menambahkan server tertaut menggunakan koneksi terenkripsi, jalankan perintah sp_addlinkedserver Transact-SQL:

EXEC master.dbo.sp_addlinkedserver
    @server = N'LINKED_SERVER_NAME',
    @srvproduct=N'',
    @provider=N'SQLNCLI',
    @datasrc=N'TARGET_SERVER_ID,
    @provstr=N'Encrypt=yes;'

Ganti kode berikut:

  • LINKED_SERVER_NAME dengan nama server tertaut yang akan dibuat.
  • TARGET_SERVER_ID dengan nama server target, atau alamat IP dan nomor port pada server target.

Jika nama server berbeda dengan nama dalam sertifikat, Anda harus membuktikan bahwa SQL Server dapat memercayai sertifikat server. Untuk memperbarui string penyedia, jalankan perintah berikut:

EXEC master.dbo.sp_addlinkedserver
    @server = N'LINKED_SERVER_NAME',
    @srvproduct=N'',
    @provider=N'SQLNCLI',
    @datasrc=N'TARGET_SERVER_ID,
    @provstr=N'Encrypt=yes;TrustServerCertificate=yes;'

Ganti kode berikut:

  • LINKED_SERVER_NAME dengan nama server tertaut yang akan dibuat.
  • TARGET_SERVER_ID dengan nama server target, atau alamat IP dan nomor port pada server target.

Kueri server tertaut

Cloud SQL mendukung penggunaan nama empat bagian untuk melakukan kueri pada server tertaut (nama server, nama database, nama skema, dan nama objek),selain perintah berikut:

  • OPENQUERY menjalankan kueri pada server yang telah ditentukan.
  • MENYETUJUI memungkinkan Anda menjalankan SQL dinamis pada server tertaut.

Untuk informasi selengkapnya, lihat Membandingkan opsi eksekusi kueri jarak jauh.

Mengaktifkan remote procedure call pada server tertaut

Remote Procedure Call (RPC) memungkinkan Anda menjalankan prosedur yang telah tersimpan di server tertaut. Untuk menambahkan RPC, jalankan perintah sp_serveroption Transact-SQL dengan argumen RPC. Terdapat dua argumen RPC:

  • rpc mengaktifkan RPC dari server yang telah ditentukan.
  • rpc out mengaktifkan RPC ke server yang telah ditentukan.

Gunakan perintah sp_serveroption berikut dengan argumen rpc untuk mengaktifkan RPC dari LINKED_SERVER_NAME:

EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='rpc',
    @optvalue='TRUE'

Ganti LINKED_SERVER_NAME dengan nama server tertaut.

Gunakan perintah sp_serveroption berikut dengan argumen rpc out untuk mengaktifkan RPC:

EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='rpc out',
    @optvalue='TRUE'

Ganti LINKED_SERVER_NAME dengan nama server tertaut.

Menghapus pemetaan pengguna untuk server tertaut

Untuk menghapus pemetaan pengguna yang sebelumnya telah Anda tambahkan, jalankan perintah berikut:

EXEC master.dbo.sp_droplinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @locallogin=N'LOGIN';

Ganti kode berikut:

  • LINKED_SERVER_NAME dengan nama server tertaut yang akan dihilangkan.
  • LOGIN dengan login pada server lokal. locallogin adalah sysname, dengan default NULL. NULL menentukan bahwa entri ini berlaku untuk seluruh login lokal yang terhubung ke rmtsrvname. Jika bukan NULL, locallogin dapat berupa login SQL Server atau login Windows. Jika Anda menggunakan login Windows, login tersebut harus memiliki akses ke SQL Server baik secara langsung, ataupun melalui keanggotaan dalam grup Windows yang memiliki akses.

Menghapus instance yang telah terdaftar agar tidak mengizinkan server tertaut

Untuk menghapus server tertaut, lakukan langkah-langkah berikut:

  • Hapus server tertaut yang sudah ada dengan prosedur tersimpan sp_dropserver Transact-SQL.
  • Hapus flag cloudsql enable linked servers untuk menghapus instance yang telah terdaftar.

    gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=off

    Ganti INSTANCE_NAME dengan nama instance tempat Anda ingin menghapus server tertaut.

    Atau, Anda dapat menjalankan perintah berikut untuk menghapus seluruh flag database:

    gcloud sql instances patch INSTANCE_NAME --clear-database-flags

    Ganti INSTANCE_NAME dengan nama instance tempat Anda ingin menghapus server tertaut.

Memecahkan masalah

Pesan error Pemecahan masalah
Msg 7411, Level 16, State 1, Line 25

Server 'LINKED_SERVER_NAME' is not configured for DATA ACCESS.
Opsi DataAccess dinonaktifkan. Jalankan perintah berikut untuk mengaktifkan akses data:
EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='data access',
    @optvalue='TRUE'

Ganti LINKED_SERVER_NAME dengan nama server tertaut.

Access to the remote server is denied because no login-mapping exists. (Microsoft SQL Server, Error: 7416) Jika mengalami masalah ini saat membuat koneksi terenkripsi, Anda perlu mencoba cara lain yang menunjukkan ID pengguna saat sedang mengakses server tertaut. Untuk melakukannya, jalankan perintah berikut:
EXEC master.dbo.sp_addlinkedserver
   @server = N'LINKED_SERVER_NAME',
   @srvproduct= N'',
   @provider= N'SQLNCLI',
   @datasrc= N'TARGET_SERVER_ID',
   @provstr= N'Encrypt=yes;TrustServerCertificate=yes;User ID=USER_ID'

Ganti kode berikut:

  • LINKED_SERVER_NAME dengan nama server tertaut.
  • TARGET_SERVER_ID dengan nama server target, atau alamat IP dan nomor port untuk server target.
  • USER_ID dengan pengguna yang login.

Langkah berikutnya