Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Simptomi

Iedomājieties šādu scenāriju:

  • Jūs instalējat Microsoft SQL Server 2005, Microsoft SQL Server 2008 vai Microsoft SQL Server 2008 R2 instanci.

  • SQL Server instances nosaukums ir INST1 un vieso datu bāzi, kuras nosaukums ir Test_RO_FG_DB.

  • Datu bāzē ir šādas failu grupas:

    • Primāro

    • RO_FG

    • RW_FG

  • Filegroup, kura nosaukums ir RO_FG, ir atzīmēts kā READ_ONLY.

  • Jūs instalējat jaunu Microsoft SQL Server 2012 instanci. Šis SQL Server 2012 instances nosaukums ir INST2.

  • Test_RO_FG_DB datu bāzi noņemat no INST1.

  • Jūs mēģināt pievienot Test_RO_FG_DB datu bāzi INST2.

  • Tiek parādīts kļūdas ziņojums, kas līdzīgs šim:

    Msg 3415, Level 16, State 2, Line 1Datu bāzu ' Test_RO_FG_DB nevar jaunināt, jo tas ir tikai lasāms, vai arī lietotājam nav atļauju modificēt dažus failus. Veidojiet datu bāzi vai failus un atkārtoti palaidiet atkopšanu.

  • Jūs mēģināt vēlreiz pievienot Test_RO_FG_DB datu bāzi INST1.

Šajā scenārijā datu bāzi nevar atkal pievienot INST1. Un SQL Server kļūdu žurnālfailā tiek parādīts šāds kļūdas ziņojums:

Piezīme. Šī problēma rodas tikai tad, ja mēģināt pievienot datu bāzi, kurā ir filegroup, kas ir atzīmēta READ_ONLY. Šī problēma nerodas, kad mēģināt pārvietot READ_ONLY datu bāzi, kurā visi dati ir atzīmēti READ_ONLY.

Cēlonis

Šī problēma rodas tāpēc, ka SQL Server 2012 nenosaka tikai lasāmu filegroup, pirms tā sāk jaunināt datu bāzi. Kad jaunināšana ir sākta, SQL Server 2012 raksta ierakstus transakciju žurnālfailā. Vecākas versijas nevar lasīt jaunus transakciju žurnālu ierakstus.

Statusa

Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".

Risinājums

Kumulatīvās atjaunināšanas informācija

SQL Server 2012

Šīs problēmas labojums pirmo reizi tika izlaists SQL Server 2012 kumulatīvajā atjauninājumā 2. Lai iegūtu papildinformāciju par šo kumulatīvās atjaunināšanas pakotni, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:

2703275 Kumulatīvās atjaunināšanas pakotne 2 SQL Server 2012Piezīme. Tā kā būvējums ir kumulatīvs, katrā jaunajā laidienā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā SQL Server 2012 labošanas laidienā. Microsoft iesaka, ka apsveriet iespēju lietot jaunāko labojumu laidienu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:

2692828 SQL Server 2012 būvējumi, kas tika izlaisti pēc tam, kad tika izlaists SQL Server 2012 SQL Server 2012 labojumfails ir jālieto SQL Server 2012.

Risinājums

Lai novērstu šo problēmu, izmantojiet kādu no tālāk norādītajām metodēm.1. metodeAtjaunojiet datu bāzes dublējumkopiju no INST1 pakalpojumā INST2.Piezīme. Problēma, kas ir aprakstīta sadaļā "Simptomi", nav sastopama SQL Server 2012, kad atjaunojat dublējumu no vecākas versijas.2. metodeVeikt iepriekšējās SQL Server versijas jaunināšanu vietā SQL Server 2012.3. metodePārvietojiet datu bāzi, kurā ir tikai lasāms filegroup uz SQL Server 2012 instanci. Lai to izdarītu, veiciet tālāk norādītās darbības.Piezīme. Veiciet 4. – 11. darbību serverī, kurā darbojas SQL Server 2012. Piemēram, veiciet 4. – 11. darbību INST2.

  1. Vietnē INST1 atvienojiet datu bāzi. Piemēram, noņemiet Test_RO_FG_DB datu bāzi.

  2. Pārvietojiet datu bāzes failus uz serveri, kas vieso INST2 instanci.

  3. Mēģināt pievienot datu bāzi INST2. Tālāk sniegtajā piemērā ir parādīts, kā to izdarīt:

    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

    Piezīme. Tiek parādīts kļūdas ziņojums 3425, kas ir norādīts sadaļā "Simptomi".

  4. Komandu uzvednē pārdēvējiet datu bāzes failus. Tālāk sniegtajā piemērā ir parādīts, kā to paveikt:

    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. Programmā SQL Server Management Studio izveidojiet datu bāzi, kurai ir tāds pats nosaukums un fiziskā struktūra kā datu bāzei, kuru vēlaties pievienot. Tālāk sniegtajā piemērā ir parādīts, kā to izdarīt:

    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. Iestatiet datu bāzi bezsaistē. Lai to paveiktu, izpildiet šādu komandu:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  7. Komandu uzvednē Pārdēvējiet failus jaunajā datu bāzē. Tālāk sniegtajā piemērā ir parādīts, kā to paveikt:

    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. Komandu uzvednē Pārdēvējiet failus datu bāzē, kurus pārvietojāt 2. darbībā. Pārdēvējiet failus, lai tie atbilstu datu bāzei, ko izveidojāt 4. darbībā. Tālāk sniegtajā piemērā ir parādīts, kā to paveikt:

    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. Iestatiet datu bāzi tiešsaistē. Lai to paveiktu, izpildiet šādu komandu:

    ALTER DATABASE [Test_RO_FG_DB] SET ONLINEGO 
  10. Pārbaudiet, vai datu bāze ir tiešsaistē, un vēlreiz izveidojiet pakalpojumu brokera funkcionalitāti.

  11. Izdzēsiet datu bāzes failus, kas nav nepieciešami. Tālāk sniegtajā piemērā ir parādīts, kā to paveikt:

    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 

