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.

Верните статус базы данных на чтение-запись с помощью страницы «Свойства базы данных» и установите параметр «База данных только для чтения» с «False» на «True» или выполните следующий скрипт:

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

Теперь при попытке добавить запись появляется сообщение об ошибке «Не удалось обновить базу данных».DataNumen«потому что база данных доступна только для чтения» исчезнет. Мы все знаем, что резервные копии баз данных помогают нам фиксировать SQL Server базы данных. Однако резервная копия базы данных только для чтения восстановит базу данных в режиме только для чтения, а не в режиме чтения-записи.

Об авторе:

Нил Варли — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая Восстановление Outlook и программные продукты для восстановления Excel. Для получения дополнительной информации посетите www.datanumen.com

Поделись сейчас:

Комментарии закрыты.