2 løsninger til at opdatere en skrivebeskyttet database i SQL Server

Hvis en database er skrivebeskyttet, kan du nemt identificere status fra sys.databases eller fra SSMS. Et velkendt faktum er, at du ikke kan opdatere data i en skrivebeskyttet database. I denne artikel vil vi lære, hvordan du fejlfinder og løser dette.

To muligheder

Opdater en skrivebeskyttet database i SQL ServerVi kan enten bruge SQL Server Management Studio dvs. SSMS eller T-SQL script til at konvertere en skrivebeskyttet database til en læse-skrive-database. Lad os forstå disse muligheder bedre

  1. Opret en database
  2. Opret tabeller i det
  3. Tilføj poster til tabellen
  4. Gør databasen som skrivebeskyttet
  5. Prøv at tilføje poster til den samme tabel
  6. Gennemgå fejlmeddelelsen
  7. Konverter databasen tilbage til læse-skrivetilstand

Forbered database

Fra din SQL Server ledelsesstudie, opret forbindelse til din SQL server, højreklik på noden "Database" og vælg derefter indstillingen "Ny database". Tryk på Ok efter at have indtastet et navn til databasen. Du kan også bruge T-SQL-scriptet som vist i eksemplet nedenfor:

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

Opret en tabel fra SSMS ved at vælge databasen, højreklik på noden "Tabeller" og peg derefter på "Ny" og klik på indstillingen "Tabel...". Indtast kolonnenavn og datatyper, og gem derefter med et tabelnavn. Du kan bruge forespørgslen nedenfor til at oprette en tabel:

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

Føj poster til tabellen ved hjælp af følgende forespørgsel:

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

Ved brug af SQL Server Management Studio, højreklik på databasen og vælg derefter indstillingen "Egenskaber". På siden Databaseegenskaber, under "Valg", skal du indstille indstillingen "Database-skrivebeskyttet" fra "True" til "False". Du kan også skifte databasen til skrivebeskyttet ved hjælp af TSQL-script som vist nedenfor:

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

Du kunne se, at SSMS nu ville vise status "Skrivebeskyttet" nær databasenavnet.

Vis status skrivebeskyttet

Lad os nu prøve at indsætte en ny post i tabellen.

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

Følgende fejlmeddelelse vises i resultatvinduet.

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

Gendan databasestatus til at læse-skrive ved hjælp af siden Databaseegenskaber, og indstil indstillingen fra "Database Read-Only" fra "False" til "True" eller udfør følgende script:

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

Nu, når du forsøger at tilføje en post, vil fejlmeddelelsen "Kunne ikke opdatere databasen"DataNumen"fordi databasen er skrivebeskyttet" forsvinder. Vi ved alle, at backup af databaser hjælper os til fastsætte SQL Server databaser. Dog vil en sikkerhedskopi af skrivebeskyttet database gendanne en database i skrivebeskyttet tilstand og ikke i læse-skrivetilstand.

Forfatter Introduktion:

Neil Varley er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder Outlook opsving og excel-genopretningssoftwareprodukter. For mere information besøg www.datanumen.com

Kommentarer er lukket.