4. metodeAtkārtoti pievienojiet datu bāzi, kurā ir tikai lasāms filegroup uz iepriekšējo SQL Server instanci. Lai to izdarītu, veiciet tālāk norādītās darbības.Piezīmes.

  • Datu bāzē ir arī jauni transakciju žurnālu ieraksti no neveiksmīgas jaunināšanas.

  • Izpildiet 3. – 10. darbību serverī, kurā darbojas vecākas SQL Server versijas. Piemēram, veiciet 3. – 10. darbību vietnē INST1.

  1. Pārvietojiet datu bāzes failus uz SQL Server, kas vieso INST1, instanci.

  2. Mēģināt pievienot datu bāzi INST1. Tālāk sniegtajā piemērā ir parādīts, kā to izdarīt:

    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

    Piezīme. Tiek parādīts kļūdas ziņojums 3624, kas ir norādīts sadaļā "Simptomi". Jūs saņemsit arī 1813 kļūdas ziņojumu.

  3. Komandu uzvednē pārdēvējiet datu bāzes failus vietnē INST1. Tālāk sniegtajā piemērā ir parādīts, kā to paveikt:

    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. Programmā SQL Server Management Studio izveidojiet datu bāzi, kurai ir tāds pats nosaukums un fiziskā struktūra kā datu bāzei, kuru vēlaties pievienot. Tālāk sniegtajā piemērā ir parādīts, kā to izdarīt:

    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. Iestatiet datu bāzi bezsaistē. Lai to paveiktu, izpildiet šādu komandu:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  6. Komandu uzvednē Pārdēvējiet failus jaunajā datu bāzē. Tālāk sniegtajā piemērā ir parādīts, kā to paveikt:

    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. Komandu uzvednē Pārdēvējiet failus datu bāzē, kurus pārvietojāt 2. darbībā. Pārdēvējiet failus, lai tie atbilstu datu bāzei, ko izveidojāt 4. darbībā. Tālāk sniegtajā piemērā ir parādīts, kā to paveikt:

    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. Iestatiet datu bāzi ārkārtas režīmā un veiciet labošanu. Lai to paveiktu, izpildiet tālāk norādīto komandu.Piezīme. Šīs darbības laikā tiek pārcelti datu bāzes transakciju žurnāli. Tas var izraisīt datu zudumu. Tāpēc pirms šīs darbības veikšanas ieteicams dublēt datu bāzi.

    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. Pārbaudiet, vai datu bāze ir tiešsaistē, un vēlreiz izveidojiet pakalpojumu brokera funkcionalitāti.

  10. Izdzēsiet datu bāzes failus, kas nav nepieciešami. Tālāk sniegtajā piemērā ir parādīts, kā to paveikt:

    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 

Papildinformācija

Ir vairākas darbības, kas notiek, ja datu bāze ir pievienota SQL Server instancei. Šīs darbības ietver datu bāzes atkopšanu un iepriekšējo SQL Server versiju failu jaunināšanu. Problēmu, kas aprakstīta sadaļā "Simptomi", SQL Server 2012 sāk jaunināšanas procesu, pirms tiek atrasti tikai lasāmi faili datu bāzē. Jaunināšanas darbības ietver darbības sākšanu, lai datu bāzes sāknēšanas lapā notīrītu bitu "Clean Shut Down". Vecākas SQL Server versijas nevar nolasīt sākuma transakcijas ierakstu. Tāpēc datu bāze nav lietojama iepriekšējās SQL Server versijās, un SQL Server ģenerē kļūdu 3624.Jaunināšana uz vietas, ja datu bāze ir atzīmēta kā tikai lasāmaVeicot tādu SQL Server instances jaunināšanu, kas satur tikai lasāmu datu bāzi, kas tiek nosaukta Test_RO_DB SQL Server 2012, var tikt parādīti kļūdu ziņojumi, kas līdzinās tālāk norādītajiem SQL Server kļūdu žurnālfailā.

Jaunināšanas procesa beigās Test_RO_DB datu bāze būs RECOVERY_PENDING stāvoklī. Lai iestatītu datu bāzi READ_WRITE, ir jāizmanto komanda mainīt datu bāzi . Pēc tam izmantojiet komandu mainīt datu bāzi, lai iestatītu datu bāzi READ_ONLY. Tādējādi SQL Server dzinējs var jaunināt datu bāzi uz pareizo versiju.Jaunināšana uz vietas, ja lasīšanas/rakstīšanas datu bāzē ir failu grupas, kas ir atzīmētas kā tikai lasāmasVeicot atrašanās vietas jaunināšanu uz SQL Server 2012, varat saņemt ziņojumus, kas līdzinās tālāk norādītajiem SQL Server kļūdu pierakstīšanās. Šī problēma rodas, ja vecākas SQL Server instances vieso lasīšanas/rakstīšanas datu bāzi un tajā ir iekļautas failu grupas, kas ir atzīmētas ar READ_ONLY. Tomēr jaunināšanas process ir pabeigts, kā paredzēts, un datu bāze tiek sākta tiešsaistē.Piezīme. Tālāk redzamajā kļūdas ziņojumā datu bāzei tiek piešķirts nosaukums Test_RO_FG:

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×