Saya telah mengunduh sampel Dalam-memori berbasis AdventureWorks dari sini , dan mengikuti semua langkah yang dijelaskan dalam dokumen yang menyertai. Namun, ketika saya mencoba menjalankan skrip di SQL Server Management Studio, saya mendapatkan pesan kesalahan:
ALTER DATABASE pernyataan tidak diizinkan dalam transaksi multi-pernyataan
Kesalahan menunjuk ke baris 9, yaitu:
IF NOT EXISTS (SELECT * FROM sys.data_spaces WHERE type='FX')
ALTER DATABASE CURRENT ADD FILEGROUP [AdventureWorks2012_mod]
CONTAINS MEMORY_OPTIMIZED_DATA
GO
Karena ini (kurang lebih) dokumentasi resmi Microsoft, saya berasumsi itu adalah sesuatu yang saya lakukan salah, tetapi saya tidak tahu apa itu.
sumber
Saya setuju dengan @AaronBertrand Anda tidak melakukan kesalahan. Ini bukan pertama kalinya saya melihat skrip Microsoft dengan bug di dalamnya. Secara realistis dengan sebanyak mungkin skrip yang mereka terbitkan, saya akan terkejut tidak melihatnya.
Khususnya masalahnya adalah yang
ALTER DATABASE
tidak diperbolehkan dalam transaksi sama sekali. Anda dapat melihat referensi BOL di sini: Pernyataan Transact-SQL Diizinkan dalam TransaksiBahkan skrip sesederhana ini gagal dengan kesalahan yang sama.
Seperti kata Aaron, hapus penanganan transaksi (atau setidaknya
ALTER DATABASE
pernyataan dari transaksi) dan Anda harus baik-baik saja.sumber
Gunakan "Pergi" untuk memisahkan transaksi. Itu akan menyelesaikan masalah. (Lebih mudah dijalankan satu per satu.) Juga dapat mengubah level Isolasi (Tidak diuji)
sumber
ALTER DATABASE
tidak dapat dilakukan dalam suatu transaksi. Mengatur level isolasiSERIALIZABLE
tidak berpengaruh pada hal ini.