Prisijunkite prie „Microsoft“
Prisijunkite arba sukurkite paskyrą.
Sveiki,
Pasirinkti kitą paskyrą.
Turite kelias paskyras
Pasirinkite paskyrą, kurią naudodami norite prisijungti.

Simptomai

Apsvarstykite šį scenarijų:

  • Įdiegiate "Microsoft SQL Server 2005", "Microsoft SQL Server 2008" arba "Microsoft SQL Server 2008 R2" egzemplioriaus.

  • SQL serverio egzempliorius pavadintas INST1 ir jame yra duomenų bazė, pavadinta Test_RO_FG_DB.

  • Duomenų bazėje yra šios failų grupės:

    • Pirminio

    • RO_FG

    • RW_FG

  • RO_FG pavadintoje failų grupėje pažymėta READ_ONLY.

  • Įdiegiate naują "Microsoft SQL Server" 2012 egzempliorių. Šis SQL serverio 2012 egzempliorius pavadintas INST2.

  • Atsiejate Test_RO_FG_DB duomenų bazę iš INST1.

  • Bandote pridėti Test_RO_FG_DB duomenų bazę į "INST2".

  • Gaunate klaidos pranešimą, panašų į šį:

    MSG 3415, lygis 16, būsenos 2, eilutės 1Database "Test_RO_FG_DB" atnaujinti negalima, nes ji yra skirta tik skaityti, turi tik skaityti skirtus failus arba vartotojas neturi teisės modifikuoti kai kurių failų. Padarykite, kad duomenų bazė arba failai būtų įrašomūs, ir iš naujo paleiskite atkūrimo funkciją.

  • Bandote iš naujo pridėti Test_RO_FG_DB duomenų bazę į "INST1".

Šiuo atveju negalite iš naujo pridėti duomenų bazės į "INST1". Ir "SQL Server" klaidos pranešime gaunate šį klaidos pranešimą:

Pastaba Ši problema iškyla tik tada, kai bandote pridėti duomenų bazę, kurioje yra failų grupė, pažymėta READ_ONLY. Ši problema neiškyla bandant perkelti READ_ONLY duomenų bazę, kurioje visi duomenys pažymėti READ_ONLY.

Priežastis

Ši problema kyla dėl to, kad "SQL Server 2012" neaptiks tik skaitomos failų grupės, kol ji pradės naujinti duomenų bazę. Atnaujinus versiją, SQL serverio 2012 įrašo įrašus į operacijų žurnalui. Ankstesnėse versijose negalima skaityti naujų operacijų žurnalų įrašų.

Statusą

"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.

Sprendimas

Kaupiamojo naujinimo informacija

SQL serverio 2012

Šios problemos pataisa pirmą kartą buvo išleista Kaupiamasis naujinimas 2 SQL serverio 2012. Daugiau informacijos apie šį kaupiamųjų naujinimų paketą rasite spustelėję toliau nurodytą straipsnio numerį ir peržiūrėkite straipsnį "Microsoft" žinių bazėje:

2703275 Kaupiamojo naujinimo paketas 2 SQL serverio 2012Pastaba Kadangi komponavimo versijos yra kumuliacinės, kiekviena nauja pataisų versija yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio SQL serverio 2012 pataisų leidimo. "Microsoft" rekomenduoja apsvarstyti naujausių pataisų leidimų, kuriuose yra šios karštosios pataisos, taikymą. Jei reikia daugiau informacijos, spustelėkite toliau esantį straipsnio numerį ir peržiūrėkite straipsnį "Microsoft" žinių bazėje:

2692828 "SQL Server 2012" komponavimo versijos, išleistos po "SQL Server" 2012 išleidimo SQL serverio 2012 karštąją pataisą turite taikyti "SQL Server 2012" įdiegčiai.

Sprendimas

