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:

LAG DATABASE [DataNumen] CONTAINMENT = INGEN PÅ PRIMÆR (NAVN = N'DataNumen', FILENAME = N'E:\Program Files\MSSQL12.MSSQLSERVER\MSSQL\DATA\DataNumen.mdf', STØRRELSE = 3072KB, FILVEKST = 1024KB) LOGG PÅ (NAVN = N'DataNumen_log', FILENAME = N'E:\Program Files\MSSQL12.MSSQLSERVER\MSSQL\DATA\DataNumen_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%) GÅ

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:

BRUK [DataNumen] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO OPPRETT TABELL [dbo].[Tabell1]( [Col1] [nchar](10) NULL ) PÅ [PRIMÆR] GO

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

Sett inn i [dbo].[Table1]-verdier ('Testvalue')
Resultatvinduet for SSMS vil vise følgende melding: (1 rad(er) påvirket)

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:

BRUK [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.

Sett inn i [dbo].[Tabell1]-verdier ('Testvalue2')

Følgende feilmelding vises i resultatvinduet.

Msg 3906, Level 16, State 1, Line 12 Kunne ikke oppdatere databasen "DataNumen" fordi databasen er skrivebeskyttet.

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:

BRUK [master] GO ALTER DATABASE [DataNumen] SETT 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.