หากฐานข้อมูลเป็นแบบอ่านอย่างเดียวคุณสามารถระบุสถานะได้อย่างง่ายดายจากฐานข้อมูล sys.databases หรือจาก SSMS ข้อเท็จจริงที่ทราบกันดีคือคุณไม่สามารถอัปเดตข้อมูลในฐานข้อมูลแบบอ่านอย่างเดียวได้ ในบทความนี้เราจะเรียนรู้วิธีแก้ปัญหาและแก้ไขปัญหานี้
สองตัวเลือก
เราสามารถใช้ SQL Server Management Studio เช่นสคริปต์ SSMS หรือ T-SQL เพื่อแปลงฐานข้อมูลแบบอ่านอย่างเดียวเป็นฐานข้อมูลแบบอ่าน - เขียน เพื่อให้เข้าใจตัวเลือกเหล่านี้ดีขึ้นให้เรา
- สร้างฐานข้อมูล
- สร้างตารางภายใน
- เพิ่มระเบียนลงในตาราง
- ทำให้ฐานข้อมูลเป็นแบบอ่านอย่างเดียว
- ลองเพิ่มระเบียนลงในตารางเดียวกัน
- ตรวจสอบข้อความแสดงข้อผิดพลาด
- แปลงฐานข้อมูลกลับสู่โหมดอ่าน - เขียน
เตรียมฐานข้อมูล
จากคุณ 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ด้วย.