Masuk dengan Microsoft
Masuk atau buat akun.
Halo,
Pilih akun lain.
Anda memiliki beberapa akun
Pilih akun yang ingin Anda gunakan untuk masuk.

Gejala

Pertimbangkan skenario berikut:

  • Anda menginstal contoh Microsoft SQL Server 2005, Microsoft SQL Server 2008, atau Microsoft SQL Server 2008 R2.

  • Contoh SQL Server bernama INST1 dan host database yang bernama Test_RO_FG_DB.

  • Database berisi grup file berikut:

    • Utama

    • RO_FG

    • RW_FG

  • Filegroup yang bernama RO_FG ditandai sebagai READ_ONLY.

  • Anda menginstal contoh baru Microsoft SQL Server 2012. Contoh SQL Server 2012 bernama INST2.

  • Anda melepaskan database Test_RO_FG_DB dari INST1.

  • Anda mencoba untuk melampirkan Test_RO_FG_DB database ke INST2.

  • Anda menerima pesan kesalahan yang menyerupai yang berikut ini:

    MSG 3415, tingkat 16, negara bagian 2, baris 1Database ' Test_RO_FG_DB ' tidak bisa dimutakhirkan karena bersifat baca-saja, memiliki file baca-saja atau pengguna tidak memiliki izin untuk mengubah beberapa file. Buat database atau file dapat ditulis, dan jalankan ulang pemulihan.

  • Anda mencoba untuk melampirkan kembali database Test_RO_FG_DB ke INST1.

Dalam skenario ini, Anda tidak bisa melampirkan kembali database ke INST1. Dan, Anda menerima pesan kesalahan berikut dalam log kesalahan SQL Server:

Catatan Masalah ini hanya terjadi ketika Anda mencoba melampirkan database yang berisi filegroup yang ditandai READ_ONLY. Masalah ini tidak terjadi ketika Anda mencoba memindahkan database READ_ONLY tempat semua data ditandai READ_ONLY.

Penyebab

Masalah ini terjadi karena SQL Server 2012 tidak mendeteksi file baca-saja sebelum dimulai untuk memutakhirkan database. Setelah pemutakhiran dimulai, SQL Server 2012 menulis entri ke log transaksi. Versi yang lebih lama tidak dapat membaca entri log transaksi baru.

Status

Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".

Pemecahan Masalah

Informasi pembaruan kumulatif

SQL Server 2012

Perbaikan untuk masalah ini pertama kali dirilis dalam pembaruan kumulatif 2 untuk SQL Server 2012. Untuk informasi selengkapnya tentang paket pembaruan kumulatif ini, klik nomor artikel berikut ini untuk menampilkan artikel di Basis Pengetahuan Microsoft:

2703275 Paket pembaruan kumulatif 2 untuk SQL Server 2012Catatan Karena Build bersifat kumulatif, setiap rilis perbaikan baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan rilis perbaikan SQL Server 2012 sebelumnya. Microsoft menganjurkan agar Anda mempertimbangkan penerapan rilis perbaikan terbaru yang berisi hotfix ini. Untuk informasi selengkapnya, klik nomor artikel berikut untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

2692828 Build 2012 SQL Server yang dirilis setelah SQL Server 2012 dirilis Anda harus menerapkan hotfix SQL Server 2012 ke instalasi SQL Server 2012.

Penyelesaian Masalah

