データベースが読み取り専用の場合は、sys.databasesまたはSSMSからステータスを簡単に識別できます。 よく知られている事実は、読み取り専用データベースのデータを更新できないことです。 この記事では、これをトラブルシューティングして修正する方法を学びます。
XNUMXつのオプション
どちらでも使用できます SQL Server Management Studio、つまり、読み取り専用データベースを読み取り/書き込みデータベースに変換するSSMSまたはT-SQLスクリプト。 これらのオプションをよりよく理解するために、
- データベースを作成する
- その中にテーブルを作成します
- テーブルにレコードを追加します
- データベースを読み取り専用にする
- 同じテーブルにレコードを追加してみてください
- エラーメッセージを確認する
- データベースを読み取り/書き込みモードに変換し直します
データベースを準備する
あなたから SQL Server 管理スタジオ、あなたに接続します SQL server、ノード「データベース」を右クリックし、「新しいデータベース」オプションを選択します。 データベースの名前を入力したら、[OK]を押します。 次の例に示すように、T-SQLスクリプトを使用することもできます。
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
データベースを選択してSSMSからテーブルを作成し、ノード「テーブル」を右クリックしてから「新規」をポイントし、「テーブル…」オプションをクリックします。 列名とデータ型を入力し、テーブル名で保存します。 以下のクエリを使用して、テーブルを作成できます。
USE [DataNumen] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Table1]( [Col1] [nchar](10) NULL ) ON [PRIMARY] GO
次のクエリを使用して、テーブルにレコードを追加します。
Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message: (1 row(s) affected)
使い方 SQL Server Management Studioでデータベースを右クリックし、[プロパティ]オプションを選択します。 [データベースのプロパティ]ページの[オプション]で、[データベースの読み取り専用]オプションを[True]から[False]に設定します。 以下に示すように、TSQLスクリプトを使用してデータベースを読み取り専用に切り替えることもできます。
USE [master] GO ALTER DATABASE [DataNumen] SET READ_ONLY WITH NO_WAIT GO
SSMSがデータベース名の近くに「読み取り専用」のステータスを表示することがわかります。
それでは、新しいレコードをテーブルに挿入してみましょう。
Insert into [dbo].[Table1] values ('Testvalue2')
結果ウィンドウに次のエラーメッセージが表示されます。
Msg 3906, Level 16, State 1, Line 12 Failed to update database "DataNumen" because the database is read-only.
[データベースのプロパティ]ページを使用してデータベースのステータスを読み取り/書き込みに戻し、[データベースの読み取り専用]のオプションを[False]から[True]に設定するか、次のスクリプトを実行します。
USE [master] GO ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT GO
これで、レコードを追加しようとすると、「データベースの更新に失敗しました」というエラーメッセージが表示されます。DataNumen「データベースは読み取り専用であるため」は表示されなくなります。 データベースのバックアップが私たちに役立つことは誰もが知っています 修正します SQL Server データベース。 ただし、読み取り専用データベースのバックアップでは、読み取り/書き込みモードではなく、読み取り専用モードでデータベースが復元されます。
著者紹介:
Neil Varleyは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 Outlookの回復 と優れた回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com