Saya telah bekerja beberapa kali dengan skrip posting penempatan dan selalu, secara intuitif menggunakan action build "PostDeploy", karena memang begitu. Sekarang untuk pertama kalinya saya mencoba mengikuti instruksi bawaan dari template skrip untuk menggunakan ":r somescript.sql"
sintaks.
Segera baris ini ditandai sebagai salah:
"SQL80001 salah sintaks di sebelah ':'"
Saya menemukan saran untuk mengatur PDS untuk Membangun Aksi "tidak ada". Ini tidak membantu, kesalahan tetap. Apa yang kulewatkan di sini?
Jawaban:
Dengan asumsi bahwa kesalahan terjadi selama proses membangun, dan bahwa Anda tidak memiliki kesalahan sintaksis yang sebenarnya, dan itu adalah sederhana
maka kesalahan juga terjadi ketika file yang diimpor tidak ada. Silakan periksa lokasi file. Jika Anda tidak memberikan path absolut, maka path tersebut akan relatif terhadap folder solusi (setidaknya bagi saya itu adalah).
Jika, saat berkembang, Anda ingin melihat kesalahan yang dilaporkan proses pembangunan, kemudian pastikan untuk mengaktifkan "mode SQLCMD" di editor T-SQL di Visual Studio. Ada tombol di paling kanan di bilah tombol dengan tanda "!" di dalamnya yang seharusnya mengaktifkan ini. Atau Anda dapat pergi ke menu SQL , pilih Transact-SQL Editor -> , pilih Execution Settings -> , lalu akhirnya pilih Mode SQLCMD . Sekarang ketika Anda Jalankan skrip, itu akan menafsirkan dengan benar
:r
, seperti proses build / publish.Selain itu, Skrip Post Deploy (PDS) Anda perlu memiliki Build Action yang ditetapkan ke PostDeploy . Jika diatur ke Tidak ada maka akan dilewati seluruhnya oleh proses pembuatan SSDT.
sumber
Kesalahan Valid
Ini karena
:r somescript.sql
sql tidak valid. Anda melihat kesalahan sintaks, yang persis seperti yang dinyatakan pesan kesalahan.Mode SQLCMD
Skrip penyebaran pos dijalankan di bawah Mode SQLCMD.
Resolusi
Ingatlah bahwa Anda dapat terhubung ke DB dan menjalankan sql dari Visual Studio. Anda akan melihat kesalahan sintaksis yang sama ini jika Anda membuka skrip yang sama dalam SSMS. Namun, di SSMS dan Visual Studio, Anda dapat "mengaktifkan" Mode SQLCMD.
VS 2017
SSMS 17, SSMS 18
Lihat juga
sumber