Sử dụng SQL Server 2008 R2 Phiên bản doanh nghiệp
Hãy xem xét các tuyên bố sau:
:setvar source_server_name "SERVERNAME\INSTANCENAME"
Có thể trong chế độ SQLCMD để có được giá trị đó bằng TSQL
Cái gì đó như: :setvar source_server_name = SELECT @@servername
Cảm ơn bạn
Cập nhật ngày 15/7/2013
Hai câu trả lời được cung cấp dưới đây không hoàn toàn mang lại kết quả mong muốn, vì vậy tôi đang thêm một giải pháp phù hợp hơn.
:setvar source_server_name [myserver]
Biến source_server_name được đặt thành chuỗi văn bản [myserver_1]
Tôi muốn có thể làm điều này:
create table #tmp(
id int identity(1,1),
server sysname
)
insert into #tmp values('myserver_1'),('myserver_2');
:setvar source_server_name = SELECT server FROM #tmp WHERE id = 1
select '$(source_server_name)'
(No column name)
myserver_1
Biến source_server_name sẽ được đặt thành giá trị trong máy chủ cho id 1.
Không phải là tôi biết, hoặc có thể tìm ra.
Những gì bạn yêu cầu là không thể thực hiện được, bởi vì các biến sqlcmd được khách hàng đánh giá trước khi sql được gửi đến máy chủ. Vì vậy, bạn đang yêu cầu máy chủ sql đặt giá trị của một biến mà nó không bao giờ nhìn thấy. Chạy theo dõi hồ sơ sql trên tập lệnh sql với các biến sqlcmd và bạn sẽ thấy tất cả chúng đã được đánh giá.
—
Tim Abell