Als een database alleen-lezen is, kunt u de status gemakkelijk identificeren via de sys.databases of vanuit de SSMS. Een bekend feit is dat u gegevens in een alleen-lezen database niet kunt bijwerken. In dit artikel leren we hoe u dit kunt oplossen en oplossen.
Twee opties
We kunnen beide gebruiken SQL Server Management Studio, dwz SSMS of T-SQL-script om een alleen-lezen database om te zetten in een lees-schrijfdatabase. Laten we, om deze opties beter te begrijpen
- Maak een database
- Maak er tabellen in
- Voeg records toe aan de tafel
- Maak de database alleen-lezen
- Probeer records aan dezelfde tabel toe te voegen
- Lees het foutbericht
- Zet de database terug naar de lees-schrijfmodus
Bereid de database voor
Van jouw SQL Server management studio, maak verbinding met je SQL server, klik met de rechtermuisknop op het knooppunt "Database" en selecteer vervolgens de optie "Nieuwe database". Druk op Ok nadat u een naam voor de database hebt ingevoerd. U kunt ook het T-SQL-script gebruiken zoals weergegeven in het onderstaande voorbeeld:
CREATE DATABASE [DataNumen] CONTAINMENT = NONE ON PRIMARY ( NAME = N'DataNumen', FILENAME = N'E:\Program Files\MSSQL12.MSSQLSERVER\MSSQL\DATA\DataNumen.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = N'DataNumen_log', FILENAME = N'E:\Program Files\MSSQL12.MSSQLSERVER\MSSQL\DATA\DataNumen_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%) GO
Maak een tabel van SSMS door de database te selecteren, klik met de rechtermuisknop op het knooppunt "Tables" en wijs vervolgens naar "New" en klik op de optie "Table…". Voer de kolomnaam en datatypes in en sla op met een tabelnaam. U kunt de onderstaande zoekopdracht gebruiken om een tabel te maken:
USE [DataNumen] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Table1]( [Col1] [nchar](10) NULL ) ON [PRIMARY] GO
Voeg records toe aan de tabel met behulp van de volgende query:
Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message: (1 row(s) affected)
gebruik SQL Server Management Studio, klik met de rechtermuisknop op de database en selecteer vervolgens de optie "Eigenschappen". Stel op de pagina Database-eigenschappen onder "Opties" de optie "Database alleen-lezen" in van "Waar" naar "Onwaar". U kunt de database ook naar alleen-lezen schakelen met behulp van het TSQL-script, zoals hieronder wordt weergegeven:
USE [master] GO ALTER DATABASE [DataNumen] SET READ_ONLY WITH NO_WAIT GO
Je zou kunnen zien dat de SSMS nu de status "Alleen-lezen" zou tonen naast de databasenaam.
Laten we nu proberen een nieuw record in de tabel in te voegen.
Insert into [dbo].[Table1] values ('Testvalue2')
Het volgende foutbericht verschijnt in het resultatenvenster.
Msg 3906, Level 16, State 1, Line 12 Failed to update database "DataNumen" because the database is read-only.
Zet de databasestatus terug op lezen-schrijven met de pagina Database-eigenschappen en zet de optie van "Database Read-Only" van "False" op "True" of voer het volgende script uit:
USE [master] GO ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT GO
Als u nu een record probeert toe te voegen, verschijnt het foutbericht "Update database mislukt"DataNumen"Omdat de database alleen-lezen is" verdwijnt. We weten allemaal dat databaseback-ups ons daarbij helpen repareren SQL Server databases. Een back-up van een alleen-lezen database zal echter een database herstellen in de alleen-lezen modus en niet in de lees-schrijfmodus.
Auteur Introductie:
Neil Varley is een expert op het gebied van gegevensherstel in DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder Outlook-herstel en Excel-herstelsoftwareproducten. Voor meer informatie bezoek www.datanumen.com