Si une base de données est en lecture seule, vous pouvez facilement identifier l'état à partir de sys.databases ou de SSMS. Un fait bien connu est que vous ne pouvez pas mettre à jour les données d'une base de données en lecture seule. Dans cet article, nous allons apprendre à dépanner et à résoudre ce problème.
Deux options

- Créer une base de données
- Créez des tableaux à l'intérieur
- Ajouter des enregistrements à la table
- Rendre la base de données en lecture seule
- Essayez d'ajouter des enregistrements à la même table
- Relisez le message d'erreur
- Reconvertir la base de données en mode lecture-écriture
Préparer la base de données
De ton SQL Server studio de gestion, connectez-vous à votre SQL server, faites un clic droit sur le nœud "Base de données" puis sélectionnez l'option "Nouvelle base de données". Appuyez sur OK après avoir saisi un nom pour la base de données. Vous pouvez également utiliser le script T-SQL comme indiqué dans l'exemple ci-dessous :
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
Créez une table à partir de SSMS en sélectionnant la base de données, faites un clic droit sur le nœud "Tables" puis pointez sur "Nouveau" et cliquez sur l'option "Table…". Entrez le nom de la colonne et les types de données, puis enregistrez avec un nom de table. Vous pouvez utiliser la requête ci-dessous pour créer une table :
USE [DataNumen] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Table1]( [Col1] [nchar](10) NULL ) ON [PRIMARY] GO
Ajoutez des enregistrements à la table à l'aide de la requête suivante :
Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message: (1 row(s) affected)
L'utilisation de SQL Server Management Studio, faites un clic droit sur la base de données puis sélectionnez l'option « Propriétés ». Sur la page des propriétés de la base de données, sous "Options", définissez l'option "Base de données en lecture seule" de "True" à "False". Vous pouvez également basculer la base de données en lecture seule à l'aide du script TSQL, comme indiqué ci-dessous :
USE [master] GO ALTER DATABASE [DataNumen] SET READ_ONLY WITH NO_WAIT GO
Vous pouvez voir que le SSMS affiche maintenant le statut "Lecture seule" près du nom de la base de données.
Essayons maintenant d'insérer un nouvel enregistrement dans la table.
Insert into [dbo].[Table1] values ('Testvalue2')
Le message d'erreur suivant apparaîtra dans la fenêtre de résultat.
Msg 3906, Level 16, State 1, Line 12 Failed to update database "DataNumen" because the database is read-only.
Rétablissez l'état de la base de données en lecture-écriture à l'aide de la page Propriétés de la base de données et définissez l'option "Database Read-Only" de "False" à "True" ou exécutez le script suivant :
USE [master] GO ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT GO
Maintenant, lorsque vous essayez d'ajouter un enregistrement, le message d'erreur "Échec de la mise à jour de la base de données"DataNumen« parce que la base de données est en lecture seule » disparaîtra. Nous savons tous que les sauvegardes de bases de données nous aident à fixer SQL Server bases de données. Cependant, une sauvegarde de base de données en lecture seule restaurera une base de données en mode lecture seule et non en mode lecture-écriture.
Introduction de l'auteur:
Neil Varley est un expert en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris Récupération d'Outlook et des produits logiciels de récupération Excel. Pour plus d'informations, visitez www.datanumen.com