2 cách giải quyết để cập nhật cơ sở dữ liệu chỉ đọc trong SQL Server

Chia sẻ ngay bây giờ:

Nếu cơ sở dữ liệu ở chế độ chỉ đọc, bạn có thể dễ dàng xác định trạng thái từ sys.databases hoặc từ SSMS. Một thực tế nổi tiếng là bạn không thể cập nhật dữ liệu trong cơ sở dữ liệu chỉ đọc. Trong bài viết này, chúng ta sẽ tìm hiểu cách khắc phục và sửa lỗi này.

Hai lựa chọn

Cập nhật cơ sở dữ liệu chỉ đọc trong SQL ServerChúng ta có thể sử dụng SQL Server Management Studio tức là tập lệnh SSMS hoặc T-SQL để chuyển đổi cơ sở dữ liệu chỉ đọc thành cơ sở dữ liệu đọc-ghi. Để hiểu rõ hơn về các tùy chọn này, chúng ta hãy

  1. Tạo cơ sở dữ liệu
  2. Tạo các bảng bên trong nó
  3. Thêm bản ghi vào bảng
  4. Đặt cơ sở dữ liệu ở dạng chỉ đọc
  5. Hãy thử thêm các bản ghi vào cùng một bảng
  6. Xem lại thông báo lỗi
  7. Chuyển đổi cơ sở dữ liệu trở lại chế độ đọc-ghi

Chuẩn bị cơ sở dữ liệu

Từ của bạn SQL Server studio quản lý, kết nối với bạn SQL server, nhấp chuột phải vào nút “Cơ sở dữ liệu” rồi chọn tùy chọn “Cơ sở dữ liệu mới”. Nhấn Ok sau khi nhập tên cho cơ sở dữ liệu. Bạn cũng có thể sử dụng tập lệnh T-SQL như trong ví dụ bên dưới:

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

Tạo bảng từ SSMS bằng cách chọn cơ sở dữ liệu, nhấp chuột phải vào nút “Bảng” rồi trỏ đến “Mới” và nhấp vào tùy chọn “Bảng…”. Nhập tên cột và kiểu dữ liệu rồi lưu với tên bảng. Bạn có thể sử dụng truy vấn bên dưới để tạo bảng:

USE [DataNumen]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table1](
 [Col1] [nchar](10) NULL
) ON [PRIMARY]
GO

Thêm bản ghi vào bảng bằng truy vấn sau:

Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message:
 
(1 row(s) affected)

Sử dụng SQL Server Management Studio, nhấp chuột phải vào cơ sở dữ liệu và sau đó chọn tùy chọn “Properties”. Trên trang Thuộc tính cơ sở dữ liệu, bên dưới “Tùy chọn”, đặt tùy chọn “Chỉ đọc cơ sở dữ liệu” từ “Đúng” thành “Sai”. Bạn cũng có thể chuyển cơ sở dữ liệu sang chế độ chỉ đọc bằng cách sử dụng tập lệnh TSQL như hình bên dưới:

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

Bạn có thể thấy rằng SSMS bây giờ sẽ hiển thị trạng thái “Chỉ đọc” gần tên cơ sở dữ liệu.

Hiển thị trạng thái Chỉ đọc

Bây giờ, chúng ta hãy thử chèn một bản ghi mới vào bảng.

Insert into [dbo].[Table1] values ('Testvalue2')

Thông báo lỗi sau sẽ xuất hiện trong cửa sổ kết quả.

Msg 3906, Level 16, State 1, Line 12
Failed to update database "DataNumen" because the database is read-only.

Hoàn nguyên trạng thái cơ sở dữ liệu thành đọc-ghi bằng trang Thuộc tính cơ sở dữ liệu và đặt tùy chọn từ “Chỉ đọc cơ sở dữ liệu” từ “Sai” thành “Đúng” hoặc thực thi tập lệnh sau:

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

Bây giờ, khi bạn cố gắng thêm một bản ghi, thông báo lỗi “Không thể cập nhật cơ sở dữ liệu”DataNumen” bởi vì cơ sở dữ liệu là chỉ đọc” sẽ biến mất. Chúng ta đều biết rằng sao lưu cơ sở dữ liệu giúp chúng ta sửa chữa SQL Server cơ sở dữ liệu. Tuy nhiên, bản sao lưu của cơ sở dữ liệu chỉ đọc sẽ khôi phục cơ sở dữ liệu ở chế độ chỉ đọc chứ không phải ở chế độ đọc-ghi.

Giới thiệu tác giả:

Neil Varley là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm Phục hồi Outlook và các sản phẩm phần mềm phục hồi excel. Để biết thêm thông tin, hãy truy cập www.datanumennăm

Chia sẻ ngay bây giờ:

Được đóng lại.