Se un database è di sola lettura, puoi facilmente identificare lo stato da sys.databases o da SSMS. Un fatto ben noto è che non è possibile aggiornare i dati in un database di sola lettura. In questo articolo, impareremo come risolvere e risolvere questo problema.
Due opzioni
Possiamo usare entrambi SQL Server Management Studio cioè, SSMS o script T-SQL per convertire un database di sola lettura in un database di lettura-scrittura. Per capire meglio queste opzioni, cerchiamo di
- Crea un database
- Crea tabelle al suo interno
- Aggiungi record alla tabella
- Rendere il database di sola lettura
- Prova ad aggiungere record alla stessa tabella
- Esaminare il messaggio di errore
- Riconvertire il database in modalità lettura-scrittura
Prepara banca dati
Dal tuo SQL Server studio di gestione, connettiti al tuo SQL server, fare clic con il pulsante destro del mouse sul nodo "Database" e quindi selezionare l'opzione "Nuovo database". Premere OK dopo aver digitato un nome per il database. È inoltre possibile utilizzare lo script T-SQL come mostrato nell'esempio seguente:
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 una tabella da SSMS selezionando il database, fai clic con il pulsante destro del mouse sul nodo "Tabelle", quindi punta su "Nuovo" e fai clic sull'opzione "Tabella ...". Immettere il nome della colonna e i tipi di dati, quindi salvare con un nome di tabella. È possibile utilizzare la query seguente per creare una tabella:
USE [DataNumen] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Table1]( [Col1] [nchar](10) NULL ) ON [PRIMARY] GO
Aggiungi i record alla tabella utilizzando la seguente query:
Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message: (1 row(s) affected)
utilizzando SQL Server Management Studio, fare clic con il pulsante destro del mouse sul database e quindi selezionare l'opzione "Proprietà". Nella pagina delle proprietà del database, in "Opzioni", impostare l'opzione "Sola lettura database" da "Vero" a "Falso". Puoi anche impostare il database in sola lettura utilizzando lo script TSQL come mostrato di seguito:
USE [master] GO ALTER DATABASE [DataNumen] SET READ_ONLY WITH NO_WAIT GO
Potresti vedere che l'SSMS ora mostrerebbe lo stato "Sola lettura" vicino al nome del database.
Proviamo ora ad inserire un nuovo record nella tabella.
Insert into [dbo].[Table1] values ('Testvalue2')
Il seguente messaggio di errore apparirà nella finestra dei risultati.
Msg 3906, Level 16, State 1, Line 12 Failed to update database "DataNumen" because the database is read-only.
Ripristina lo stato del database in lettura-scrittura utilizzando la pagina Proprietà database e imposta l'opzione da "Sola lettura database" da "False" a "True" o esegui il seguente script:
USE [master] GO ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT GO
Ora, quando provi ad aggiungere un record, il messaggio di errore "Impossibile aggiornare il database"DataNumen"perché il database è di sola lettura" scomparirà. Sappiamo tutti che i backup del database ci aiutano a farlo fisso SQL Server banche dati. Tuttavia, un backup del database di sola lettura ripristinerà un database in modalità di sola lettura e non in modalità di lettura-scrittura.
Introduzione dell'autore:
Neil Varley è un esperto di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui Recupero di Outlook ed eccellere prodotti software di recupero. Per maggiori informazioni visita www.datanumen.com