Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitik Platform Sistemi (PDW)
Microsoft Fabric'te SQL veritabanı
sqlcmd yardımcı programı Transact-SQL deyimlerini, sistem yordamlarını ve betik dosyalarını girmenizi sağlar.
Note
Sisteminizde hangi sqlcmd değişkeninin ve sürümünün yüklü olduğunu öğrenmek için bkz. Sqlcmd yardımcı programının yüklü sürümünü denetleme. sqlcmd'yi alma hakkında bilgi için bkz. sqlcmd yardımcı programını indirme ve yükleme.
sqlcmd'de betik değişkenleri
Betiklerde kullanılan değişkenler betik oluşturma değişkenleri olarak adlandırılır. Betik değişkenleri, bir betiğin birden çok senaryoda kullanılmasını sağlar. Örneğin, her sunucu için betiği değiştirmek yerine birden çok sunucuda bir betik çalıştırmak istiyorsanız, sunucu adı için bir betik değişkeni kullanabilirsiniz. Betik değişkenine sağlanan sunucu adı değiştirilerek, aynı betik farklı sunucularda yürütülebilir.
Betik değişkenleri, setvar komutu kullanılarak açıkça veya sqlcmd -v seçeneği kullanılarak örtük olarak tanımlanabilir.
Bu makale, kullanarak SETkomut satırında ortam değişkenlerini tanımlayan örnekler de içerir.
setvar komutuyla betik değişkenlerini ayarlama
setvar komutu betik değişkenlerini tanımlar. komutu kullanılarak setvar tanımlanan değişkenler dahili olarak depolanır. Komut dosyası değişkenleri, SETkullanılarak komut isteminde tanımlanan ortam değişkenleriyle karıştırılmamalıdır. Betik ortam değişkeni olmayan veya kullanılarak setvartanımlanmayan bir değişkene başvuruda bulunursa bir hata iletisi döndürülür ve betiğin yürütülmesi durdurulur. Daha fazla bilgi için sqlcmd-b seçeneğine bakın.
Değişken önceliği (düşük-yüksek)
Birden fazla değişken türü aynı ada sahip olduğunda, öncelik sırası en yüksek olan değişken kullanılır.
- Sistem düzeyinde ortam değişkenleri
- Kullanıcı düzeyinde ortam değişkenleri
- Komut isteminde,
SET X=Ybaşlatılmadan önce () Komut Kabuğu ayarlanır. sqlcmd -v X=Y:Setvar X Y
Note
Windows 11'de ortam değişkenlerini görüntülemek için Ayarlar'ı açın, Ardından Sistem>Hakkında'ya gidin ve Gelişmiş sistem ayarları bağlantısını seçin. Sistem Özellikleri penceresinde Ortam Değişkenleri'ni seçin. Linux'ta komut satırına yazın printenv ve macOS'ta yazın env.
Betik değişkenlerini örtük olarak ayarlama
sqlcmd ilgili sqlcmd değişkeni olan bir seçenekle başlattığınızda, sqlcmd değişkeni, seçeneği kullanılarak belirtilen değere örtük olarak ayarlanır. Aşağıdaki örnekte, sqlcmd seçeneğiyle -l başlatılır. Bu, SQLLOGINTIMEOUT değişkenini örtük olarak ayarlar.
sqlcmd -l 60
Ayrıca, -v seçeneğini kullanarak bir betikte bulunan bir betik değişkeni ayarlayabilirsiniz. Aşağıdaki betikte (dosya adı testscript.sql), ColumnName bir betik değişkenidir.
USE AdventureWorks2022;
SELECT x.$(ColumnName)
FROM Person.Person x
WHERE x.BusinessEntityID < 5;
Ardından, -v seçeneğini kullanarak döndürülmesini istediğiniz sütunun adını belirtebilirsiniz:
sqlcmd -v ColumnName ="FirstName" -i c:\testscript.sql
Aynı betiği kullanarak farklı bir sütun döndürmek için ColumnName betik değişkeninin değerini değiştirin.
sqlcmd -v ColumnName ="LastName" -i c:\testscript.sql
Betik oluşturma için değişken adları ve değerleriyle ilgili yönergeler
Betik değişkenlerini adlandırırken aşağıdaki yönergeleri göz önünde bulundurun:
Değişken adları boşluk karakterleri veya tırnak işaretleri içermemelidir.
Değişken adları, $(var) gibi bir değişken ifadesiyle aynı forma sahip olmamalıdır.
Betik değişkenleri büyük/küçük harfe duyarlı değildir.
Note
sqlcmd ortam değişkenine hiçbir değer atanmazsa değişken kaldırılır. değer olmadan
:setvar VarNamekullanılması değişkeni temizler.
Betik değişkenleri için değerler belirtirken aşağıdaki yönergeleri göz önünde bulundurun:
-
setvarveya-vseçeneği kullanılarak tanımlanan değişken değerleri, eğer dize değeri boşluk içeriyorsa tırnak işaretleri içine alınmalıdır. - Eğer tırnak işaretleri değişken değerinin bir parçasıysa, kaçış karakteri kullanılmalıdır. Örneğin:
setvar MyVar "spac""e".
cmd.exe SET değişken değerleri ve adları için yönergeler
SET kullanılarak tanımlanan değişkenler cmd.exe ortamının bir parçasıdır ve sqlcmdtarafından başvurulabilir. Aşağıdaki yönergeleri göz önünde bulundurun:
- Değişken adları boşluk karakterleri veya tırnak işaretleri içermemelidir.
- Değişken değerleri boşluk veya tırnak işareti içerebilir.
sqlcmd betik değişkenleri
| Variable | İlgili seçenek | R/W | Default |
|---|---|---|---|
SQLCMDUSER
1 |
-U |
R
2 |
"" |
SQLCMDPASSWORD
1 |
-P |
-- |
"" |
SQLCMDSERVER
1 |
-S |
R
2 |
"DefaultLocalInstance" |
SQLCMDWORKSTATION |
-H |
R
2 |
"ComputerName" |
SQLCMDDBNAME |
-d |
R
2 |
"" |
SQLCMDLOGINTIMEOUT |
-l |
R/W
3 |
"8" (saniye) |
SQLCMDSTATTIMEOUT |
-t |
R/W
3 |
"0" = süresiz olarak bekleyin |
SQLCMDHEADERS |
-h |
R/W
3 |
"0" |
SQLCMDCOLSEP |
-s |
R/W
3 |
" " |
SQLCMDCOLWIDTH |
-w |
R/W
3 |
"0" |
SQLCMDPACKETSIZE |
-a |
R
2 |
"4096" |
SQLCMDERRORLEVEL |
-m |
R/W
3 |
"0" |
SQLCMDMAXVARTYPEWIDTH |
-y |
R/W
3 |
"256" |
SQLCMDMAXFIXEDTYPEWIDTH |
-Y |
R/W
3 |
"0" = sınırsız |
SQLCMDEDITOR |
R/W
3 |
"edit.com" | |
SQLCMDINI |
R
2 |
"" |
kullanıldığında SQLCMDUSER, SQLCMDPASSWORD ve SQLCMDSERVER :Connect ayarlanır.
2 R değerin program başlatma sırasında yalnızca bir kez ayarlanabileceğini gösterir.
3 R/W komutu kullanılarak değerin sıfırlanabilir olduğunu ve sonraki komutların setvar yeni değeri kullandığını gösterir.
Examples
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
A. Betikte setvar komutunu kullanma
Birçok sqlcmd seçeneği, setvar komutu kullanılarak bir betikte denetlenebilir. Aşağıdaki örnekte, test.sql değişkeninin SQLCMDLOGINTIMEOUT saniye olarak ayarlandığı ve 60başka bir betik değişkeninin serverolarak ayarlandığı betik testserver oluşturulur. Aşağıdaki kod test.sqliçindedir.
:setvar SQLCMDLOGINTIMEOUT 60
:setvar server "testserver"
:connect $(server) -l $(SQLCMDLOGINTIMEOUT)
USE AdventureWorks2022;
SELECT FirstName, LastName
FROM Person.Person;
Ardından betik, sqlcmd ile çalıştırılır:
sqlcmd -i c:\test.sql
B. setvar komutunu etkileşimli olarak kullanma
Aşağıdaki örnekte, setvar komutunu kullanarak etkileşimli olarak bir betik değişkeninin nasıl ayarlanacağı gösterilmektedir.
sqlcmd
:setvar MYDATABASE AdventureWorks2022
USE $(MYDATABASE);
GO
Sonuç kümesi aşağıdadır.
Changed database context to 'AdventureWorks2022'
1>
C. sqlcmd içinde komut istemi ortam değişkenlerini kullanma
Aşağıdaki örnekte, are dört ortam değişkeni önce ayarlanır ve ardından sqlcmd'den çağrılır.
SET tablename=Person.Person
SET col1=FirstName
SET col2=LastName
SET title=Ms.
sqlcmd -d AdventureWorks2022
1> SELECT TOP 5 $(col1) + ' ' + $(col2) AS Name
2> FROM $(tablename)
3> WHERE Title ='$(title)'
4> GO
D. sqlcmd içinde kullanıcı düzeyinde ortam değişkenlerini kullanma
Aşağıdaki örnekte, kullanıcı düzeyinde ortam değişkeni %Temp% komut isteminde ayarlanır ve sqlcmd giriş dosyasına geçirilir. Kullanıcı düzeyinde ortam değişkenini almak için Denetim Masasıiçinde, Sistem'e çift tıklayın.
Gelişmiş sekmesini seçin ve ardından ortam değişkenlerini seçin.
Aşağıdaki kod C:\testscript.txtgiriş dosyasındadır:
:OUT $(MyTempDirectory)
USE AdventureWorks2022;
SELECT FirstName
FROM AdventureWorks2022.Person.Person
WHERE BusinessEntityID < 5;
Komut isteminde aşağıdaki kod girilir:
SET MyTempDirectory=%Temp%\output.txt
sqlcmd -i C:\testscript.txt
Aşağıdaki sonuç C:\Documents and Settings\<user>\Local Settings\Temp\output.txtçıkış dosyasına gönderilir.
Changed database context to 'AdventureWorks2022'.
FirstName
--------------------------------------------------
Gustavo
Catherine
Kim
Humberto
(4 rows affected)
E. Bir başlangıç betiği kullanın
sqlcmd başlangıç betiği, sqlcmd başlatıldığında yürütülür. Aşağıdaki örnek SQLCMDINIortam değişkenini ayarlar. Bu, init.sql. içeriğidir
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, init.sql başlatıldığında sqlcmd dosyasını çağırır.
SET sqlcmdini=c:\init.sql
sqlcmd
Bu çıktıdır.
1> <user> is connected to <server> (9.00.2047.00)
Note
-X seçeneği başlangıç betiği özelliğini devre dışı bırakır.
F. Değişken genişletme
Aşağıdaki örnekte verilerle sqlcmd değişkeni biçiminde çalışma gösterilmektedir.
USE AdventureWorks2022;
GO
CREATE TABLE AdventureWorks2022.dbo.VariableTest (Col1 NVARCHAR(50));
GO
Col1 içinde, dbo.VariableTest'e değer olarak $(tablename) içeren bir satır ekleyin.
INSERT INTO AdventureWorks2022.dbo.VariableTest (Col1)
VALUES ('$(tablename)');
GO
sqlcmd isteminde, hiçbir değişken $(tablename)değerine eşit olarak ayarlanmadığında, aşağıdaki ifadeler veritabanı satırını döndürür ve ayrıca "'tablename' betik değişkeni tanımlanmadı" iletisini gösterir. Varsayılan olarak, sqlcmd bayrağı -b ayarlanmadı.
-b ayarlanırsa, sqlcmd "değişken tanımlanmadı" hatasından sonra sonlandırılır.
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 aşağıdadır.
1> Col1
2> ------------------
3> $(tablename)
4>
5> (1 rows affected)
MyVar değişkeni $(tablename)olarak ayarlandığından emin olun.
6> :setvar MyVar $(tablename)
Bu ifadeler satırı döndürür ve ayrıca "'tablename' betik değişkeni tanımlanmadı." mesajını döndürür.
6> SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(tablename)';
7> GO
1> SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(tablename)';
2> GO
Bu ifadeler satırı döndürürler.
1> SELECT Col1 FROM dbo.VariableTest WHERE Col1 = '$(MyVar)';
2> GO
1> SELECT Col1 FROM dbo.VariableTest WHERE Col1 = N'$(MyVar)';
2> GO
İlgili içerik
- GitHub'da sqlcmd (Go) yardımcı programı hakkında daha fazla bilgi edinin
- Hızlı Başlangıç: Docker ile SQL Server Linux kapsayıcı görüntülerini çalıştırma
- sqlcmd yardımcı programını başlatma
- sqlcmd ile bir betik dosyasından T-SQL yürütme
- yardımcı programını kullanma
- Komut dosyası değişkenleriyle sqlcmd komutunu kullanma
- sqlcmd ile SQL Server'a bağlanma
- Sorgu Düzenleyicisi ile SQLCMD Betiklerini Düzenleme
- İş Adımlarını Yönetme
- CmdExec İş Adımı Oluşturma