Khi bạn kết nối với Sql Server, bạn đang kết nối với một cá thể máy chủ cụ thể. Một cá thể máy chủ có thể lưu trữ một số cơ sở dữ liệu khác nhau. Lệnh USE Database
cho phép bạn thông báo cho Sql Server biết cơ sở dữ liệu trong trường hợp đó để sử dụng.
Lệnh USE Server
tương ứng không có ý nghĩa. Các phiên bản máy chủ khác không được kết nối với hoặc một phần của cá thể này. Khi bạn kết nối với máy chủ này, bạn phải cung cấp thông tin xác thực có thể có hoặc không hợp lệ trên các máy chủ khác và các phương pháp xác thực tốt nhất đề nghị giữ lại các thông tin đó trong suốt phiên, nghĩa là không có cách nào để ủy quyền lại kết nối của bạn với một máy chủ.
Việc bạn có thể làm là tạo một máy chủ được liên kết, sử dụng quy trình sp_addlinkedserver. Sau đó, bạn phải bao gồm tên máy chủ như là một phần của tên bảng đủ điều kiện với mỗi truy vấn.
Nguồn
2014-04-25 16:01:26
Bạn đang cố gắng làm gì, chính xác? Đây có phải là vấn đề cho việc truy vấn nhiều máy chủ hoặc một vấn đề tự động hóa muốn có một thỏa thuận kịch bản với nhiều máy chủ, mặc dù trên cơ sở cá nhân? –
Phát âm lại câu hỏi: Trên cửa sổ Truy vấn mới, nhấp chuột phải | Thay đổi kết nối, liệt kê tất cả các máy chủ có sẵn để kết nối và có thể kết nối/thay đổi toàn bộ cửa sổ đến máy chủ cụ thể đó. Có bất kỳ lệnh SQL nào liên quan đến mục menu đó, như "sử dụng" hay không. –
Nara
Một lần nữa, _exactly_ là mục tiêu cuối cùng là gì? Để chạy các lệnh SQL từ một phiên làm việc trên mới? Hoặc chỉ lấy dữ liệu từ nó trong kết nối hiện tại của bạn? Bạn có muốn tự động hóa một cái gì đó với một kịch bản SQL không? 'USE ' hoạt động vì bạn được kết nối với một máy chủ và chuyển đổi cơ sở dữ liệu vẫn là cùng một kết nối và @@ SPID. Theo câu trả lời của tôi, bạn có thể sử dụng chế độ SQLCMD trong SSMS với lệnh ': connect' để thay đổi kết nối, nhưng đây không phải là lệnh SQL: nó chỉ hoạt động trong SSMS (trong chế độ SQLCMD) và thông qua SQLCMD.EXE. Nhưng biết _why_ bạn muốn làm điều này có thể giúp bạn có được câu trả lời rõ ràng hơn. –