2 更新只讀數據庫的解決方法 SQL Server

立即分享:

如果數據庫是只讀的,您可以從 sys.databases 或 SSMS 輕鬆識別狀態。 一個眾所周知的事實是您無法更新只讀數據庫中的數據。 在本文中,我們將學習如何進行故障排除和修復。

兩種選擇

更新只讀數據庫 SQL Server我們可以使用 SQL Server Management Studio,即SSMS或T-SQL腳本,用於將只讀數據庫轉換為讀寫數據庫。 為了更好地了解這些選項,讓我們

  1. 建立資料庫
  2. 在其中創建表
  3. 向表中添加記錄
  4. 將數據庫設為只讀
  5. 嘗試將記錄添加到同一張表
  6. 查看錯誤消息
  7. 將數據庫轉換回讀寫模式

準備數據庫

從你的 SQL Server 管理工作室,連接到您的 SQL server,右鍵單擊“數據庫”節點,然後選擇“新建數據庫”選項。 輸入數據庫名稱後按確定。 您還可以使用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,右鍵單擊數據庫,然後選擇“屬性”選項。 在“數據庫屬性”頁面上的“選項”下,將選項“數據庫只讀”從“真”設置為“假”。 您還可以使用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.

使用數據庫屬性頁面將數據庫狀態恢復為讀寫,並將“數據庫只讀”選項從“假”設置為“真”或執行以下腳本:

USE [master]
GO
ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT
GO

現在,當您嘗試添加記錄時,錯誤消息“無法更新數據庫”DataNumen“因為數據庫是只讀的”將消失。 我們都知道數據庫備份可以幫助我們 固定 SQL Server 數據庫。 但是,只讀數據庫的備份將以只讀模式而不是讀寫模式恢復數據庫。

作者簡介:

Neil Varley是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 Outlook恢復 和excel恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM

立即分享:

評論被關閉。