Aanmelden met Microsoft
Meld u aan of maak een account.
Hallo,
Selecteer een ander account.
U hebt meerdere accounts
Kies het account waarmee u zich wilt aanmelden.

Symptomen

Neem het volgende scenario:

  • U installeert een exemplaar van Microsoft SQL Server 2005, Microsoft SQL Server 2008 of Microsoft SQL Server 2008 R2.

  • Het exemplaar van SQL Server heeft de naam INST1 en wordt gehost bij een database met de naam Test_RO_FG_DB.

  • De database bevat de volgende bestandsgroepen:

    • Hoofd

    • RO_FG

    • RW_FG

  • De bestandsgroep met de naam RO_FG is als READ_ONLY gemarkeerd.

  • U installeert een nieuw exemplaar van Microsoft SQL Server 2012. Dit exemplaar van SQL Server 2012 heeft de naam INST2.

  • U koppelt de Test_RO_FG_DB database van INST1.

  • U probeert de Test_RO_FG_DB database aan INST2 toe te voegen.

  • U ontvangt een foutbericht van de volgende strekking:

    Bericht 3415, niveau 16, status 2, line 1Database ' Test_RO_FG_DB ' kan niet worden geüpgraded omdat het bestand alleen-lezen is en alleen-lezen bestanden heeft of als de gebruiker geen machtigingen heeft om bepaalde bestanden te wijzigen. Maak de database of bestanden schrijfbaar en voer herstel opnieuw uit.

  • U probeert de Test_RO_FG_DB database opnieuw te koppelen aan INST1.

In dit scenario kan de database niet opnieuw worden gekoppeld aan INST1. Het volgende foutbericht wordt weergegeven in het foutenlogboek van SQL Server:

Opmerking Dit probleem treedt alleen op wanneer u probeert een database te koppelen die een bestandsgroep bevat die is gemarkeerd als READ_ONLY. Dit probleem doet zich niet voor wanneer u een READ_ONLY database probeert te verplaatsen waarin alle gegevens zijn gemarkeerd READ_ONLY.

Oorzaak

Dit probleem doet zich voor omdat SQL Server 2012 de alleen-lezen bestandsgroep niet detecteert voordat deze begint met het upgraden van de database. Nadat de upgrade is gestart, schrijft SQL Server 2012 vermeldingen naar het transactielogboek. Vorige versies kunnen de nieuwe transactielog vermeldingen niet lezen.

Status

Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Oplossing

Cumulatieve updategegevens

SQL Server 2012

De oplossing voor dit probleem werd voor het eerst uitgebracht in de cumulatieve update 2 voor SQL Server 2012. Klik voor meer informatie over dit cumulatieve updatepakket op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:

2703275 Cumulatief updatepakket 2 voor SQL Server 2012Opmerking Aangezien de builds cumulatief zijn, bevat elke nieuwe correctie release alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige versie van SQL Server 2012 fix. Microsoft raadt u aan dat u de meest recente reparatie versie met deze hotfix toepast. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:

2692828 De versies van SQL Server 2012 die zijn uitgebracht na de release van SQL Server 2012 U moet een hotfix voor SQL Server 2012 toepassen op een installatie van SQL Server 2012.

Workaround

Om dit probleem te omzeilen, gebruikt u een van de volgende methodes.Methode 1Herstel een back-up van de database van INST1 op INST2.Opmerking Het probleem dat wordt beschreven in de sectie symptomen doet zich niet voor in SQL Server 2012 wanneer u een back-up terugzet van een eerdere versie.Methode 2Een in-place upgrade uitvoeren van de eerdere versie van SQL Server naar SQL Server 2012.Methode 3Verplaats een database die een alleen-lezen-bestandsgroep bevat, naar een exemplaar van SQL Server 2012. Volg hiertoe de volgende stappen.Opmerking Voer stap 4 tot en met 11 uit op de server waarop SQL Server 2012 wordt uitgevoerd. Voer bijvoorbeeld stap 4 tot en met 11 op INST2.

  1. Ontkoppel de database op INST1. Ontkoppel bijvoorbeeld de Test_RO_FG_DB-database.

  2. Verplaats de databasebestanden naar de server waarop het INST2-exemplaar is gehost.

  3. U kunt de database toevoegen aan INST2. In de volgende voorbeeldcode ziet u hoe u dit kunt doen:

    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

    Opmerking U ontvangt het foutbericht 3425, dat wordt vermeld in de sectie symptomen.

  4. Wijzig bij de opdrachtprompt de naam van de databasebestanden. Met de volgende voorbeeldopdracht ziet u hoe u dit kunt doen:

    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. Maak in SQL Server Management Studio een database met dezelfde naam en fysieke structuur als de database die u wilt toevoegen. In de volgende voorbeeldcode ziet u hoe u dit kunt doen:

    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. Stel de database in op offline. Voer de volgende opdracht uit:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  7. Bij de opdrachtprompt wijzigt u de naam van de bestanden in de nieuwe database. Met de volgende voorbeeldopdracht ziet u hoe u dit kunt doen:

    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. Bij de opdrachtprompt wijzigt u de naam van de bestanden in de database die u in stap 2 hebt verplaatst. Wijzig de naam van de bestanden, zodat deze overeenkomen met de database die u in stap 4 hebt gemaakt. Met de volgende voorbeeldopdracht ziet u hoe u dit kunt doen:

    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. Zet de database op ONLINE. Voer de volgende opdracht uit:

    ALTER DATABASE [Test_RO_FG_DB] SET ONLINEGO 
  10. Controleer of de database online is en breng de functionaliteit van de Service Broker opnieuw.

  11. Verwijder de databasebestanden die u niet nodig hebt. Met de volgende voorbeeldopdracht ziet u hoe u dit kunt doen:

    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 

