Dacă o bază de date este doar pentru citire, puteți identifica cu ușurință starea din sys.databases sau din SSMS. Un fapt binecunoscut este că nu puteți actualiza datele dintr-o bază de date numai pentru citire. În acest articol, vom învăța cum să depanăm și să remediem acest lucru.
Două opțiuni
Putem folosi fie SQL Server Management Studio de exemplu, SSMS sau script T-SQL pentru a converti o bază de date doar în citire într-o bază de date de citire-scriere. Pentru a înțelege mai bine aceste opțiuni, haideți-ne
- Creați o bază de date
- Creați tabele în cadrul acestuia
- Adăugați înregistrări la tabel
- Faceți baza de date ca doar pentru citire
- Încercați să adăugați înregistrări la același tabel
- Examinați mesajul de eroare
- Convertiți baza de date înapoi în modul citire-scriere
Pregătiți baza de date
De la tine SQL Server management studio, conectați-vă la dvs SQL server, faceți clic dreapta pe nodul „Bază de date” și apoi selectați opțiunea „Bază de date nouă”. Apăsați Ok după ce ați introdus un nume pentru baza de date. De asemenea, puteți utiliza scriptul T-SQL, așa cum se arată în exemplul de mai jos:
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
Creați un tabel din SSMS selectând baza de date, faceți clic dreapta pe nodul „Tabele” și apoi indicați spre „Nou” și faceți clic pe opțiunea „Tabel...”. Introduceți numele coloanei și tipurile de date și apoi salvați cu un nume de tabel. Puteți utiliza interogarea de mai jos pentru a crea un 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
Adăugați înregistrări la tabel folosind următoarea interogare:
Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message: (1 row(s) affected)
Utilizarea SQL Server Management Studio, faceți clic dreapta pe baza de date și apoi selectați opțiunea „Proprietăți”. Pe pagina de proprietăți a bazei de date, sub „Opțiuni”, setați opțiunea „Doar citire baze de date” de la „Adevărat” la „Fals”. De asemenea, puteți comuta baza de date la numai citire folosind scriptul TSQL, după cum se arată mai jos:
USE [master] GO ALTER DATABASE [DataNumen] SET READ_ONLY WITH NO_WAIT GO
Puteți vedea că SSMS acum ar afișa starea „Numai în citire” lângă numele bazei de date.
Acum, să încercăm să inserăm o nouă înregistrare în tabel.
Insert into [dbo].[Table1] values ('Testvalue2')
Următorul mesaj de eroare va apărea în fereastra de rezultate.
Msg 3906, Level 16, State 1, Line 12 Failed to update database "DataNumen" because the database is read-only.
Reveniți starea bazei de date la citire-scriere folosind pagina Proprietăți baze de date și setați opțiunea de la „Doar citire baze de date” de la „False” la „Adevărat” sau executați următorul script:
USE [master] GO ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT GO
Acum, când încercați să adăugați o înregistrare, mesajul de eroare „Eșuat la actualizarea bazei de date”DataNumen” deoarece baza de date este doar pentru citire” va dispărea. Știm cu toții că backup-urile bazei de date ne ajută stabili SQL Server baze de date. Cu toate acestea, o copie de rezervă a bazei de date numai în citire va restaura o bază de date în modul doar citire și nu în modul citire-scriere.
Introducerea autorului:
Neil Varley este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv Recuperare Outlook și produse software de recuperare Excel. Pentru mai multe informații vizitați www.datanumen.com