2 lösningar för att uppdatera en skrivskyddad databas i SQL Server

Om en databas är skrivskyddad kan du enkelt identifiera status från sys.databaser eller från SSMS. Ett välkänt faktum är att du inte kan uppdatera data i en skrivskyddad databas. I den här artikeln lär vi oss att felsöka och åtgärda detta.

Två alternativ

Uppdatera en skrivskyddad databas SQL ServerVi kan antingen använda SQL Server Management Studio, dvs SSMS eller T-SQL-skript för att konvertera en skrivskyddad databas till en skriv-skriv-databas. För att förstå dessa alternativ bättre, låt oss

  1. Skapa en databas
  2. Skapa tabeller inom den
  3. Lägg till poster i tabellen
  4. Gör databasen som skrivskyddad
  5. Försök lägga till poster i samma tabell
  6. Granska felmeddelandet
  7. Konvertera databasen tillbaka till läs- och skrivläge

Förbered databas

Från din SQL Server ledningsstudio, anslut till din SQL server, högerklicka på noden "Databas" och välj sedan alternativet "Ny databas". Tryck på Ok efter att ha skrivit in ett namn för databasen. Du kan också använda T-SQL-skriptet som visas i exemplet nedan:

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

Skapa en tabell från SSMS genom att välja databas, högerklicka på noden "Tabeller" och peka sedan på "Ny" och klicka på alternativet "Tabell ...". Ange kolumnnamn och datatyper och spara sedan med ett tabellnamn. Du kan använda frågan nedan för att skapa en tabell:

USE [DataNumen]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table1](
 [Col1] [nchar](10) NULL
) ON [PRIMARY]
GO

Lägg till poster i tabellen med följande fråga:

Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message:
 
(1 row(s) affected)

Använda SQL Server Management Studio, högerklicka på databasen och välj sedan alternativet "Egenskaper". På sidan Databasegenskaper, under “Alternativ”, ställer du in alternativet “Databas skrivskyddad” från “Sann” till “Falsk”. Du kan också växla databasen till skrivskyddad med hjälp av TSQL-skript som visas nedan:

USE [master]
GO
ALTER DATABASE [DataNumen] SET READ_ONLY WITH NO_WAIT
GO

Du kan se att SSMS nu skulle visa status "skrivskyddad" nära databasnamnet.

Visa status skrivskyddad

Låt oss nu försöka infoga en ny post i tabellen.

Insert into [dbo].[Table1] values ('Testvalue2')

Följande felmeddelande visas i resultatfönstret.

Msg 3906, Level 16, State 1, Line 12
Failed to update database "DataNumen" because the database is read-only.

Återställ databasens status för läs-skriv med sidan Databasegenskaper och ställ in alternativet från "Databas skrivskyddad" från "Falsk" till "Sann" eller kör följande skript:

USE [master]
GO
ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT
GO

När du försöker lägga till en post visas felmeddelandet "Det gick inte att uppdatera databasen"DataNumen”Eftersom databasen är skrivskyddad” försvinner. Vi vet alla att säkerhetskopior av databaser hjälper oss att fast SQL Server databaser. En säkerhetskopia av skrivskyddad databas återställer dock en databas i skrivskyddat läge och inte i skriv-skrivläge.

Författarintroduktion:

Neil Varley är en dataåterställningsexpert i DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive Outlook-återställning och Excel-programvara för återställningsprogramvara. För mer information besök www.datanumen.com

Kommentarer är stängda.