Untuk mengatasi masalah ini, gunakan salah satu metode berikut ini.Metode 1Memulihkan cadangan database dari INST1 di INST2.Catatan Masalah yang dijelaskan di bagian "gejala" tidak terjadi di SQL Server 2012 saat Anda memulihkan cadangan dari versi yang lebih lama.Metode 2Melakukan pemutakhiran di tempat dari versi SQL Server yang lebih lama ke SQL Server 2012.Metode 3Memindahkan database yang berisi file baca-saja ke contoh SQL Server 2012. Untuk melakukannya, ikuti langkah-langkah berikut.Catatan Lakukan langkah 4 hingga 11 di server yang menjalankan SQL Server 2012. Misalnya, lakukan langkah 4 sampai 11 di INST2.

  1. Di INST1, lepaskan database. Misalnya, lepaskan database Test_RO_FG_DB.

  2. Memindahkan file database ke server yang menjadi host instance INST2.

  3. Cobalah untuk melampirkan database ke INST2. Kode contoh berikut ini memperlihatkan cara melakukan ini:

    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG.mdf' ), FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_File1.ndf' ), FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RW_FG_File1.ndf' )LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_log.ldf' )FOR ATTACH;GO

    Catatan Anda akan menerima pesan kesalahan 3425 yang disebutkan di bagian "gejala".

  4. Pada prompt perintah, ganti nama file database. Perintah contoh berikut ini memperlihatkan cara melakukan ini:

    rename Test_RO_FG.mdf original_Test_RO_FG.mdfrename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndfrename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndfrename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf 
  5. Di SQL Server Management Studio, buat database yang memiliki nama dan struktur fisik yang sama seperti database yang ingin Anda lampirkan. Kode contoh berikut ini memperlihatkan cara melakukan ini:

    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_DB.mdf' , SIZE = 4072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RW_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GO
  6. Mengatur database ke offline. Untuk melakukan ini, jalankan perintah berikut:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  7. Pada prompt perintah, ganti nama file di database baru. Perintah contoh berikut ini memperlihatkan cara melakukan ini:

    rename Test_RO_FG.mdf new_Test_RO_FG.mdfrename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndfrename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndfrename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf 
  8. Pada prompt perintah, ganti nama file dalam database yang Anda Pindahkan di langkah 2. Ganti nama file yang sesuai dengan database yang Anda buat di langkah 4. Perintah contoh berikut ini memperlihatkan cara melakukan ini:

    rename original_Test_RO_FG.mdf Test_RO_FG.mdf rename original_Test_RO_FG_File1.ndf Test_RO_FG_File1.ndf rename original_Test_RW_FG_File1.ndf Test_RW_FG_File1.ndf rename original_Test_RO_FG_log.ldf Test_RO_FG_log.ldf 
  9. Atur database ke ONLINE. Untuk melakukan ini, jalankan perintah berikut:

    ALTER DATABASE [Test_RO_FG_DB] SET ONLINEGO 
  10. Verifikasi bahwa database sedang online, dan tetapkan ulang fungsionalitas pialang layanan.

  11. Hapus file database yang tidak diperlukan. Perintah contoh berikut ini memperlihatkan cara melakukan ini:

    del /P new_Test_RO_FG.mdfdel /P new_Test_RO_FG_File1.ndfdel /P new_Test_RW_FG_File1.ndfdel /P new_Test_RO_FG_log.ldf 

Metode 4Melampirkan kembali database yang berisi file baca-saja ke contoh SQL Server yang lebih lama. Untuk melakukannya, ikuti langkah-langkah berikut.Catatan

  • Database juga berisi entri log transaksi baru dari pemutakhiran yang gagal.

  • Lakukan langkah 3 hingga 10 di server yang menjalankan versi SQL Server yang lebih lama. Misalnya, lakukan langkah 3 hingga 10 di INST1.

  1. Memindahkan file database ke contoh SQL Server yang menjadi inang INST1.

  2. Cobalah untuk melampirkan database ke INST1. Kode contoh berikut ini memperlihatkan cara melakukan ini:

    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_DB.mdf' ), FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_File1.ndf' ), FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RW_FG_File1.ndf' )LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_log.ldf' )FOR ATTACHGO

    Catatan Anda akan menerima pesan kesalahan 3624 yang disebutkan di bagian "gejala". Anda juga akan menerima pesan kesalahan 1813.

  3. Pada prompt perintah, ganti nama file database di INST1. Perintah contoh berikut ini memperlihatkan cara melakukan ini:

    rename Test_RO_FG.mdf original_Test_RO_FG.mdfrename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndfrename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndfrename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf 
  4. Di SQL Server Management Studio, buat database yang memiliki nama dan struktur fisik yang sama seperti database yang ingin Anda lampirkan. Kode contoh berikut ini memperlihatkan cara melakukan ini:

    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_DB.mdf' , SIZE = 4072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RW_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GO
  5. Mengatur database ke offline. Untuk melakukan ini, jalankan perintah berikut:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  6. Pada prompt perintah, ganti nama file di database baru. Perintah contoh berikut ini memperlihatkan cara melakukan ini:

    rename Test_RO_FG.mdf new_Test_RO_FG.mdfrename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndfrename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndfrename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf 
  7. Pada prompt perintah, ganti nama file dalam database yang Anda Pindahkan di langkah 2. Ganti nama file yang sesuai dengan database yang Anda buat di langkah 4. Perintah contoh berikut ini memperlihatkan cara melakukan ini:

    rename original_Test_RO_FG.mdf Test_RO_FG.mdf rename original_Test_RO_FG_File1.ndf Test_RO_FG_File1.ndf rename original_Test_RW_FG_File1.ndf Test_RW_FG_File1.ndf rename original_Test_RO_FG_log.ldf Test_RO_FG_log.ldf 
  8. Atur database ke mode darurat, dan lakukan perbaikan. Untuk melakukan ini, jalankan perintah berikut ini.Catatan Log transaksi database dibangun kembali selama langkah ini. Hal ini mungkin mengakibatkan hilangnya data. Oleh karena itu, kami menyarankan agar Anda membuat cadangan database sebelum melakukan langkah ini.

    ALTER DATABASE Test_RO_FG_DB SET EMERGENCYGOALTER DATABASE Test_RO_FG_DB SET SINGLE_USERGODBCC CHECKDB (Test_RO_FG_DB, repair_allow_data_loss) WITH ALL_ERRORMSGSGOALTER DATABASE Test_RO_FG_DB SET MULTI_USERGO 
  9. Verifikasi bahwa database sedang online, dan tetapkan ulang fungsionalitas pialang layanan.

  10. Hapus file database yang tidak diperlukan. Perintah contoh berikut ini memperlihatkan cara melakukan ini:

    del /P new_Test_RO_FG.mdfdel /P new_Test_RO_FG_File1.ndfdel /P new_Test_RW_FG_File1.ndfdel /P new_Test_RO_FG_log.ldf 