Norėdami išspręsti šią problemą, naudokite vieną iš toliau nurodytų būdų.1 būdasAtkurkite duomenų bazės atsarginę kopiją iš INST1 "INST2".Pastaba Problema, kuri aprašyta skyriuje "Požymiai", nepasireiškia "SQL Server" 2012, kai atkuriate ankstesnę versiją.2 būdasAtlikite ankstesnės versijos "SQL Server" versijos naujinimą į "SQL Server 2012".3 metodasPerkelti duomenų bazę, kurioje yra tik skaitymo failų grupė, prie SQL serverio 2012 egzemplioriaus. Norėdami tai padaryti, atlikite toliau nurodytus veiksmus.Pastaba Atlikite 4 – 11 veiksmus serveryje, kuriame veikia "SQL Server 2012". Pvz., atlikite veiksmus nuo 4 iki 11 "INST2".

  1. "INST1" duomenų bazė atjungta. Pavyzdžiui, atskirkite Test_RO_FG_DB duomenų bazę.

  2. Perkelkite duomenų bazės failus į serverį, kuriame yra INST2 egzemplioriaus.

  3. Pabandykite pridėti duomenų bazę į "INST2". Toliau pateiktas kodo pavyzdys nurodo, kaip tai padaryti:

    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

    Pastaba Gausite "3425" klaidos pranešimą, paminėtą skyriuje "Požymiai".

  4. Į komandinę eilutę pervardykite duomenų bazės failus. Toliau pateiktame komandų pavyzdyje rodoma, kaip tai padaryti:

    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. "SQL Server Management Studio" Sukurkite duomenų bazę, kuri turi tą patį pavadinimą ir fizinę struktūrą kaip duomenų bazę, kurią norite pridėti. Toliau pateiktas kodo pavyzdys nurodo, kaip tai padaryti:

    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. Duomenų bazės nustatymas neprisijungus. Norėdami tai padaryti, vykdykite šią komandą:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  7. Į komandinę eilutę pervardykite failus naujoje duomenų bazėje. Toliau pateiktame komandų pavyzdyje rodoma, kaip tai padaryti:

    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. Į komandinę eilutę pervardykite failus duomenų bazėje, kurią perkėlėte atlikdami 2 veiksmą. Pervardykite failus, kad jie atitiktų duomenų bazę, kurią sukūrėte atlikdami 4 veiksmą. Toliau pateiktame komandų pavyzdyje rodoma, kaip tai padaryti:

    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. Duomenų bazės nustatymas internete. Norėdami tai padaryti, vykdykite šią komandą:

    ALTER DATABASE [Test_RO_FG_DB] SET ONLINEGO 
  10. Patikrinkite, ar duomenų bazė yra internetinė, ir iš naujo nustatyti paslaugų brokerio funkcijas.

  11. Panaikinkite nereikalingus duomenų bazės failus. Toliau pateiktame komandų pavyzdyje rodoma, kaip tai padaryti:

    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 metodasIš naujo pridėkite duomenų bazę, kurioje yra tik skaitymo failų grupė prie ankstesnio SQL serverio egzemplioriaus. Norėdami tai padaryti, atlikite toliau nurodytus veiksmus.Pastabos

  • Duomenų bazėje taip pat yra naujų operacijų žurnalų įrašų iš nepavykusio versijos naujinimo.

  • Atlikite nuo 3 iki 10 veiksmų serveryje, kuriame veikia ankstesnė "SQL Server" versija. Pavyzdžiui, atlikite veiksmus nuo 3 iki 10 "INST1".

  1. Perkelkite duomenų bazės failus į SQL serverio, kuriame yra išteklių nuomos INST1, egzempliorių.

  2. Pabandykite pridėti duomenų bazę į "INST1". Toliau pateiktas kodo pavyzdys nurodo, kaip tai padaryti:

    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

    Pastaba Gausite "3624" klaidos pranešimą, paminėtą skyriuje "Požymiai". Taip pat gausite "1813" klaidos pranešimą.

  3. Į komandinę eilutę pervardykite duomenų bazės failus "INST1". Toliau pateiktame komandų pavyzdyje rodoma, kaip tai padaryti:

    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. "SQL Server Management Studio" Sukurkite duomenų bazę, kuri turi tą patį pavadinimą ir fizinę struktūrą kaip duomenų bazę, kurią norite pridėti. Toliau pateiktas kodo pavyzdys nurodo, kaip tai padaryti:

    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. Duomenų bazės nustatymas neprisijungus. Norėdami tai padaryti, vykdykite šią komandą:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  6. Į komandinę eilutę pervardykite failus naujoje duomenų bazėje. Toliau pateiktame komandų pavyzdyje rodoma, kaip tai padaryti:

    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. Į komandinę eilutę pervardykite failus duomenų bazėje, kurią perkėlėte atlikdami 2 veiksmą. Pervardykite failus, kad jie atitiktų duomenų bazę, kurią sukūrėte atlikdami 4 veiksmą. Toliau pateiktame komandų pavyzdyje rodoma, kaip tai padaryti:

    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. Nustatykite duomenų bazę iki AVARINIO režimo ir atkurkite. Norėdami tai padaryti, vykdykite šią komandą.Pastaba Duomenų bazės operacijų žurnalai bus atkurti atliekant šį veiksmą. Dėl to gali sumažėti duomenų praradimas. Todėl rekomenduojame sukurti atsarginę duomenų bazės kopiją prieš atliekant šį veiksmą.

    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. Patikrinkite, ar duomenų bazė yra internetinė, ir iš naujo nustatyti paslaugų brokerio funkcijas.

  10. Panaikinkite nereikalingus duomenų bazės failus. Toliau pateiktame komandų pavyzdyje rodoma, kaip tai padaryti:

    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 

