Neden: Dağıtım sonrası komut dosyasında r SQLCMD komutu yanlış olarak işaretlenmiş?


18

Ben dağıtım konuşmaları ile birkaç kez çalıştım ve her zaman, sezgisel inşa eylemi "PostDeploy" kullandım, çünkü budur. Şimdi ilk kez ":r somescript.sql"söz dizimini kullanmak için komut dosyasının şablonundaki yerleşik talimatları izlemeye çalışıyorum .

Bu satır hemen yanlış olarak işaretleniyor:

"':' Yanındaki SQL80001 yanlış sözdizimi

PDS Build Action "none" olarak ayarlamak için öneriler buldum. Bu yardımcı olmaz, hata kalır. Burada ne eksik?


üzgünüm daha net olmak için "hangi eylem içinde": r "vardır komut dosyası ayarlanır?" :)
Ed Elliott

Yanıtlar:


17

Hatanın oluşturma işlemi sırasında gerçekleştiğini ve gerçek sözdizimi hatalarınızın olmadığını varsayarsak ve bu basit bir işlemdir.

:r path\to\file.sql

hata, içe aktarılan dosya mevcut olmadığında da oluşur. Lütfen dosyanın konumunu kontrol edin. Mutlak bir yol sağlamadıysanız, yol çözüm klasörüne göreli olacaktır (en azından benim için).

Geliştirme sırasında derleme işleminin bildirdiği hatayı görmek istiyorsanız, Visual Studio'daki T-SQL düzenleyicisinde "SQLCMD modunu" etkinleştirdiğinizden emin olun. Düğme çubuğunda en sağda bir "!" bunu etkinleştirecek. Veya SQL menüsüne gidebilir , Transact-SQL Editor -> seçeneğini, Yürütme Ayarları -> seçeneğini ve ardından SQLCMD Modunu seçebilirsiniz . Komut dosyasını yürüttüğünüzde :r, tıpkı derleme / yayınlama işlemi gibi doğru şekilde yorumlanacaktır .

Ayrıca, Dağıtım Sonrası Komut Dosyanızın (PDS) Oluşturma Eyleminin PostDeploy olarak ayarlanmış olması gerekir . Hiçbiri olarak ayarlanırsa, tamamen SSDT oluşturma işlemi tarafından atlanır.


4

Geçerli Hata

Bunun nedeni :r somescript.sqlgeçerli sql değil. Hata mesajının tam olarak belirttiği bir sözdizimi hatası görüyorsunuz.

SQL80001: ':' yakınında yanlış sözdizimi.

SQLCMD Modu

Dağıtım sonrası komut dosyası SQLCMD Modu altında yürütülür.

Sqlcmd yardımcı programı, komut isteminde, SQLCMD modunda Sorgu Düzenleyicisi'nde, bir Windows komut dosyası veya bir SQL Server'ın işletim sistemi (Cmd.exe) iş adımında Transact-SQL deyimlerini, sistem yordamlarını ve komut dosyalarını girmenizi sağlar Ajan işi. Bu yardımcı program Transact-SQL toplu iş yürütmek için ODBC kullanır.

çözüm

Bir DB'ye bağlanıp Visual Studio'dan sql çalıştırabileceğinizi unutmayın. Aynı komut dosyasını SSMS içinde açarsanız aynı sözdizimi hatasını görürsünüz. Ancak, hem SSMS hem de Visual Studio'da SQLCMD Modunu "etkinleştirebilirsiniz".

VS 2017

  • sql betiğini içeren düzenleyiciye sağ tıklayın
  • Yürütme Ayarları'nı tıklayın
  • SQLCMD Modunu tıklayın
  • Aynı şeyi SQL menüsünden de yapabileceğinizi unutmayın

SSMS 17, SSMS 18

  • Sorgu (menü öğesi)
  • SQLCMD Modu

Ayrıca bakınız

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.