2014-04-25 19 views
5

Trong SQL Server, như use <<DatabaseName>>, cách cung cấp lệnh use <<ServerName>> truy vấn?Trong SQL Server, như "sử dụng << DatabaseName >>", cách "sử dụng <<ServerName>>" Lệnh truy vấn

Nhấp chuột phải | Thay đổi kết nối phải được liên kết với một số lệnh. Phải không. Chỉ cần tò mò ..

+0

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? –

+0

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

+0

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. –

Trả lời

0

Theo như tôi biết không có bất kỳ cách nào để use ServerName trong SQL Server. Bạn có thể tạo một máy chủ được liên kết và chỉ định đó làm một phần của tên bảng.

Ví dụ:

SELECT id, name from MyLinkedServer.MyDBName.dbo.TableName 

Nếu đây là cái gì đó sẽ làm việc cho bạn hãy xem những bài viết này mà đi vào các máy chủ được liên kết trong chi tiết hơn:

3

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.

+1

Để thêm: Kết nối luôn đến máy chủ. một lệnh máy chủ người dùng sẽ làm gì - tạo một kết nối thứ hai và chuyển tiếp tất cả các lệnh và dữ liệu? đó sẽ là xấu. Viết lại kết nối hiện có một cách kỳ diệu - tại sao lại bận tâm? Không có nghĩa lý gì. SQL Server - copntrary với một số cơ sở dữ liệu khác - luôn xử lý các kết nối trên một máy chủ (instance), cơ sở dữ liệu chỉ là cơ sở dữ liệu "mặc định" cho một câu lệnh (bạn có thể thực thi SQL đối với cơ sở dữ liệu khác mà không cần sử dụng câu lệnh). – TomTom

1

Nếu bạn đang cố gắng chuyển đổi hoàn toàn các kết nối trong một tập lệnh và làm việc với kết nối mới thay vì chia sẻ dữ liệu giữa các kết nối, thì bạn có thể thực hiện điều này với chế độ SQLCMD. Điều này là cụ thể cho SQL Server Management Studio (SSMS) như là chế độ SQLCMD là chỉ thị cho SSMS và không phải cái gì mà cơ sở dữ liệu sẽ được thực thi.

Bạn có thể bật chế độ SQLCMD trên cơ sở mỗi phiên bằng cách đi tới trình đơn Truy vấn và chọn Chế độ SQLCMD. Khi chế độ SQLCMD được bật, bạn có thể thay đổi các kết nối được sử dụng :connect lệnh:

SELECT @@SERVERNAME AS [ServerName], DB_NAME() AS [DbName] 
GO 
:connect DifferentServerName 
SELECT @@SERVERNAME AS [ServerName], DB_NAME() AS [DbName] 

Ghi chú:

  • Nếu không sử dụng GO để tách các lô trong ví dụ trên, lệnh :connect sẽ mất có hiệu lực trước SELECT đầu tiên. Hãy chú thích số GO và chạy lại để xem hiệu ứng.
  • Khi sử dụng Chế độ SQLCMD, Intellisense sẽ không hoạt động.
  • Chế độ SQLCMD không thể được bật hoặc tắt theo chương trình, nhưng bạn có thể bật Chế độ SQLCMD cho tất cả các cửa sổ truy vấn mới bằng cách đi tới Công cụ | Tùy chọn | Thực hiện truy vấn và chọn hộp cho "Theo mặc định, mở truy vấn mới trong chế độ SQLCMD".
Các vấn đề liên quan