Aracılığıyla paylaş


osql Yardımcı Programı

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

osql yardımcı programı Transact-SQL deyimlerini, sistem yordamlarını ve betik dosyalarını girmenizi sağlar. Bu yardımcı program, sunucuyla iletişim kurmak için ODBC kullanır.

Önemli

Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine sqlcmd kullanın. Daha fazla bilgi için bkz. sqlcmd Yardımcı Programı.

Sözdizimi

osql
[ -? ] |
[ -L ] |
[
  {
     { -Ulogin_id [ -Ppassword ] } | -E }
     [ -Sserver_name [ \instance_name ] ] [ -Hwksta_name ] [ -ddb_name ]
     [ -ltime_out ] [ -ttime_out ] [ -hheaders ]
     [ -scol_separator ] [ -wcolumn_width ] [ -apacket_size ]
     [ -e ] [ -I ] [ -D data_source_name ]
     [ -ccmd_end ] [ -q "query" ] [ -Q"query" ]
     [ -n ] [ -merror_level ] [ -r { 0 | 1 } ]
     [ -iinput_file ] [ -ooutput_file ] [ -p ]
     [ -b ] [ -u ] [ -R ] [ -O ]
]

Tartışmalar

-?

osql anahtarlarının söz dizimi özetini görüntüler.

-L

Yerel olarak yapılandırılmış sunucuları ve ağda yayınlayan sunucuların adlarını listeler.

Uyarı

osql , Windows ağındaki tüm sunuculardan zamanında yanıt alamayabilir. Döndürülen sunucuların listesi bu seçeneğin her çağrısı için farklılık gösterebilir.

-U login_id

Kullanıcı oturum açma kimliği. Oturum açma kimlikleri büyük/küçük harfe duyarlıdır.

-P parola

Kullanıcı tarafından belirtilen bir parola. -P Seçenek kullanılmıyorsa, osql parola ister. -P Seçenek komut isteminin sonunda parola olmadan kullanılıyorsa, osql varsayılan parolayı (NULL kullanır).

Önemli

Boş parola kullanmayın. Güçlü bir parola kullanın. Daha fazla bilgi için bkz . Güçlü parolalar.

Parolalar büyük/küçük harfe duyarlıdır.

Ortam OSQLPASSWORD değişkeni, geçerli oturum için varsayılan bir parola ayarlamanıza olanak tanır. Bu nedenle, toplu iş dosyalarına bir parolayı sabit kodla girmeniz gerekmez.

-P seçeneğiyle bir parola belirtmezseniz, osql önce OSQLPASSWORD değişkenini denetler. Değer ayarlı değilse, osql varsayılan parolayı kullanır. NULL Aşağıdaki örnek, bir komut isteminde OSQLPASSWORD değişkeni ayarlar ve ardından osql yardımcı programına erişir:

SET OSQLPASSWORD=abracadabra
osql

Önemli

Parolanızı maskeleyebilmek için -P seçeneğiyle birlikte -U seçeneğini belirtmeyin. Bunun yerine, seçenek ve diğer anahtarlarla birlikte -U belirttikten sonra (belirtmeyin-P), Enter tuşuna basın ve osql sizden parola ister. Bu yöntem, girildiğinde parolanızın maskelenmiş olmasını sağlar.

-E

Parola istemek yerine güvenilir bir bağlantı kullanır.

-S server_name[\instance_name]

Bağlanacak SQL Server örneğini belirtir. Bu sunucudaki varsayılan SQL Server örneğine bağlanmak için server_name belirtin. Bu sunucudaki adlandırılmış bir SQL Server örneğine bağlanmak için belirtin <server_name>\<instance_name> . Sunucu belirtilmezse, osql yerel bilgisayardaki varsayılan SQL Server örneğine bağlanır. Ağdaki uzak bir bilgisayardan osql yürütülürken bu seçenek gereklidir.

-H wksta_name

İş istasyonu adı. İş istasyonu adı sysprocesses.hostname içinde depolanır ve sp_who tarafından görüntülenir. Bu seçenek belirtilmezse, geçerli bilgisayar adı varsayılır.

-d db_name

osql başlatıldığında use db_name deyimini oluşturur.

-l zaman_aşımı

Osql oturum açma işleminin zaman aşımına uğramadan önce geçmesi için saniye sayısını belirtir. osql'e bağlanmak için varsayılan zaman aşımı sekiz saniyedir.

-t time_out

Bir komutun zaman aşımına uğraması için geçen saniye süresini belirtir. Zaman aşımı değeri belirtilmezse, komutlar zaman aşımına uğramaz.

-h başlıklar

