Database dari versi sebelumnya SQL Server menjadi tidak dapat digunakan bila Anda memasang ke contoh SQL Server 2012

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 2710782 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

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 dinamakan Test_RO_FG_DB.
  • Database berisi kelompok berkas berikut:
    • Utama
    • RO_FG
    • RW_FG
  • Filegroup yang bernama RO_FG ditandai sebagai READ_ONLY.
  • Anda menginstal contoh baru dari Microsoft SQL Server 2012. Contoh ini 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 galat yang menyerupai berikut ini:
    MSG 3415, tingkat 16, negara bagian 2, garis jatuh berseri 1
    Database 'Test_RO_FG_DB' tidak dapat ditingkatkan karena hal itu baca-saja, memiliki read-only file atau pengguna tidak memiliki izin untuk mengubah beberapa file. Membuat database atau file ditulisi, dan jalankan kembali pemulihan.
  • Anda mencoba untuk melekatkan kembali database Test_RO_FG_DB untuk INST1.
Dalam skenario ini, Anda tidak bisa kembali database untuk INST1. Dan, Anda menerima pesan galat berikut di log kesalahan SQL Server:

2012-05 / 03 22:55:45.37 spid52 mulai database 'Test_RO_FG_DB'.
2012-05-03 22:55:45.78 spid52 * *******************************************************************************
2012-05 / 03 22:55:45.78 spid52 * mulai STACK DUMP:
2012-05 / 03 22:55:45.78 spid52 * 05/03/12 22: 55: 45 spid 52
2012-05 / 03 22:55:45.78 spid52 * lokasi: logscan.cpp:1490
2012-05 / 03 22:55:45.78 spid52 * ekspresi: palsu
2012-05 / 03 22:55:45.78 spid52 * SPID: 52
2012-05 / 03 22:55:45.78 spid52 * proses ID: 9156
2012-05 / 03 22:55:45.78 spid52 * deskripsi: nilai tidak sah switch
2012-05 / 03 22:55:45.78 spid52 * byte masukan Buffer 98 -
2012-05 / 03 22:55:45.78 spid52 * mengubah database Test_RO_FG_DB mengatur online
2012-05 / 03 22:55:51.05 spid52 Error: 17065, keparahan: 16 negara: 1.
2012-05 / 03 22:55:51.05 spid52 SQL Server pernyataan: File: <logscan.cpp>, baris = 1490 gagal pernyataan = saklar tidak valid 'Palsu' nilai. Kesalahan ini mungkin berhubungan dengan waktu. Jika kesalahan tetap ada setelah pernyataan Siarang, menggunakan DBCC CHECKDB untuk memeriksa database untuk integritas struktural, atau me-restart server untuk memastikan struktur data di kehabisan memori tidak rusak.
2012-05 / 03 22:55:51.10 spid52 Error: 3624, keparahan: 20 negara: 1.
2012-05 / 03 22:55:51.10 spid52 a sistem pernyataan cek telah gagal. Periksa log galat SQL Server untuk rincian. Biasanya, kegagalan pernyataan yang disebabkan oleh peranti penangkap lunak bug atau data korupsi. Untuk memeriksa database korupsi, mempertimbangkan menjalankan DBCC CHECKDB. Jika Anda setuju untuk mengirim dump ke Microsoft selama penataan, mini dump akan dikirim ke Microsoft. Pembaruan mungkin tersedia dari Microsoft dalam paket layanan terbaru atau QFE dari dukungan teknis.
2012-05 / 03 22:56:09.16 spid52 Error: hingga sepanjang 3414, keparahan: 21 negara: 1.
2012-05 / 03 22:56:09.16 spid52 An error terjadi selama pemulihan, mencegah database 'Test_RO_FG_DB' (database ID 19) untuk me-restart. Mendiagnosa pemulihan kesalahan dan memperbaikinya, atau memulihkan dari cadangan baik dikenal. Jika galat tidak diperbaiki atau diharapkan, hubungi dukungan teknis.
2012-05 / 03 22:56:09.18 spid52 Error: 928, keparahan: 20 negara: 1.
2012-05 / 03 22:56:09.18 spid52 selama upgrade database mengangkat pengecualian 926 keparahan 14, negara bagian 1, alamat penyuratan 0000000000F6A971. Menggunakan nomor pengecualian untuk menentukan penyebabnya.</logscan.cpp>


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

PENYEBAB

Masalah ini terjadi karena SQL Server 2012 tidak mendeteksi filegroup baca-saja sebelum dimulai untuk meng-upgrade database. Setelah upgrade telah dimulai, SQL Server 2012 menulis entri log transaksi. Versi sebelumnya tidak dapat membaca entri log transaksi yang baru.

STATUS

Microsoft telah mengkonfirmasi bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana didaftar di dalam bagian "Applies to".

PEMECAHAN MASALAH

Informasi pembaruan kumulatif

SQL Server 2012

