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, щракнете с десния бутон върху възела „База данни“ и след това изберете опцията „Нова база данни“. Натиснете 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, щракнете с десния бутон върху базата данни и след това изберете опцията „Свойства“. На страницата със свойства на базата данни под „Опции“ задайте опцията „База данни само за четене“ от „Истина“ на „Невярно“. Можете също така да превключите базата данни само за четене, като използвате 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 бази данни. Въпреки това, архивиране на база данни само за четене ще възстанови база данни в режим само за четене, а не в режим на четене-запис.

Въведение на автора:

Нийл Варли е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително Възстановяване на Outlook и excel софтуерни продукти за възстановяване. За повече информация посетете WWW.datanumen.com

Споделете сега:

Коментарите са забранени.