Sqlcmd Scripting değişkenleri ile kullanma
Komut dosyası değişkenleri komut dosyalarında kullanılan değişkenler denir. Komut dosyası değişkenleri birden fazla senaryolarda kullanılmak üzere bir komut dosyası sağlar. Örneğin her sunucu için komut dosyasını değiştirmek yerine, birden çok çalışma sunucularda bir komut çalıştırmak istiyorsanız sunucu adı için komut dosyası bir değişkeni kullanabilirsiniz. Komut dosyası değişkeni için sağlanan sunucu adını değiştirerek, farklı sunucularda aynı komut çalıştırılabilir.
Komut dosyası değişkenleri tanımlanabilir açıkça kullanarak setvarkomut veya dolaylı olarak kullanarak sqlcmd -vseçeneği.
Bu konuda da çevresel değişkenleri Cmd.exe komut isteminde kullanarak tanımlama örnekler içerir SET.
Komut dosyası değişkenleri setvar komutunu kullanarak ayarlama
setvarKomutunu, komut dosyası değişkenleri tanımlamak için kullanılır. Kullanarak tanımlanan değişkenleri setvarkomutu dahili depolanır. Komut dosyası değişkenleri değil karıştı komut isteminde kullanarak tanımlanan ortam değişkenleri ile SET. Bir komut dosyası bir ortam değişkeni olmayan veya kullanarak tanımlı değişken başvuruyorsa setvar, bir hata iletisi döndürülür ve komut dosyası yürütülmesine durduracak. Daha fazla bilgi için bkz: -bseçeneği Sqlcmd yardımcı programı.
Değişken öncelik (yüksek düşük)
Birden fazla değişken türünü aynı ada sahipse, en yüksek önceliğe sahip değişken kullanılır.
Sistem düzeyi ortam değişkenleri
Kullanıcı düzeyi ortam değişkenleri
Komut kabuğu (SET X=Y) başlatmadan önce komut isteminde setsqlcmd
sqlcmd -vX = Y
:SetvarX y
[!NOT]
Ortam değişkenlerini görüntülemek için Denetim Masasıaçık sistemve'yi Gelişmiş sekmesi.
Komut dosyası değişkenleri örtülü olarak ayarlama
Başlattığınızda sqlcmdsahip olan bir ilgili seçeneği ile sqlcmddeğişken sqlcmddeğişkeni ayarlanır örtülü seçeneğini kullanarak belirtilen değere. Aşağıdaki örnekte, sqlcmdile başlayan -l seçeneği. Bu örtülü olarak SQLLOGINTIMEOUT değişkenini ayarlar.
c:\> sqlcmd -l 60
Ayrıca -vkomut dosyası bir değişkeni bir JavaScript bulunmaktadır ayarlama seçeneği Aşağıdaki komut dosyasında (dosya adı testscript.sql), ColumnNamebir komut dosyası değişkeni.
USE AdventureWorks2012;
SELECT x.$(ColumnName)
FROM Person.Person x
WHERE c.BusinessEntityID < 5;
Sonra döndürülen kullanarak istediğiniz sütun adını belirtebilirsiniz -vseçeneği:
sqlcmd -v ColumnName ="FirstName" -i c:\testscript.sql
Aynı komut dosyasını kullanarak farklı bir sütun dönmek için değerini değiştirmek ColumnNamekomut dosyası değişkeni.
sqlcmd -v ColumnName ="LastName" -i c:\testscript.sql
Değişken adları ve değerleri Scripting yönergeleri
Komut dosyası değişkenleri adlandırdığınızda aşağıdaki yönergeleri dikkate alın:
Değişken adları boşluk karakterleri veya tırnak işareti içermemelidir.
Değişken adları değil olması gerekir gibi bir değişken ifade olarak aynı form gibi $(var).
Komut dosyası değişkenleri büyük/küçük harf duyarsızdır
[!NOT]
Herhangi bir değer atanmışsa bir sqlcmdortam değişkeni değişken kaldırıldı. Kullanarak :setvar VarName olmadan değişken değeri temizler.
Komut dosyası değişkenleri için değerleri belirttiğinizde aşağıdaki yönergeleri dikkate alın:
Değişken değerlerini kullanarak tanımlanan setvar ya da -v seçeneği gerekir içine tırnak işaretleri dize boşluk içeriyorsa.
Tırnak değişken değerinin bir parçası, onlar konulmalıdır. Örneğin::setvar MyVar "spac""e".
Değişken değerleri ve adları Cmd.exe yönergeleri ayarlayın
set kullanarak tanımlanan değişkenleri Cmd.exe ortamının parçası olan ve tarafından başvurulan sqlcmd. Aşağıdaki yönergeleri dikkate alın:
Değişken adları boşluk karakterleri veya tırnak işareti içermemelidir.
Değişken değerleri boşluklar veya tırnak işaretleri içerebilir.
Sqlcmd Scripting değişkenleri
Tarafından tanımlanan değişkenleri sqlcmdkomut dosyası değişkenleri bilinen. Aşağıdaki tablo listeleri sqlcmdkomut dosyası değişkenleri.
Değişken |
Ilgili seçeneği |
R/W |
Default |
---|---|---|---|
SQLCMDUSER * |
-U |
R |
"" |
SQLCMDPASSWORD * |
-P |
-- |
"" |
SQLCMDSERVER NE * |
-S |
R |
"DefaultLocalInstance" |
SQLCMDWORKSTATION |
-H |
R |
"BilgisayarAdı" |
SQLCMDDBNAME |
-d |
R |
"" |
SQLCMDLOGINTIMEOUT |
-l |
R/W |
"8" (saniye) |
SQLCMDSTATTIMEOUT |
-t |
R/W |
"0" süresiz olarak bekleme = |
SQLCMDHEADERS |
-h |
R/W |
"0" |
SQLCMDCOLSEP |
-s |
R/W |
" " |
SQLCMDCOLWIDTH |
-w |
R/W |
"0" |
SQLCMDPACKETSIZE |
-a |
R |
"4096" |
SQLCMDERRORLEVEL |
-m |
R/W |
"0" |
SQLCMDMAXVARTYPEWIDTH |
-y |
R/W |
"256" |
SQLCMDMAXFIXEDTYPEWIDTH |
-Y |
R/W |
"0" = sınırsız |
SQLCMDEDITOR |
R/W |
"edit.com" |
|
SQLCMDINI |
R |
"" |
* sqlcmduser, sqlcmdpassword ve SQLCMDSERVER ne zaman ayarlanmış : Connect kullanılır.
R değeri yalnızca bir kez program başlatma sırasında ayarlanabileceğini gösterir.
R/w gösterir değeri kullanılarak sıfırlanabilir setvarkomutu ve izleyen komutları yeni değeri kullanacak.
Örnekler
A.Bir komut setvar komutunu kullanarak
Çok sqlcmdseçenekleri kontrollü bir komut dosyası kullanarak setvarkomut. Aşağıdaki örnekte, komut test.sqloluşturulduğu SQLCMDLOGINTIMEOUT değişkenini ayarlamak 60saniye ve başka bir komut dosyası değişkeni, server, ayarı testserver. Aşağıdaki kod test.sql.
:setvar SQLCMDLOGINTIMEOUT 60
:setvar server "testserver"
:connect $(server) -l $(SQLCMDLOGINTIMEOUT)
USE AdventureWorks2012;
SELECT FirstName, LastName
FROM Person.Person;
The script is then called by using sqlcmd:
sqlcmd -i c:\test.sql
B.Etkileşimli setvar komutunu kullanma
Aşağıdaki örnek komut dosyası bir değişkeni kullanarak etkileşimli olarak ayarlama gösterilmiştir setvarkomut.
sqlcmd
:setvar MYDATABASE AdventureWorks2012
USE $(MYDATABASE);
GO
Sonuç kümesi buradadır.
Changed database context to 'AdventureWorks2012'
1>
C.Komut isteminde sqlcmd içinde ortam değişkenlerini kullanma
Aşağıdaki örnekte, dört ortam değişkenleri areayarlayın ve ardından gelen denilen sqlcmd.
C:\>SET tablename=Person.Person
C:\>SET col1=FirstName
C:\>SET col2=LastName
C:\>SET title=Ms.
C:\>sqlcmd -d AdventureWorks2012
1> SELECT TOP 5 $(col1) + ' ' + $(col2) AS Name
2> FROM $(tablename)
3> WHERE Title ='$(title)'
4> GO
D.Kullanıcı düzeyi ortam değişkenleri sqlcmd içinde kullanma
Aşağıdaki örnek kullanıcı düzeyinde çevre değişken %Temp%set at the command prompt ve geçirilen sqlcmdgiriş dosyası. Kullanıcı düzeyi ortam değişkeni içinde elde etmek için Denetim Masası, çift System. Tıklayın önceden sekmesini tıklatıp ardından Ortam değişkenleri.
Girdi dosyasında aşağıdaki kodu olduğunu c:\testscript.txt:
:OUT $(MyTempDirectory)
USE AdventureWorks2012;
SELECT FirstName
FROM AdventureWorks2012.Person.Person
WHERE BusinessEntityID < 5;
Bu aşağıdaki kod komut satırına girilir:
C:\ >SET MyTempDirectory=%Temp%\output.txt
C:\ >sqlcmd -i C:\testscript.txt
Aşağıdaki sonucu çıktı dosyasına gönderilir, Documents and Settings\<kullanıcı>\Local Settings\Temp\output.txt.
Changed database context to 'AdventureWorks2012'.
FirstName
--------------------------------------------------
Gustavo
Catherine
Kim
Humberto
(4 rows affected)
E.Başlangıç komut dosyası kullanma
A sqlcmdbaşlangıç komut yürütüldüğünde ne zaman sqlcmdbaşlatılır. Aşağıdaki örnek, ortam değişkeni ayarlar SQLCMDINI. İçeriği budurinit.sql.
SET NOCOUNT ON
GO
DECLARE @nt\_username nvarchar(128)
SET @nt\_username = (SELECT rtrim(convert(nvarchar(128), nt_username))
FROM sys.dm_exec_sessions WHERE spid = @@SPID)
SELECT @nt\_username + ' is connected to ' +
rtrim(CONVERT(nvarchar(20), SERVERPROPERTY('servername'))) +
' (' +
rtrim(CONVERT(nvarchar(20), SERVERPROPERTY('productversion'))) +
')'
:setvar SQLCMDMAXFIXEDTYPEWIDTH 100
SET NOCOUNT OFF
GO
:setvar SQLCMDMAXFIXEDTYPEWIDTH
Bu çağrı init.sqlne zaman dosya sqlcmdbaşlatılır.
C:\> SET sqlcmdini=c:\init.sql
>1 Sqlcmd
Bu, Stardoll'da çıktı.
>1 < user > is connected to < server > (9.00.2047.00)
[!NOT]
-XSeçeneğini başlangıç komut dosyası özelliğini devre dışı bırakır.
F.Değişken genişletme
Aşağıdaki örnek verileri ile çalışma şeklinde gösteren bir sqlcmddeğişkeni.
USE AdventureWorks2012;
CREATE TABLE AdventureWorks2012.dbo.VariableTest
(
Col1 nvarchar(50)
);
GO
Bir satır içine Col1, dbo.VariableTestdeğeri içeren $(tablename).
INSERT INTO AdventureWorks2012.dbo.VariableTest(Col1)
VALUES('$(tablename)');
GO
sqlcmdDeğişken değerine ayarlandığında istemi, $(tablename), aşağıdaki deyimleri satır döndürür.
C:\> sqlcmd
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';
>2 GO
>3 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';
>4 GO
Sonuç kümesi buradadır.
>1 Col1
>2 ------------------
>3 $(tablename)
>4
>5 (1 rows affected)
Değişken verilen MyVarayarı $(tablename).
>6 :setvar MyVar $(tablename)
Bu deyimleri satır döndürür ve ayrıca '' tablename' iletisi döndürür komut dosyası değişkeni. tanımlanmadı"
>6 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';
>7 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';
>2 GO
Bu deyimleri satır döndürür.
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(MyVar)';
>2 GO
>1 SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(MyVar)';
>2 GO
Ayrıca bkz.
Başvuru
Kavramlar
Sqlcmd yardımcı programını kullanın
Komut istemi yardımcı programı başvurusu (veritabanı altyapısı)