Methode 4Koppel een database die een alleen-lezen-bestandsgroep bevat, opnieuw met de eerdere versie van SQL Server. Volg hiertoe de volgende stappen.Opmerkingen

  • De database bevat ook de nieuwe transactielog vermeldingen van de mislukte upgrade.

  • Voer stap 3 tot en met 10 uit op de server waarop een eerdere versie van SQL Server wordt uitgevoerd. Voer bijvoorbeeld stappen 3 tot en met 10 op INST1.

  1. Verplaats de databasebestanden naar het exemplaar van SQL Server dat INST1 host.

  2. U kunt de database toevoegen aan INST1. In de volgende voorbeeldcode ziet u hoe u dit kunt doen:

    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

    Opmerking U ontvangt het foutbericht 3624, dat wordt vermeld in de sectie symptomen. U ontvangt ook een foutbericht van 1813.

  3. Bij de opdrachtprompt wijzigt u de naam van de databasebestanden op INST1. Met de volgende voorbeeldopdracht ziet u hoe u dit kunt doen:

    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. Maak in SQL Server Management Studio een database met dezelfde naam en fysieke structuur als de database die u wilt toevoegen. In de volgende voorbeeldcode ziet u hoe u dit kunt doen:

    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. Stel de database in op offline. Voer de volgende opdracht uit:

    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINEGO 
  6. Bij de opdrachtprompt wijzigt u de naam van de bestanden in de nieuwe database. Met de volgende voorbeeldopdracht ziet u hoe u dit kunt doen:

    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. Bij de opdrachtprompt wijzigt u de naam van de bestanden in de database die u in stap 2 hebt verplaatst. Wijzig de naam van de bestanden, zodat deze overeenkomen met de database die u in stap 4 hebt gemaakt. Met de volgende voorbeeldopdracht ziet u hoe u dit kunt doen:

    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. Zet de database in de modus voor noodgevallen en voer een herstelbewerking uit. Voer de volgende opdracht uit.Opmerking De databaselogboeken van de database worden tijdens deze stap opnieuw opgebouwd. Dit kan leiden tot verlies van gegevens. Daarom is het raadzaam een back-up van de database te maken voordat u deze stap uitvoert.

    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. Controleer of de database online is en breng de functionaliteit van de Service Broker opnieuw.

  10. Verwijder de databasebestanden die u niet nodig hebt. Met de volgende voorbeeldopdracht ziet u hoe u dit kunt doen:

    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 

Meer informatie

Er zijn verschillende stappen die u voordoen wanneer een database aan een exemplaar van SQL Server wordt gekoppeld. Voor de volgende stappen wordt beschreven hoe u de database herstelt en de bestanden uit eerdere versies van SQL Server bijwerkt. In het probleem dat wordt beschreven in de sectie Symptomen, begint SQL Server 2012 met het upgradeproces voordat de alleen-lezen bestanden in de database worden gevonden. De stappen voor het uitvoeren van de upgrade zijn het starten van een transactie om de "opschoon"-bit te wissen op de startpagina van de database. Eerdere versies van SQL Server kunnen de begin transactierecord niet lezen. De database kan daarom niet worden gebruikt in eerdere versies van SQL Server, en SQL Server genereert de 3624-fout.In-place upgrades wanneer een database als alleen-lezen is gemarkeerdWanneer u een in-place upgrade uitvoert van een exemplaar van SQL Server met een alleen-lezen database met de naam Test_RO_DB naar SQL Server 2012, worden mogelijk foutberichten weergegeven die op de volgende lijken te worden weergegeven in het foutenlogboek van SQL Server:

Aan het einde van het upgradeproces wordt de Test_RO_DB database in de RECOVERY_PENDING staat weergegeven. U moet de opdracht Change database gebruiken om de database in te stellen READ_WRITE. Gebruik vervolgens de opdracht Change database om de database in te stellen READ_ONLY. Hiermee kan de SQL Server-engine de database upgraden naar de juiste versie.In-place upgrades wanneer een lezen/schrijven-database bestandsgroepen bevat die als alleen-lezen zijn gemarkeerdWanneer u een in-place upgrade uitvoert naar SQL Server 2012, ontvangt u mogelijk berichten die op de volgende lijken te worden weergegeven in het foutenlogboek van SQL Server. Dit probleem doet zich voor wanneer het eerdere exemplaar van SQL Server een lees-en schrijf database host en bestandsgroepen bevat die zijn gemarkeerd als READ_ONLY. Het upgradeproces voldoet echter wel zoals verwacht en de database wordt online gestart.Opmerking In het volgende foutbericht heeft de database de naam Test_RO_FG:

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.

Was deze informatie nuttig?

Hoe tevreden bent u met de taalkwaliteit?
Wat heeft uw ervaring beïnvloed?
Als u op Verzenden klikt, wordt uw feedback gebruikt om producten en services van Microsoft te verbeteren. Uw IT-beheerder kan deze gegevens verzamelen. Privacyverklaring.

Hartelijk dank voor uw feedback.

×