Daugiau informacijos

Yra keletas veiksmų, kurie atsiranda, kai duomenų bazė prijungta prie SQL serverio egzemplioriaus. Šiuos veiksmus sudaro duomenų bazės atkūrimas ir ankstesnių "SQL Server" versijų failų atnaujinimas. Skyriuje "Požymiai" aprašyta problema, "SQL Server 2012" pradeda versijos naujinimo procesą, kol aptinkami tik skaitomi failai duomenų bazėje. Atnaujinimo veiksmai apima operacijos pradėjimas, kad išvalytumėte bitų "švariai uždaryta" duomenų bazės perkrovimo puslapį. Ankstesnės "SQL Server" versijos negali perskaityti pradžios operacijos įrašo. Todėl duomenų bazė negalima naudoti ankstesnėse "SQL Server" versijose, o "SQL Server" generuoja "3624" klaidą.Naujinimai vietoje, kai duomenų bazė pažymėta kaip skirta tik skaitytiKai atliekate vietinį versijos naujinimą, kuriame yra "SQL Server" egzemplioriaus, kuriame yra tik skaityti skirta duomenų bazė, kuri vadinasi Test_RO_DB "SQL Server 2012", galite gauti klaidų pranešimą, kuris panašus į SQL serverio klaidų logaritmą:

Versijos naujinimo proceso pabaigoje Test_RO_DB duomenų bazė bus RECOVERY_PENDING būsenos. Norėdami nustatyti, kad duomenų bazė būtų READ_WRITE, turite naudoti komandą pakeisti duomenų bazę . Tada naudokite komandą pakeisti duomenų bazę , kad nustatytumėte duomenų bazę READ_ONLY. Tai leidžia "SQL Server Engine" atnaujinti duomenų bazę į tinkamą versiją.Naujinimai vietoje, kai skaitymo/rašymo duomenų bazėje yra failų grupės, pažymėtos kaip skirta tik skaitytiKai atliekate vietinį versijos naujinimą į "SQL Server" 2012, galite gauti "SQL Server" klaidų žurnalų pranešimą, kuris panašus į toliau pateiktą. Ši problema kyla, kai anksčiau SQL serverio egzemplioriuje yra skaitymo/rašymo duomenų bazė ir joje yra failų grupės, pažymėtos READ_ONLY. Tačiau versijos naujinimo procesas baigiasi taip, kaip tikėtasi, ir duomenų bazė bus paleista internetu.Pastaba Toliau pateiktame klaidos pranešime duomenų bazė pavadinta Test_RO_FG:

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.

Bendruomenės padeda užduoti klausimus ir į juos atsakyti, pateikti atsiliepimų ir išgirsti iš ekspertų, turinčių daug žinių.

Ar ši informacija buvo naudinga?

Ar esate patenkinti kalbos kokybe?
Kas turėjo įtakos jūsų įspūdžiams?
Paspaudus mygtuką Pateikti, jūsų atsiliepimai bus naudojami tobulinant „Microsoft“ produktus ir paslaugas. Jūsų IT administratorius galės rinkti šiuos duomenis. Privatumo patvirtinimas.

Dėkojame už jūsų atsiliepimą!

×