Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Hapus Server Tertaut di SQL Server menggunakan T-SQL

Artikel ini memberikan contoh penggunaan Transact-SQL untuk menghapus server tertaut di SQL Server.

Untuk menghapus server tertaut, gunakan sp_dropserver prosedur tersimpan sistem. Ini menghapus server dari daftar server jauh dan tertaut yang dikenal pada contoh lokal SQL Server. Prosedur tersimpan ini menerima dua argumen:nama server, dan argumen opsional untuk menghapus semua login yang terkait dengan server.

Contoh 1 – Jatuhkan Server Tertaut dan Loginnya

Berikut adalah contoh menjatuhkan server tertaut dan semua login terkait untuk server tertaut itu. Dalam hal ini, server yang ditautkan disebut "Homer".

EXEC sp_dropserver 'Homer', 'droplogins';

Hasil:

Commands completed successfully.

Seperti halnya prosedur tersimpan, Anda juga dapat secara eksplisit menyertakan nama argumen. Ini tidak mengubah hasilnya – server tertaut dijatuhkan bersama dengan login terkaitnya.

EXEC sp_dropserver 
  @server = 'Homer', 
  @droplogins = 'droplogins';

Hasil:

Commands completed successfully.

Contoh 2 – Menjatuhkan Server Tertaut tanpa Membatalkan Loginnya

Seperti disebutkan, droplogins argumen adalah opsional. Anda juga dapat menjatuhkan server tertaut seperti ini:

EXEC sp_dropserver 'Homer';

Namun, jika ada login yang terkait dengan server tertaut, Anda akan mendapatkan kesalahan berikut:

Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 56
There are still remote logins or linked logins for the server 'Homer'.

Artinya Anda harus menambahkan droplogins argumen.

Anda juga akan mendapatkan kesalahan jika server tertaut dikonfigurasi sebagai penerbit replikasi.

Sekali lagi, Anda dapat secara eksplisit menyertakan nama argumen jika Anda mau:

EXEC sp_dropserver 
  @server = 'Homer', 
  @droplogins = NULL;

Hasil:

Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 56
There are still remote logins or linked logins for the server 'Homer'.

Anda tidak akan mendapatkan kesalahan jika tidak ada login yang terkait dengan server yang ditautkan. Misalnya, jika Anda membuat server tertaut tanpa menggunakan sp_addlinkedsrvlogin untuk menambahkan login, Anda dapat menjatuhkan server tanpa menggunakan droplogins argumen. Ini benar bahkan jika pemetaan dibuat antara login lokal Anda dan login di server jauh.

Jadi jika server jauh memiliki login bernama Marge, dan saya menjalankan ini di bawah login Marge di lokal server:

EXEC sp_addlinkedserver 
    @server=N'Homer', 
    @srvproduct=N'', 
    @provider=N'MSOLEDBSQL', 
    @datasrc=N'172.17.0.3,1433';

Pemetaan dibuat antara Marge di server lokal dan Marge di server tertaut. Ini dimungkinkan karena kedua login berbagi kredensial yang sama. Dalam hal ini, tidak perlu menjalankan sp_addlinkedsrvlogin untuk menambahkan Marge sebagai login untuk server tertaut.

Namun, jika tidak ada login yang sesuai untuk Marge di server tertaut (atau jika ada, tetapi kredensial tidak cocok), pemetaan tidak akan terjadi, dan Marge tidak akan dapat mengakses server tertaut.

Bagaimanapun, menjalankan kode berikut akan berhasil:

EXEC sp_dropserver 
  @server = 'Homer', 
  @droplogins = NULL;

Hasil:

Commands completed successfully.

Ini berhasil diselesaikan untuk Marge, bahkan ketika ada pemetaan antara login lokalnya dan server tertaut (tetapi tidak ada login lain untuk server tertaut).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghapus semua karakter non-abjad dari string di SQL Server?

  2. Cara Menghapus Spasi Putih Terkemuka di SQL Server – LTRIM ()

  3. SQL Server rekursif diri bergabung

  4. Menghapus Akun Email Database di SQL Server (T-SQL)

  5. Contoh sys.dm_sql_referenced_entities() SQL Server Mengembalikan Entitas yang Mereferensikan Server Tertaut