2 soluzioni alternative per aggiornare un database di sola lettura in SQL Server

Condividi ora:

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

Aggiorna un database di sola lettura in SQL ServerPossiamo 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

  1. Crea un database
  2. Crea tabelle al suo interno
  3. Aggiungi record alla tabella
  4. Rendere il database di sola lettura
  5. Prova ad aggiungere record alla stessa tabella
  6. Esaminare il messaggio di errore
  7. 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.

Mostra lo stato di sola lettura

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

Condividi ora:

I commenti sono chiusi.