2011-12-13 29 views
11

Tôi đang viết một kịch bản sql cho sql server 2008, nơi tôi đặt một tuyên bố sử dụng ngay từ đầu mà xác định cơ sở dữ liệu kịch bản nên chạy chống lại:chỉ định máy chủ trong kịch bản sql

use [my_database] 

Như tôi đã có môi trường khác nhau nơi mà cùng một cơ sở dữ liệu tồn tại, ví dụ dev, qa, prod, có cách nào tôi có thể chỉ định trong kịch bản môi trường kịch bản cho, hoặc bằng tên máy chủ hoặc địa chỉ ip hoặc bởi bất kỳ cơ chế nào khác.

+0

Bạn đã bao giờ tìm thấy câu trả lời cho câu hỏi này chưa? Câu trả lời của @Filip De Vos có phù hợp với bạn không? –

Trả lời

1

Đó là cài đặt KẾT NỐI, không phải tham số trong tập lệnh.

Bạn có thể chạy cùng một kịch bản trong môi trường khác nhau thông qua tập tin batch hoặc kịch bản PowerShell nếu muốn, hoặc bạn có thể thiết lập máy chủ liên kết, nhưng bạn không thể chỉ nói

USE SomeOtherServer

Có an ninh và cũng có ý nghĩa về mạng.

0

Giả sử bạn sẽ chạy tất cả các tập lệnh này trên một máy chủ cụ thể - ví dụ: máy chủ Dev - sau đó bạn chỉ cần tạo Máy chủ được liên kết cho mỗi máy chủ khác.

Sau đó, ví dụ, bạn có thể chạy một thủ tục lưu trữ hệt tên trên mỗi máy chủ thusly:

EXEC MyDatabase.dbo.mysp_DoSomething --Dev Server; no server prefix needed since that's where we are 
EXEC QA.MyDatabase.dbo.mysp_DoSomething --QA Server 
EXEC Prod.MyDatabase.dbo.mysp_DoSomething --Prod server 

, vv

21

Bạn có thể đặt Management Studio SQL trong SQLCMD mode và chỉ định máy chủ với tuyên bố :CONNECT myserver.

Bạn có thể bật chế độ lệnh bằng cách nhấp vào tùy chọn trong pic dưới đây enter image description here

Kịch bản của bạn sau đó sẽ giống như thế này

:CONNECT devserver 
    use [my_database] 
    SELECT * FROM my_table 

Bạn thậm chí có thể làm cho các máy chủ chuyển đổi cửa sổ truy vấn trong thực hiện

:CONNECT devserver 
    use [my_database] 
    SELECT * FROM my_table 
    GO 
    :CONNECT uatserver 
    use [my_database] 
    SELECT * FROM my_table 

Để kết nối với một người dùng và mật khẩu cụ thể, bạn có thể chỉ định điều này như sau

:CONNECT devserver -U myUser -P myPassword 
    use [my_database] 
    SELECT * FROM my_table 

Thực tế có một số tùy chọn bạn có thể chỉ định cũng là documented on msdn.

+0

Có cách nào để thực hiện việc này và chỉ định tên người dùng và mật khẩu không? Tôi nhận được lỗi đăng nhập không thành công. –

+1

bạn có thể thực hiện ': CONNECT devserver -U user -P password'. Tôi sẽ thêm nó vào câu trả lời khi cập nhật của tôi ngừng báo lỗi. –

Các vấn đề liên quan