Če je baza podatkov samo za branje, lahko stanje zlahka prepoznate iz sys.databases ali iz SSMS. Dobro znano dejstvo je, da podatkov v zbirki podatkov, ki je samo za branje, ne morete posodobiti. V tem članku bomo izvedeli, kako to odpraviti in odpraviti.
Dve možnosti
Lahko uporabimo SQL Server Management Studio, tj. SSMS ali skript T-SQL za pretvorbo baze podatkov samo za branje v bazo podatkov za branje in pisanje. Za boljše razumevanje teh možnosti nam dovolite
- Ustvari bazo podatkov
- Ustvarite tabele v njem
- V tabelo dodajte zapise
- Naredite bazo podatkov samo za branje
- Poskusite dodati zapise v isto tabelo
- Preglejte sporočilo o napaki
- Bazo podatkov pretvorite nazaj v način branja in pisanja
Pripravite bazo podatkov
Od tvojega SQL Server studio za upravljanje, se povežite s svojim SQL server, z desno miškino tipko kliknite vozlišče »Baza podatkov« in nato izberite možnost »Nova baza podatkov«. Po vnosu imena baze podatkov pritisnite Ok. Uporabite lahko tudi skript T-SQL, kot je prikazano v spodnjem primeru:
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
Iz SSMS ustvarite tabelo tako, da izberete bazo podatkov, z desno miškino tipko kliknite vozlišče »Tabele« in nato pokažite na »Novo« in kliknite možnost »Tabela…«. Vnesite ime stolpca in vrste podatkov in nato shranite z imenom tabele. S spodnjo poizvedbo lahko ustvarite tabelo:
USE [DataNumen] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Table1]( [Col1] [nchar](10) NULL ) ON [PRIMARY] GO
V tabelo dodajte zapise z naslednjo poizvedbo:
Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message: (1 row(s) affected)
Uporaba SQL Server Management Studio, z desno tipko miške kliknite bazo podatkov in nato izberite možnost »Lastnosti«. Na strani z lastnostmi zbirke podatkov v razdelku »Možnosti« nastavite možnost »Samo za branje baze podatkov« iz »Resnično« v »Neresnično«. Zbirko podatkov lahko tudi preklopite na samo za branje s pomočjo skripta TSQL, kot je prikazano spodaj:
USE [master] GO ALTER DATABASE [DataNumen] SET READ_ONLY WITH NO_WAIT GO
Videli ste, da bo SSMS zdaj prikazal stanje »Samo za branje« blizu imena baze podatkov.
Zdaj poskusimo v tabelo vstaviti nov zapis.
Insert into [dbo].[Table1] values ('Testvalue2')
V oknu z rezultati se prikaže naslednje sporočilo o napaki.
Msg 3906, Level 16, State 1, Line 12 Failed to update database "DataNumen" because the database is read-only.
Vrnite stanje baze podatkov na branje in pisanje s pomočjo strani z lastnostmi baze podatkov in nastavite možnost iz »Samo za branje baze podatkov« iz »False« v »True« ali izvedite naslednji skript:
USE [master] GO ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT GO
Ko poskusite dodati zapis, se prikaže sporočilo o napaki »Ni uspelo posodobiti baze podatkov«DataNumen"Ker je baza podatkov samo za branje" izgine. Vsi vemo, da nam varnostne kopije baz podatkov pomagajo fiksna SQL Server zbirke podatkov. Howevere, varnostna kopija baze podatkov samo za branje jo bo obnovila v načinu samo za branje in ne v načinu branja in pisanja.
Uvod avtorja:
Neil Varley je strokovnjak za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z Obnovitev programa Outlook in excel programske izdelke za obnovitev. Za več informacij obiščite www.datanumen.com