SQLCMD modunda değişkenleri ayarlama


13

SQL Server 2008 R2 Enterprise Edition'ı kullanma

Aşağıdaki ifadeyi düşünün:

:setvar source_server_name "SERVERNAME\INSTANCENAME"

SQLCMD modunda TSQL kullanarak bu değeri elde etmek mümkün mü

Gibi bir şey: :setvar source_server_name = SELECT @@servername

teşekkür ederim

Güncelleme 15.07.2013

Aşağıda sunulan iki cevap istenen sonucu vermedi, bu yüzden daha alakalı bir inceleme ekliyorum.

:setvar source_server_name [myserver]

Source_server_name değişkeni [myserver_1] metin dizesine ayarlandı

Bunu yapabilmek istiyorum:

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

Source_server_name değişkeni, kimlik 1 için sunucudaki değere ayarlanır.


Farkında olduğumdan ya da anlayabildiğimden değil.

1
Sqlcmd değişkenleri istemci tarafından, sql sunucuya gönderilmeden önce müşteri tarafından değerlendirildiğinden, sizin için ne istediğinizi mümkün değildir. Bu yüzden sql sunucusunun hiç görmediği bir değişkenin değerini ayarlamasını istiyorsunuz. Sqlcmd değişkenleri olan bir sql betiğinde bir sql profiler izlemesi çalıştırın ve bunların hepsinin zaten değerlendirildiğini göreceksiniz.
Tim Abell

Yanıtlar:


9

Sonuçlarınızı bir dosyaya vermeniz ve geri getirmeniz gerektiğini düşünüyorum. Böyle bir şey, aradığınız şeye yakın olmanıza yardımcı olacaktır:

:setvar MyDir "C:\scripts"
:OUT $(MyDir)\test.txt
PRINT ':SETVAR ServerName ''' + @@SERVERNAME + ''''
GO
:OUT stdout
:r $(MyDir)\test.txt
GO
SELECT $(ServerName)

Şunları yapabilirsiniz burada daha fazla örneklere bakın .


Teşekkür ederim. Zaten işten ayrıldım, bu yüzden öneriyi Pazartesi günü deneyeceğim
Craig Efrein


Bu cevabın en faydalı olduğu kanıtlandı.
Craig Efrein

1
Buradaki önemli kısım, 1) SETVAR dosyası oluşturmak, 2) kod değişkenini başlatmak için yürütmek ve son olarak 3) kod değişkenini kullanmak için ayrı ayrı gruplara sahip olmanız gerektiğidir.
Andriy M
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.