Saya memiliki 4 skrip sql yang ingin saya jalankan di DACPAC di PostDeployment, tetapi ketika saya mencoba membangun proyek VS untuk 3 diantaranya saya mendapatkan kesalahan ini:
Only one statement is allowed per batch. A batch separator, such as 'GO', might be required between statements.
Script hanya berisi INSERT
pernyataan dalam tabel berbeda pada DB. Dan semuanya terstruktur seperti itu
IF NOT EXISTS (SELECT 1 FROM dbo.Criteria WHERE Name = 'Mileage') INSERT INTO dbo.Criteria(Name) VALUES ('Mileage');
hanya pada tabel berbeda dan dengan data berbeda.
Pertanyaan saya adalah mengapa VS mengeluh tentang 3 dari mereka ketika semua skrip sama dalam hal sintaks dan operasi?
PS: Menambahkan 'GO' di antara pernyataan sebagai kesalahan tidak menunjukkan apa-apa.
sql
sql-server
visual-studio-2012
dacpac
Cosmin Ionascu
sumber
sumber
Terlepas dari ini tampaknya sudah cukup lama saya terjebak selama beberapa jam dengan itu juga dan saya pikir cara ini bisa bermanfaat bagi banyak orang.
Dalam
Database project
, file ditetapkan sebagaiBuild
dianggap sebagai struktur Database sehingga hanya satu pernyataan yang diizinkan dalam file tersebut dengan desain.Go
atau terminator batch lain tidak akan mengubah perilaku itu, pesan itu hanyalah kesalahan. Info lebih lanjut di sini.Ada banyak opsi build lain untuk file dalam proyek semacam itu. Untuk kasus Anda tampaknya begitu
PostDeploy
. Dalam file seperti itu Anda dapat memiliki berbagai perintah sepertiinserts
dll.Kemudian Anda dapat menggunakan output dari proyek Database sebagai file dacpac untuk aplikasi Data-Tier DB (Kalau tidak itu tidak termasuk).
sumber
Hapus; (semi-colon) dari yang terakhir dari setiap pernyataan dan saya tidak yakin tetapi GO tidak diperlukan antara pernyataan memasukkan di atas.
sumber