Sütun başlıkları arasında yazdırılacak satır sayısını belirtir. Varsayılan ayar, her sorgu sonucu kümesi için başlıkları bir kez yazdırmaktır. Hiçbir üst bilginin yazdırılmaması gerektiğini belirtmek için kullanın -1 . Kullanılırsa -1 , parametresi ile ayarı (-h-1değil -h -1) arasında boşluk olmamalıdır.

-s col_separator

Varsayılan olarak boş alan olan sütun ayırıcı karakterini belirtir. İşletim sistemi için özel anlamı olan karakterleri kullanmak için (örneğin, | ; & <>), karakteri çift tırnak işareti (") içine alın.

-w column_width

Kullanıcının çıktı için ekran genişliğini ayarlamasına izin verir. Varsayılan değer 80 karakterdir. Çıkış çizgisi maksimum ekran genişliğine ulaştığında, birden çok satıra ayrılır.

-a packet_size

Farklı boyutlu bir paket istemenizi sağlar. packet_size için geçerli değerler 512 ile 65535 arasındadır. Varsayılan osql değeri, sunucu varsayılan değeridir. Daha büyük betiklerin yürütülmesi sırasında, GO komutları arasındaki Transact-SQL deyimlerinin sayısının fazla olduğu durumlarda artan paket boyutu performansı artırabilir. Microsoft testi, 8192'nin genellikle toplu kopyalama işlemleri için en hızlı ayar olduğunu gösterir. Daha büyük bir paket boyutu istenebilir, ancak istek verilemiyorsa osql varsayılan olarak sunucu varsayılanı olur.

-e

Girişi yankılar.

-I

QUOTED_IDENTIFIER Bağlantı seçeneğini açık olarak ayarlar.

-D data_source_name

SQL Server için ODBC sürücüsü kullanılarak tanımlanan bir ODBC veri kaynağına bağlanır. osql bağlantısı, veri kaynağında belirtilen seçenekleri kullanır.

Uyarı

Bu seçenek, diğer sürücüler için tanımlanan veri kaynaklarıyla çalışmaz.

-c cmd_end

Komut sonlandırıcısını belirtir. Varsayılan olarak komutlar sonlandırılır ve tek başına bir satıra girilerek GO SQL Server'a gönderilir. Transact-SQL komut sonlandırıcısını resetlerken, ister ters eğik çizgi ile ister onsuz, işletim sistemi için özel anlam taşıyan ayrılmış kelimeler veya karakterler kullanmayın.

-q "sorgu"

osql başlatıldığında sorgu yürütür, ancak sorgu tamamlandığında osql'dan çıkmaz. (Sorgu deyimi içermemelidir GO). Bir toplu iş dosyasından sorgu gönderirseniz, %<variable> veya %<variable>% ortamını kullanın. Örneğin:

SET table=sys.objects
osql -E -q "select name, object_id from %table%"

Sorgunun çevresinde çift tırnak işaretleri ve sorguya eklenmiş her şeyin çevresinde tek tırnak işaretleri kullanın.

-Q" query "

Bir sorgu yürütür ve hemen osql'dan çıkar. Sorgunun çevresinde çift tırnak işaretleri ve sorguya eklenmiş her şeyin çevresinde tek tırnak işaretleri kullanın.

-n

Numaralandırmayı ve istem simgesini (>) giriş satırlarından kaldırır.

-m error_level

Hata iletilerinin görüntülenmesini özelleştirir. İleti numarası, durum ve hata düzeyi, belirtilen önem düzeyi veya daha yüksek hatalar için görüntülenir. Belirtilen düzeyden düşük düzey hataları için hiçbir şey görüntülenmez. Tüm üst bilgilerin, bilgilendirici iletiler dahil, iletilerle döndüğünü belirtmek için -1 kullanın. kullanıyorsanız -1, parametresi ile ayarı (-m-1değil -m -1) arasında boşluk olmamalıdır.

-r { 0| 1}

İleti çıkışını ekrana (stderr ) yönlendirir. Parametre belirtmezseniz veya belirtirseniz 0, yalnızca önem düzeyi 11 veya üzeri olan hata iletileri yeniden yönlendirilir. 1 belirtirseniz, tüm mesaj çıkışı ("yazdırma" dahil) yeniden yönlendirilir.

-i input_file

Bir grup SQL deyimi veya saklı yordam içeren dosyayı tanımlar. Küçüktür (<) karşılaştırma işleci, -i yerine kullanılabilir.

-o çıkış_dosyası

osql'den çıkış alan dosyayı tanımlar. Büyüktür (>) karşılaştırma işleci, -o yerine kullanılabilir.

input_file Unicode değilse ve -u belirtilmezse, output_file OEM biçiminde depolanır. input_file Unicode ise veya -u belirtilmişse, output_file Unicode biçiminde depolanır.

-p

Performans istatistiklerinin çıktısını alır.

-b

Bir hata oluştuğunda osql'nin çıktığını ve bir DOS ERRORLEVEL değeri döndürdüğünü belirtir. SQL Server hata iletisinin önem derecesi 11 veya daha yüksek olduğunda DOS ERRORLEVEL değişkenine döndürülen değer 1'dir; aksi takdirde, döndürülen değer 0'dır. MS-DOS toplu iş dosyaları DOS ERRORLEVEL değerini test edebilir ve hatayı uygun şekilde işleyebilir.

-u

input_file biçiminden bağımsız olarak output_file Unicode biçiminde depolandığını belirtir.

-R

PARA birimi, tarih ve saat verilerini karakter verilerine dönüştürürken SQL Server ODBC sürücüsünün istemci ayarlarını kullanması gerektiğini belirtir.

-O

Bazı osql özelliklerinin isql'in önceki sürümlerinin davranışıyla eşleşecek şekilde devre dışı bırakıldığını belirtir. Bu özellikler devre dışı bırakılır:

  • EOF toplu işleme
  • Otomatik konsol genişliği ölçeklendirme
  • Geniş iletiler

Ayrıca varsayılan DOS ERRORLEVEL değerini olarak -1ayarlar.

Uyarı

-n, -Ove -D seçenekleri osql tarafından desteklenmez.

Açıklamalar

osql yardımcı programı, burada listelenen büyük/küçük harfe duyarlı seçeneklerle doğrudan işletim sisteminden başlatılır. osql başlatıldıktan sonra SQL deyimlerini kabul eder ve etkileşimli olarak SQL Server'a gönderir. Sonuçlar biçimlendirilir ve ekranda stdout görüntülenir. QUIT veya EXIT kullanarak osql'den çıkın.

osql'yi başlattığınızda bir kullanıcı adı belirtmezseniz, SQL Server ortam değişkenlerini denetler ve bunları (örneğin, osqluser=(<user>) veya osqlserver=(<server>)) kullanır. Ortam değişkeni ayarlı değilse, iş istasyonu kullanıcı adı kullanılır. Bir sunucu belirtmezseniz, iş istasyonunun adı kullanılır.

-U veya -P seçenekleri kullanılmazsa, SQL Server Windows Kimlik Doğrulama Modu'nu kullanarak bağlanmayı dener. Kimlik doğrulaması, osql çalıştıran kullanıcının Windows hesabını temel alır.

osql yardımcı programı ODBC API'sini kullanır. Yardımcı program, SQL Server ISO bağlantı seçenekleri için SQL Server ODBC sürücüsü varsayılan ayarlarını kullanır. Daha fazla bilgi için bkz. SET Deyimlerini Kullanırken Dikkat Edilmesi Gerekenler.

Uyarı

osql yardımcı programı CLR kullanıcı tanımlı veri türlerini desteklemez. Bu veri türlerini işlemek için sqlcmd yardımcı programını kullanmanız gerekir. Daha fazla bilgi için bkz. sqlcmd Yardımcı Programı.

OSQL Komutları

osql içindeki Transact-SQL deyimlerine ek olarak, bu komutlar da kullanılabilir.

Komut Açıklama
GO Son GO'den sonra girilen tüm deyimleri yürütür.
RESET Girdiğiniz tüm deyimleri temizler.
QUIT veya EXIT() Osql'den çıkış.
Ctrl+C Sorguyu osql'den çıkmadan sonlandırır.

Uyarı

!! ve ED komutları osql tarafından desteklenmez.

Komut sonlandırıcıları GO (varsayılan olarak), RESET, EXIT, QUITve Ctrl+C, yalnızca osql isteminin hemen ardından bir satırın başında görünürlerse tanınır.

GO hem toplu iş sonunu hem de önbelleğe alınmış Transact-SQL deyimlerinin yürütülmesini bildirir. Her giriş satırının sonunda Enter tuşuna bastığınızda , osql bu satırdaki deyimleri önbelleğe alır. yazdıktan sonra GO bastığınızda, önbelleğe alınmış durumdaki tüm deyimler SQL Server'a toplu iş olarak gönderilir.

Geçerli osql yardımcı programı, yürütülen herhangi bir betiğin sonunda zımni bir GO komutu varmış gibi çalışır, bu nedenle betikteki tüm ifadeler yürütülür.

Komut sonlandırıcısıyla başlayan bir satır yazarak komutu sonlandırabilirsiniz. Komutun kaç kez çalıştırılması gerektiğini belirtmek için bir tamsayı ile komut sonlandırıcısını izleyebilirsiniz. Örneğin, bu komutu 100 kez yürütmek için şunu yazın:

SELECT x = 1
GO 100

Sonuçlar yürütmenin sonunda bir kez yazdırılır. osql satır başına 1.000'den fazla karakter kabul etmez. Büyük deyimler birden çok satıra yayılmalıdır.

osql deyimlerini geri çağırmak ve değiştirmek için Windows'taki komut geri çağırma olanaklarını kullanabilirsiniz. Mevcut sorgu arabelleği, RESET yazarak temizlenebilir.

osql saklı yordamları çalıştırdığında, bir toplu işlemdeki her sonuç kümesi arasına boş bir satır yazdırır. Ayrıca, yürütülen deyime geçerli olmadığında "etkilenen 0 satır" iletisi görüntülenmez.

osql'i etkileşimli olarak kullanma

Osql'i etkileşimli olarak kullanmak için komut istemine osql komutunu (ve seçeneklerden herhangi birini) yazın.

Şuna benzer bir komut yazarak osql tarafından yürütülecek bir sorgu (Stores.qry gibi) içeren bir dosyada okuyabilirsiniz:

osql -E -i stores.qry

Sorgu içeren bir dosyada (Titles.qry gibi) okuyabilir ve aşağıdakine benzer bir komut yazarak sonuçları başka bir dosyaya yönlendirebilirsiniz:

osql -E -i titles.qry -o titles.res

Önemli

Mümkün olduğunda -E seçeneğini (güvenilen bağlantı) kullanın.

osql'yi etkileşimli olarak kullandığınızda, işletim sistemi dosyasını :r<file_name> komut arabelleğine okuyabilirsiniz. Bu, sql betiğini file_name doğrudan tek bir toplu iş olarak sunucuya gönderir.

Uyarı

osql , bir SQL betik dosyasında görünüyorsa toplu iş ayırıcısını GO söz dizimi hatası olarak ele alır.

Açıklama ekleme

osql tarafından SQL Server'a gönderilen Transact-SQL deyimine açıklamalar ekleyebilirsiniz. İki tür açıklama stiline izin verilir: -- ve /*...*/.

Osql'de sonuçları döndürmek için çıkış kullanma

SELECT dönüş değeri olarak bir deyimin sonucunu kullanabilirsiniz. Sayısalsa, son sonuç satırının son sütunu 4 baytlık tamsayıya (uzun) dönüştürülür. MS-DOS alt bayt değerini üst işlem veya işletim sistemi hata düzeyine geçirir. Windows, 4 baytlık tamsayının tamamını geçirir. Söz dizimi aşağıdaki gibidir:

EXIT ( <query> )

Örneğin:

EXIT(SELECT @@ROWCOUNT)

EXIT parametresini bir toplu iş dosyasının parçası olarak da ekleyebilirsiniz. Örneğin:

osql -E -Q "EXIT(SELECT COUNT(*) FROM '%1')"

osql yardımcı programı parantezler () arasındaki her şeyi tam olarak girilmiş şekilde sunucuya geçirir. Saklı sistem yordamı bir küme seçer ve bir değer döndürürse, yalnızca seçim döndürülür. EXIT() Parantezler arasında hiçbir şey bulunmayan bu ifade, toplu işlemde önceki tüm ifadeleri yürütür ve ardından dönüş değeri olmaksızın sona erer.

Dört EXIT biçim vardır:

Biçim Ayrıntılar
EXIT Toplu işlemi yürütmez; hemen çıkar ve değer döndürmez.
EXIT() Toplu işlemi yürütür, ardından çıkar ve bir değer döndürmez.
EXIT(<query>) Sorgu da dahil olmak üzere toplu işlemi yürütür ve sorgunun sonuçlarını döndürdikten sonra çıkar.
RAISERROR durumuyla 127 RAISERROR bir osql betiğinde kullanılırsa ve 127 durumu oluşursa, osql sonlanır ve ileti kimliğini istemciye geri döndürür.

Aşağıdaki örnek, RAISERROR ile osql davranışının nasıl etkileneceğini göstermektedir:

RAISERROR (50001, 10, 127);

Bu hata osql betiğinin sona ermesini sağlar ve istemciye 50001 ileti kimliğini döndürür.

dönüş değerleri -1 ile -99 arasında olarak ayrılmıştır. osql aşağıdaki değerleri tanımlar:

  • -100: Dönüş değeri seçmeden önce hatayla karşılaşıldı.
  • -101: Dönüş değeri seçilirken satır bulunamadı.
  • -102: Dönüş değeri seçilirken dönüştürme hatası oluştu.

Para ve smallmoney veri türlerini görüntüleme

osql , değeri dört ondalık basamakla dahili olarak depolasa da, para ve smallmoney veri türlerini iki ondalık basamakla görüntüler. Örneği göz önünde bulundurun:

SELECT CAST (CAST (10.3496 AS MONEY) AS DECIMAL (6, 4));
GO

Bu ifade, değerin tüm ondalık basamaklarıyla birlikte depolandığını gösteren 10.3496 sonucunu üretir.