Perbaikan untuk masalah ini pertama kali dirilis pada 2 Update kumulatif untuk SQL Server 2012. Untuk informasi lebih lanjut tentang paket pembaruan kumulatif ini, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
2703275 Paket pembaruan kumulatif 2 untuk SQL Server 2012
Catatan Karena membangun kumulatif, setiap baru memperbaiki rilis berisi semua perbaikan terbaru dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2012 memperbaiki rilis. Microsoft menganjurkan agar Anda menerapkan terbaru fix release yang berisi perbaikan terbaru ini. Untuk informasi lebih lanjut, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
2692828 SQL Server 2012 membangun yang dibebaskan setelah SQL Server 2012 dirilis
Anda harus menerapkan perbaikan terbaru SQL Server 2012 instalasi SQL Server 2012.

TEKNIK PEMECAHAN MASALAH

Untuk mengatasi masalah ini, gunakan salah satu metode berikut.

Metode 1

gulung balik cadangan dari database dari INST1 pada INST2.

Catatan Masalah yang dijelaskan di bagian "Gejala" tidak terjadi pada tahun 2012 SQL Server ketika Anda memulihkan cadangan dari versi sebelumnya.

Metode 2

Menjalankan upgrade di tempat versi SQL Server SQL Server 2012.

Metode 3

Memindahkan database yang berisi baca-saja filegroup untuk sebuah contoh SQL Server 2012. Untuk melakukannya, ikuti langkah berikut.

Catatan Lakukan langkah 4 sampai 11 pada server yang menjalankan SQL Server 2012. Sebagai contoh, lakukan langkah-langkah 4 sampai 11 pada INST2.
  1. Pada INST1, melepaskan database. Sebagai contoh, melepaskan Test_RO_FG_DB database.
  2. Memindahkan file database ke server yang host contoh INST2.
  3. Mencoba untuk melampirkan database ke INST2. Dalam kode contoh berikut menunjukkan cara untuk melakukannya:
    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 galat 3425 yang disebutkan di bagian "Gejala".
  4. Pada prompt perintah, mengubah nama file database. Perintah contoh berikut menunjukkan cara untuk melakukannya:
    rename Test_RO_FG.mdf original_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf
  5. Dalam SQL Server Management Studio, menciptakan database yang memiliki nama yang sama dan struktur fisik sebagai database yang ingin Anda sertakan. Dalam kode contoh berikut menunjukkan cara untuk melakukannya:
    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. Set database untuk offline. Untuk melakukan ini, jalankan perintah berikut:
    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINE
    GO
  7. Pada prompt perintah, mengubah nama file dalam database baru. Perintah contoh berikut menunjukkan cara untuk melakukannya:
    rename Test_RO_FG.mdf new_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf
  8. Pada prompt perintah, mengubah nama file dalam database yang Anda pindah pada langkah 2. Ubah nama berkas untuk mencocokkan database yang Anda buat di langkah 4. Perintah contoh berikut menunjukkan cara untuk melakukannya:
    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. Set database untuk ONLINE. Untuk melakukan ini, jalankan perintah berikut:
    ALTER DATABASE [Test_RO_FG_DB] SET ONLINE
    GO
  10. Verifikasi bahwa database online, dan gulung balik fungsi layanan Broker.
  11. Menghapus file database yang tidak diperlukan. Perintah contoh berikut menunjukkan cara untuk melakukannya:
    del /P new_Test_RO_FG.mdf
    del /P new_Test_RO_FG_File1.ndf
    del /P new_Test_RW_FG_File1.ndf
    del /P new_Test_RO_FG_log.ldf
Metode 4

Dipenggal melampirkan sebuah database yang berisi baca-saja filegroup untuk contoh sebelumnya SQL Server. Untuk melakukannya, ikuti langkah berikut.

Catatan
  • Database juga berisi entri log transaksi baru dari upgrade gagal.
  • Jalankan langkah 3 hingga 10 pada server yang menjalankan versi sebelumnya SQL Server. Sebagai contoh, lakukan langkah-langkah 3 hingga 10 pada INST1.

  1. Memindahkan file database contoh SQL Server yang menjadi host INST1.
  2. Mencoba untuk melampirkan database ke INST1. Dalam kode contoh berikut menunjukkan cara untuk melakukannya:
    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 ATTACH
    GO
    Catatan Anda akan menerima pesan galat 3624 yang disebutkan di bagian "Gejala". Anda juga akan menerima pesan galat 1813.
  3. Pada prompt perintah, mengubah nama file database di INST1. Perintah contoh berikut menunjukkan cara untuk melakukannya:
    rename Test_RO_FG.mdf original_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf
  4. Dalam SQL Server Management Studio, menciptakan database yang memiliki nama yang sama dan struktur fisik sebagai database yang ingin Anda sertakan. Dalam kode contoh berikut menunjukkan cara untuk melakukannya:
    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. Set database untuk offline. Untuk melakukan ini, jalankan perintah berikut:
    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINE
    GO
  6. Pada prompt perintah, mengubah nama file dalam database baru. Perintah contoh berikut menunjukkan cara untuk melakukannya:
    rename Test_RO_FG.mdf new_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf
  7. Pada prompt perintah, mengubah nama file dalam database yang Anda pindah pada langkah 2. Ubah nama berkas untuk mencocokkan database yang Anda buat di langkah 4. Perintah contoh berikut menunjukkan cara untuk melakukannya:
    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. Mengatur database ke modus darurat, dan melakukan perbaikan. Untuk melakukan ini, jalankan perintah berikut.

    Catatan Log transaksi database dibangun selama langkah ini. Hal ini dapat mengakibatkan kehilangan data. Oleh karena itu, sebaiknya Anda cadangan database sebelum Anda menjalankan langkah ini.
    ALTER DATABASE Test_RO_FG_DB SET EMERGENCY
    GO
    ALTER DATABASE Test_RO_FG_DB SET SINGLE_USER
    GO
    DBCC CHECKDB (Test_RO_FG_DB, repair_allow_data_loss) WITH ALL_ERRORMSGS
    GO
    ALTER DATABASE Test_RO_FG_DB SET MULTI_USER
    GO
  9. Verifikasi bahwa database online, dan gulung balik fungsi layanan Broker.
  10. Menghapus file database yang tidak diperlukan. Perintah contoh berikut menunjukkan cara untuk melakukannya:
    del /P new_Test_RO_FG.mdf
    del /P new_Test_RO_FG_File1.ndf
    del /P new_Test_RW_FG_File1.ndf
    del /P new_Test_RO_FG_log.ldf

