2 løsninger for å oppdatere en skrivebeskyttet database i SQL Server

Hvis en database er skrivebeskyttet, kan du enkelt identifisere statusen fra sys.databases eller fra SSMS. Et velkjent faktum er at du ikke kan oppdatere data i en skrivebeskyttet database. I denne artikkelen vil vi lære hvordan du feilsøker og fikser dette.

To alternativer

Oppdater en skrivebeskyttet database i SQL ServerVi kan enten bruke SQL Server Management Studio dvs. SSMS- eller T-SQL-skript for å konvertere en skrivebeskyttet database til en lese-skrivedatabase. For å forstå disse alternativene bedre, la oss

  1. Lag en database
  2. Lag tabeller i den
  3. Legg til poster i tabellen
  4. Gjør databasen som skrivebeskyttet
  5. Prøv å legge til poster i samme tabell
  6. Se gjennom feilmeldingen
  7. Konverter databasen tilbake til lese-skrivemodus

Forbered database

Fra din SQL Server management studio, koble til din SQL server, høyreklikk på noden "Database" og velg deretter alternativet "Ny database". Trykk OK etter å ha skrevet inn et navn for databasen. Du kan også bruke T-SQL-skriptet 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

Opprett en tabell fra SSMS ved å velge databasen, høyreklikk på noden "Tabeller" og pek deretter på "Ny" og klikk på alternativet "Tabell...". Skriv inn kolonnenavn og datatyper og lagre deretter med et tabellnavn. Du kan bruke spørringen nedenfor for å lage 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

Legg til poster i tabellen ved å bruke følgende spørring:

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

Ved hjelp av SQL Server Management Studio, høyreklikk databasen og velg deretter alternativet "Egenskaper". På siden Databaseegenskaper, under "Alternativer", sett alternativet "Database skrivebeskyttet" fra "True" til "False". Du kan også bytte databasen til skrivebeskyttet ved å bruke TSQL-skript som vist nedenfor:

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

Du kunne se at SSMS-en nå ville vise statusen "Skrivebeskyttet" nær databasenavnet.

Vis statusen skrivebeskyttet

La oss nå prøve å sette inn en ny post i tabellen.

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

Følgende feilmelding vises i resultatvinduet.

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

Tilbakestill databasestatusen til å lese-skrive ved å bruke siden Databaseegenskaper og angi alternativet fra "Database-skrivebeskyttet" fra "False" til "True" eller utfør følgende skript:

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

Nå, når du prøver å legge til en post, vil feilmeldingen "Kunne ikke oppdatere databasen"DataNumen"fordi databasen er skrivebeskyttet" vil forsvinne. Vi vet alle at sikkerhetskopiering av databaser hjelper oss fastsette SQL Server databaser. Imidlertid vil en sikkerhetskopi av skrivebeskyttet database gjenopprette en database i skrivebeskyttet modus og ikke i lese-skrivemodus.

Forfatterintroduksjon:

Neil Varley er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert Outlook gjenoppretting og excel-programvareprodukter for gjenoppretting. For mer informasjon besøk www.datanumen. Med

Kommentarer er stengt.