Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Loại bỏ một máy chủ được liên kết trong SQL Server bằng T-SQL

Bài viết này cung cấp một ví dụ về việc sử dụng Transact-SQL để xóa máy chủ được liên kết trong SQL Server.

Để xóa một máy chủ được liên kết, hãy sử dụng sp_dropserver hệ thống lưu trữ thủ tục. Thao tác này sẽ xóa một máy chủ khỏi danh sách các máy chủ được liên kết và từ xa đã biết trên phiên bản cục bộ của SQL Server. Thủ tục được lưu trữ này chấp nhận hai đối số:tên máy chủ và đối số tùy chọn để xóa bất kỳ thông tin đăng nhập nào được liên kết với máy chủ.

Ví dụ 1 - Thả một máy chủ được liên kết và thông tin đăng nhập của nó

Dưới đây là ví dụ về việc loại bỏ một máy chủ được liên kết và tất cả thông tin đăng nhập được liên kết cho máy chủ được liên kết đó. Trong trường hợp này, máy chủ được liên kết được gọi là "Homer".

EXEC sp_dropserver 'Homer', 'droplogins';

Kết quả:

Commands completed successfully.

Như với bất kỳ thủ tục được lưu trữ nào, bạn cũng có thể bao gồm các tên đối số một cách rõ ràng. Tuy nhiên, điều này không thay đổi kết quả - máy chủ được liên kết bị loại bỏ cùng với các thông tin đăng nhập được liên kết của nó.

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

Kết quả:

Commands completed successfully.

Ví dụ 2 - Thả một máy chủ được liên kết mà không bỏ thông tin đăng nhập của nó

Như đã đề cập, droplogins đối số là tùy chọn. Bạn cũng có thể thả một máy chủ được liên kết như thế này:

EXEC sp_dropserver 'Homer';

Tuy nhiên, nếu có bất kỳ thông tin đăng nhập nào được liên kết với máy chủ được liên kết, bạn sẽ gặp lỗi sau:

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

Điều đó có nghĩa là bạn sẽ cần thêm droplogins đối số.

Bạn cũng sẽ gặp lỗi nếu máy chủ được liên kết được định cấu hình làm nhà xuất bản bản sao.

Một lần nữa, bạn có thể bao gồm tên của các đối số một cách rõ ràng nếu bạn muốn:

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

Kết quả:

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

Bạn sẽ không gặp lỗi nếu không có thông tin đăng nhập nào được liên kết với máy chủ được liên kết. Ví dụ:nếu bạn tạo một máy chủ được liên kết mà không sử dụng sp_addlinkedsrvlogin để thêm thông tin đăng nhập, bạn sẽ có thể thả máy chủ mà không cần sử dụng droplogins lý lẽ. Điều này đúng ngay cả khi ánh xạ được tạo giữa thông tin đăng nhập cục bộ của bạn và thông tin đăng nhập trên máy chủ từ xa.

Vì vậy, nếu máy chủ từ xa có thông tin đăng nhập được gọi là Marge và tôi chạy điều này trong thông tin đăng nhập Marge trên local máy chủ:

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

Một ánh xạ được tạo giữa Marge trên máy chủ cục bộ và Marge trên máy chủ được liên kết. Điều này có thể thực hiện được vì cả hai thông tin đăng nhập đều có cùng thông tin đăng nhập. Trong trường hợp này, không cần chạy sp_addlinkedsrvlogin để thêm Marge làm thông tin đăng nhập cho máy chủ được liên kết.

Tuy nhiên, nếu không có thông tin đăng nhập tương ứng cho Marge trên máy chủ được liên kết (hoặc nếu có, nhưng thông tin đăng nhập không khớp), việc ánh xạ sẽ không xảy ra và Marge sẽ không thể truy cập vào máy chủ được liên kết.

Dù bằng cách nào, chạy mã sau sẽ thành công:

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

Kết quả:

Commands completed successfully.

Quá trình này hoàn tất thành công đối với Marge, ngay cả khi có ánh xạ giữa thông tin đăng nhập cục bộ của cô ấy và máy chủ được liên kết (nhưng không có thông tin đăng nhập nào khác cho máy chủ được liên kết).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lấy DateTime nullable ra khỏi cơ sở dữ liệu

  2. Cách kiểm tra cài đặt ANSI_NULLS của phiên trong SQL Server

  3. Hướng dẫn hoàn chỉnh để sửa lỗi cơ sở dữ liệu SQL 5243

  4. SQL:phân tích cú pháp họ, tên đệm và họ từ trường tên đầy đủ

  5. SQL Server Deadlock là gì?