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
Vi 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
- Lag en database
- Lag tabeller i den
- Legg til poster i tabellen
- Gjør databasen som skrivebeskyttet
- Prøv å legge til poster i samme tabell
- Se gjennom feilmeldingen
- 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.
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