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 คลิกขวาที่ฐานข้อมูลจากนั้นเลือกตัวเลือก“ Properties” ในหน้าคุณสมบัติฐานข้อมูลภายใต้“ ตัวเลือก” ตั้งค่าตัวเลือก“ ฐานข้อมูลอ่านอย่างเดียว” จาก“ จริง” เป็น“ เท็จ” คุณยังสามารถเปลี่ยนฐานข้อมูลเป็นแบบอ่านอย่างเดียวโดยใช้สคริปต์ 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 ฐานข้อมูล Howevere การสำรองฐานข้อมูลแบบอ่านอย่างเดียวจะกู้คืนฐานข้อมูลในโหมดอ่านอย่างเดียวและไม่อยู่ในโหมดอ่าน - เขียน

บทนำผู้เขียน:

Neil Varley เป็นผู้เชี่ยวชาญด้านการกู้คืนข้อมูลใน DataNumen, Inc. ซึ่งเป็นผู้นำระดับโลกด้านเทคโนโลยีการกู้คืนข้อมูล ได้แก่ การกู้คืน Outlook และผลิตภัณฑ์ซอฟต์แวร์กู้คืน excel ดูข้อมูลเพิ่มเติมได้ที่ wwwdatanumenด้วย.

แบ่งปันเลย:

ความเห็นถูกปิด