Informasi Selengkapnya

Ada beberapa langkah yang terjadi ketika database dilampirkan ke contoh SQL Server. Langkah-langkah ini termasuk memulihkan database dan memutakhirkan file dari versi SQL Server yang lebih lama. Dalam masalah yang dijelaskan di bagian "gejala", SQL Server 2012 memulai proses pemutakhiran sebelum file baca-saja dalam database terdeteksi. Langkah-langkah pemutakhiran termasuk memulai transaksi untuk mengosongkan sedikit "Shut Down off" di halaman boot dari database. Versi SQL Server yang lebih lama tidak dapat membaca catatan mulai transaksi. Oleh karena itu, database tidak dapat digunakan dalam versi SQL Server yang lebih lama, dan SQL Server menghasilkan kesalahan 3624.Pemutakhiran di tempat saat database ditandai sebagai baca-sajaKetika Anda melakukan pemutakhiran di tempat dari contoh SQL Server yang berisi database baca-saja yang bernama Test_RO_DB ke SQL Server 2012, Anda mungkin menerima pesan kesalahan yang menyerupai yang berikut ini dalam log kesalahan SQL Server:

Di akhir proses pemutakhiran, database Test_RO_DB akan berada dalam status RECOVERY_PENDING. Anda harus menggunakan perintah mengubah database untuk mengatur database ke READ_WRITE. Lalu gunakan perintah Ubah database untuk mengatur database menjadi READ_ONLY. Ini memungkinkan mesin SQL Server memutakhirkan database ke versi yang benar.Pemutakhiran di tempat saat database baca/tulis berisi grup file yang ditandai sebagai baca-sajaKetika Anda menjalankan Pemutakhiran di tempat ke SQL Server 2012, Anda mungkin menerima pesan yang menyerupai berikut ini dalam log kesalahan SQL Server. Masalah ini terjadi ketika contoh SQL Server yang lebih lama menghosting database baca/tulis dan berisi grup file yang ditandai READ_ONLY. Namun, proses pemutakhiran selesai seperti yang diharapkan, dan database dimulai secara online.Catatan Dalam pesan kesalahan berikut, database bernama Test_RO_FG:

Perlu bantuan lainnya?

Ingin opsi lainnya?

Jelajahi manfaat langganan, telusuri kursus pelatihan, pelajari cara mengamankan perangkat Anda, dan banyak lagi.

Komunitas membantu Anda bertanya dan menjawab pertanyaan, memberikan umpan balik, dan mendengar dari para ahli yang memiliki pengetahuan yang luas.

Apakah informasi ini berguna?

Seberapa puaskah Anda dengan kualitas bahasanya?
Apa yang memengaruhi pengalaman Anda?
Dengan menekan kirim, umpan balik Anda akan digunakan untuk meningkatkan produk dan layanan Microsoft. Admin TI Anda akan dapat mengumpulkan data ini. Pernyataan Privasi.

Terima kasih atas umpan balik Anda!

×