INFORMASI LEBIH LANJUT

Ada beberapa langkah yang terjadi saat database melekat contoh SQL Server. Langkah-langkah ini termasuk memulihkan database dan meng-upgrade file dari versi sebelumnya dari SQL Server.

Dalam edisi yang dijelaskan di bagian "Gejala", SQL Server 2012 mulai proses upgrade sebelum read-only file dalam database terdeteksi. Langkah-langkah upgrade mencakup mulai transaksi untuk menghapus "bersih menutup" sedikit di halaman boot database. Versi sebelumnya SQL Server tidak dapat membaca catatan transaksi mulai. Oleh karena itu, basis data tidak dapat digunakan dalam versi sebelumnya dari SQL Server, dan SQL Server menghasilkan kesalahan 3624.

Di tempat upgrade ketika database ditandai sebagai baca-saja

Ketika Anda menjalankan upgrade di tempat dari suatu contoh dari SQL Server yang berisi baca-saja database yang bernama Test_RO_DB untuk SQL Server 2012, Anda mungkin menerima pesan galat yang menyerupai berikut di log kesalahan SQL Server:

2012-05-04 21:03:59.23 spid19s mulai database 'Test_RO_DB'.
2012-05-04 21:03:59.56 spid19s Converting database 'Test_RO_DB' dari versi 661 untuk versi 706.
2012-05-04 21:03:59.56 spid19s Error: 928, keparahan: 20 negara: 1.
2012-05-04 21:03:59.56 spid19s selama upgrade, database mengangkat pengecualian 3415, keparahan 16, negara bagian 1, alamat penyuratan 000007FEE66D784A. Menggunakan nomor pengecualian untuk menentukan penyebabnya.
2012-05-04 21:03:59.61 spid19s Error: 3415, keparahan: 16 negara: 1.
2012-05-04 21:03:59.61 spid19s Database 'Test_RO_DB' tidak dapat ditingkatkan karena hal itu baca-saja, memiliki read-only file atau pengguna tidak memiliki izin untuk mengubah beberapa file. Membuat database atau file ditulisi, dan jalankan kembali pemulihan.


Pada akhir proses upgrade, Test_RO_DB database akan di negara RECOVERY_PENDING. Anda harus menggunakan perintah Mengubah DATABASE untuk mengatur database untuk READ_WRITE. Kemudian gunakan perintah Mengubah DATABASE untuk menetapkan database untuk READ_ONLY. Hal ini memungkinkan mesin SQL Server database-upgrade ke versi yang benar.

Di tempat upgrade ketika membaca/menulis database berisi kelompok file yang ditandai sebagai baca-saja

Ketika Anda menjalankan upgrade di tempat untuk SQL Server 2012, Anda mungkin menerima pesan yang menyerupai berikut di log kesalahan SQL Server. Masalah ini terjadi saat contoh sebelumnya SQL server host database baca/tulis dan berisi kelompok file yang ditandai READ_ONLY. Namun, proses upgrade selesai seperti yang diharapkan, dan database mulai online.

Catatan Dalam pesan kesalahan berikut, database bernama Test_RO_FG:

2012-05-04 21:03:59.23 spid18s mulai database 'Test_RO_FG'.
2012-05-04 21:03:59.71 spid18s Converting database 'Test_RO_FG' dari versi 661 untuk versi 706.
2012-05-04 21:03:59.71 spid18s Database 'Test_RO_FG' menjalankan langkah upgrade dari versi 661 ke versi 668.



Properti

ID Artikel: 2710782 - Kajian Terakhir: 18 Juni 2012 - Revisi: 2.0
Berlaku bagi:
  • Microsoft SQL Server 2012 Enterprise
Kata kunci: 
kbsurveynew kbprb kbtshoot kbmt KB2710782 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini: 2710782

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com