Перейти к содержимому

База данных только для чтения как исправить ms sql

  • автор:

Присоединение и отсоединение базы данных (SQL Server)

Файлы данных и журналов транзакций базы данных можно отсоединить, а затем повторно подключиться к одному или другому экземпляру SQL Server. Отключение и присоединение базы данных полезно, если вы хотите изменить базу данных на другой экземпляр SQL Server на одном компьютере или переместить базу данных.

Безопасность

Разрешения на доступ к файлам устанавливаются во время выполнения определенных операций с базами данных, включая отсоединение и присоединение баз данных.

Не рекомендуется подключать или восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных.
Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код.

Отсоединение базы данных

Отключение базы данных удаляет ее из экземпляра SQL Server, но оставляет базу данных нетронутой в его файлах данных и файлах журнала транзакций. Затем эти файлы можно использовать для подключения базы данных к любому экземпляру SQL Server, включая сервер, с которого была отключена база данных.

Базу данных невозможно отсоединить в следующих случаях.

    База данных реплицируется и публикуется. При репликации база данных должна быть снята с публикации. Перед тем как отсоединить базу данных, необходимо отключить публикацию, выполнив процедуру sp_replicationdboption.

Заметка Если невозможно использовать процедуру sp_replicationdboption, можно удалить репликацию, выполнив процедуру sp_removedbreplication.

Заметка Невозможно отсоединить или присоединить моментальный снимок базы данных.

Резервное копирование, восстановление и отсоединение

Для разностных резервных копий отсоединение базы данных, доступной только для чтения, приводит к потере сведений о базовой копии для разностного копирования. Дополнительные сведения см. в разделе Разностные резервные копии (SQL Server).

Реакция на ошибки отсоединения

Ошибки, возникшие во время отсоединения базы данных, могут воспрепятствовать чистому закрытию базы данных и перестроению журнала транзакций. При получении сообщения об ошибке выполните следующие действие по исправлению.

  1. Заново присоедините все файлы, связанные с базой данных, а не только первичный файл.
  2. Исправьте неполадку, ставшую причиной сообщения об ошибке.
  3. Отсоедините базу данных повторно.

Присоединение базы данных

Вы можете присоединить скопированную или отсоединяемую базу данных SQL Server. При присоединении базы данных SQL Server 2005 (9.x), содержащей файлы полнотекстового каталога на экземпляр SQL Server, файлы каталога присоединяются из предыдущего расположения вместе с другими файлами базы данных, так же, как и в SQL Server 2005 (9.x). Дополнительные сведения см. в разделе Обновление полнотекстового поиска.

При присоединении базы данных должны быть доступны все файлы данных (файлы MDF и NDF). Если у какого-либо файла данных путь отличается от того, каким он был при первом создании или последнем присоединении, необходимо указать текущий путь к файлу.

Если присоединенный первичный файл данных доступен только для чтения, ядро СУБД предполагает, что база данных доступна только для чтения.

При первом присоединении зашифрованной базы данных к экземпляру SQL Server владелец базы данных должен открыть главный ключ базы данных, выполнив следующую инструкцию: OPEN MASTER KEY DECRYPTION BY PASSWORD = ‘password’ Рекомендуется включить автоматическую расшифровку главного ключа, выполнив следующую инструкцию: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY . Дополнительные сведения см. в статьях CREATE MASTER KEY (Transact-SQL) и ALTER MASTER KEY (Transact-SQL).

Требования для присоединения файлов журналов частично зависят от того, доступна база данных для записи и чтения или только для чтения.

  • Для базы данных, доступной для записи и чтения, обычно можно присоединить файл журнала в новом расположении. Однако в некоторых случаях для повторного соединения базы данных требуются файлы ее существующих журналов. Поэтому всегда храните все отсоединенные файлы журналов, пока база данных не будет успешно присоединена без них. Если у базы данных, доступной для записи и чтения, только один файл журнала и для него не указано новое расположение, операция присоединения использует старое расположение файла. Если он найден, применяется старый файл журнала независимо от того, была ли база данных выключена чисто. Однако если старый файл журнала не найден и база данных была выключена чисто и не имеет активной цепочки журналов, то операция присоединения пытается построить новый файл журнала для базы данных.
  • Если присоединенный первичный файл данных доступен только для чтения, ядро СУБД предполагает, что база данных доступна только для чтения. Для базы данных, доступной только для чтения, файл или файлы журнала должны быть доступны в расположении, указанном в первичном файле базы данных. Невозможно создать новый файл журнала, так как SQL Server не может обновить расположение журнала, хранящееся в основном файле.

Изменение метаданных при присоединении базы данных

Если база данных, доступная только для чтения, отсоединяется, а затем снова присоединяется, то данные о текущей базовой копии для разностного копирования будут утеряны. Базовая копия для разностного копирования — это последняя из полных резервных копий всех данных из базы данных или из подмножества файлов и файловых групп, содержащихся в базе данных. Без сведений о базовой резервной копии база данных master утрачивает синхронизацию с базой данных, доступной только для чтения, и дальнейшее создание разностных резервных копий может привести к непредвиденным результатам. Таким образом, если с базой данных, доступной только для чтения, используются разностные резервные копии, то после повторного присоединения базы данных необходимо установить новую базовую копию для разностного копирования, создав полную резервную копию. Сведения о разностных резервных копиях см. в разделе «Разностные резервные копии» (SQL Server).

После присоединения происходит запуск базы данных. Обычно присоединение базы данных переводит ее в то же состояние, в котором она находилась на момент отсоединения или копирования. Однако операции присоединения и отсоединения отключают создание межбазовых цепочек владения для этой базы данных. Сведения о том, как включить цепочки владения, см. в разделе Параметр конфигурации сервера «cross db ownership chaining».

По умолчанию в целях безопасности параметры is_broker_enabled, is_honor_broker_priority_on и is_trustworthy_on устанавливаются в значение OFF при подключении базы данных. Сведения о настройке этих параметров см. в статье ALTER DATABASE (Transact-SQL). Дополнительные сведения о метаданных см. в статье Управление метаданными при предоставлении доступа к базе данных на другом сервере.

Резервное копирование, восстановление и присоединение

Подобно любой базе данных, которая полностью или частично вне сети, база данных с восстановлением файлов не может быть присоединена. Базу данных можно присоединить после остановки последовательности восстановления. Затем можно снова запустить последовательность восстановления.

Присоединение базы данных к другому экземпляру сервера

База данных, созданная в более поздней версии SQL Server, не может быть подключена в ранних версиях. Это исключает физическое использование базы данных с более старой версией ядра СУБД. Тем не менее это относится к состоянию метаданных и не влияет на режим совместимости базы данных. Дополнительные сведения см. в разделе Уровень совместимости ALTER DATABASE (Transact-SQL).

При присоединении базы данных к другому экземпляру сервера для обеспечения ее согласованного функционирования для пользователей и приложений может понадобиться повторное создание некоторых или всех метаданных базы данных, например имен входа и задания, на другом экземпляре сервера. Дополнительные сведения см. в разделе «Управление метаданными» при создании базы данных, доступной на другом экземпляре сервера (SQL Server).

Связанные задачи

Отсоединение базы данных

  • sp_detach_db (Transact-SQL)
  • Отсоединение базы данных

Присоединение базы данных

  • CREATE DATABASE (SQL Server Transact-SQL)
  • Присоединение базы данных
  • sp_attach_db (Transact-SQL)
  • sp_attach_single_file_db (Transact-SQL)

Обновление базы данных при помощи операций отсоединения и присоединения

Перемещение базы данных при помощи операций отсоединения и присоединения

Удаление моментального снимка базы данных

Настройка доступа только для чтения к вторичной реплике в группе доступности Always On

По умолчанию и доступ для чтения и записи, и доступ только для чтения разрешены в первичной реплике, а подключения к вторичным репликам группы доступности AlwaysOn запрещены. В этом разделе описывается настройка доступа к соединениям реплики доступности в группе доступности AlwaysOn в SQL Server с помощью SQL Server Management Studio, Transact-SQL или PowerShell.

Требования и ограничения

  • Если нужно настроить разный доступ к подключениям, необходимо подключиться к экземпляру сервера, на котором размещается первичная реплика.

Разрешения

Задача Разрешения
Настройка реплик при создании группы доступности Требуется членство в фиксированной роли сервера sysadmin и одно из разрешений: CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP или CONTROL SERVER.
Изменение реплики доступности Необходимо разрешение ALTER AVAILABILITY GROUP для группы доступности, разрешение CONTROL AVAILABILITY GROUP, разрешение ALTER ANY AVAILABILITY GROUP или разрешение CONTROL SERVER.

Использование среды SQL Server Management Studio

Настройка доступа к реплике доступности

  1. В обозревателе объектов подключитесь к экземпляру сервера, на котором размещена первичная реплика, и разверните дерево сервера.
  2. Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .
  3. Щелкните группу доступности, реплику которой нужно изменить.
  4. Щелкните правой кнопкой мыши реплику доступности и выберите пункт Свойства.
  5. В диалоговом окне Свойства реплики доступности можно изменить доступ к соединению для первичной и вторичной роли следующим образом:
    • Для вторичной роли выберите новое значение в раскрывающемся списке Доступная для чтения вторичная следующим образом. Нет
      Для баз данных-получателей этой реплики соединения пользователя не разрешаются. Для них не разрешен доступ для чтения. Это параметр по умолчанию. Назначение — только чтение
      Для баз данных-получателей этой реплики разрешены лишь подключения только для чтения. Для всех баз данных-получателей разрешен доступ для чтения. Да
      Для баз данных-получателей этой реплики разрешены все соединения, но только с доступом для чтения. Для всех баз данных-получателей разрешен доступ для чтения.
    • Для первичной роли выберите новое значение в раскрывающемся списке Соединения в первичной роли следующим образом: разрешить все соединения.
      Разрешаются все соединения с базами данных в первичной реплике. Это параметр по умолчанию. разрешить соединения с доступом на чтение и запись;
      Если свойство «Назначение приложения» имеет значение ReadWrite или не задано, то соединение разрешено. Соединения, у которых свойство соединения «Назначение приложения» равно ReadOnly , не разрешены. Таким образом, клиент не сможет по ошибке подключить рабочую нагрузку с намерением чтения к первичной реплике. Дополнительные сведения о свойстве соединения «Назначение приложения» см. в разделе Using Connection String Keywords with SQL Server Native Client.

Использование Transact-SQL

Настройка доступа к реплике доступности

Пример этой процедуры см. в подразделе Примеры (Transact-SQL)далее в этом разделе.

  1. Подключитесь к экземпляру сервера, на котором находится первичная реплика.
  2. Если вы указываете реплику для новой группы доступности, воспользуйтесь инструкцией Transact-SQL CREATE AVAILABILITY GROUP. Если вы добавляете или изменяете реплику существующей группы доступности, воспользуйтесь инструкцией Transact-SQL ALTER AVAILABILITY GROUP.
    • Чтобы настроить доступ к соединению для вторичной роли, укажите в предложении ADD REPLICA или MODIFY REPLICA WITH параметр SECONDARY_ROLE следующим образом: SECONDARY_ROLE ( ALLOW_CONNECTIONS =< NO | READ_ONLY | ALL >) где NO
      Прямые подключения для баз данных-получателей этой реплики не разрешаются. Для них не разрешен доступ для чтения. Это параметр по умолчанию. READ_ONLY
      Для баз данных-получателей этой реплики разрешены лишь подключения только для чтения. Для всех баз данных-получателей разрешен доступ для чтения. ALL
      Для баз данных-получателей этой реплики разрешены все соединения, но только с доступом для чтения. Для всех баз данных-получателей разрешен доступ для чтения.
  3. Чтобы настроить доступ к соединению для первичной роли, укажите в предложении ADD REPLICA или MODIFY REPLICA WITH параметр PRIMARY_ROLE следующим образом: PRIMARY_ROLE ( ALLOW_CONNECTIONS =< READ_WRITE | ALL >) где READ_WRITE
    Соединения, у которых свойство «Назначение приложения» равно ReadOnly , не разрешены. Если свойство «Назначение приложения» имеет значение ReadWrite или не задано, то соединение разрешено. Дополнительные сведения о свойстве соединения «Назначение приложения» см. в разделе Using Connection String Keywords with SQL Server Native Client. ALL
    Разрешаются все соединения с базами данных в первичной реплике. Это параметр по умолчанию.

Пример (Transact-SQL)

В следующем примере вторичная реплика добавляется в группу доступности с именем AG2. Для размещения новой реплики доступности указывается отдельный экземпляр сервера COMPUTER03\HADR_INSTANCE. В этой реплике разрешены только соединения для чтения и записи для первичной роли, а для вторичной роли разрешены соединения с намерением чтения.

ALTER AVAILABILITY GROUP AG2 ADD REPLICA ON 'COMPUTER03\HADR_INSTANCE' WITH ( ENDPOINT_URL = 'TCP://COMPUTER03:7022', PRIMARY_ROLE ( ALLOW_CONNECTIONS = READ_WRITE ), SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY ) ); GO 

Использование PowerShell

Настройка доступа к реплике доступности

Пример кода см. в подразделе Пример (PowerShell)далее в этом разделе.

  1. Перейдите в каталог (cd) экземпляра сервера, в котором находится первичная реплика.
  2. При добавлении реплики доступности в группу доступности воспользуйтесь командлетом New-SqlAvailabilityReplica . При изменении существующей реплики доступности воспользуйтесь командлетом Set-SqlAvailabilityReplica . Соответствующие параметры:
    • Чтобы настроить доступ к соединению для вторичной роли, укажите параметр ConnectionModeInSecondaryRolesecondary_role_keyword , где secondary_role_keyword равно одному из следующих значений: AllowNoConnections
      Не допускаются прямые соединения с базами данных во вторичной реплике, кроме того, к базам данных также нельзя получить доступ только для чтения. Это параметр по умолчанию. AllowReadIntentConnectionsOnly
      Разрешаются только соединения с базами данных во вторичной реплике, у которых свойство «Назначение приложения» равно ReadOnly. Дополнительные сведения об этом свойстве см. в разделе Using Connection String Keywords with SQL Server Native Client. AllowAllConnections
      К базам данных во вторичной реплике разрешаются все соединения на доступ только для чтения.
    • Чтобы настроить доступ к соединению для первичной роли, укажите параметр ConnectionModeInPrimaryRoleprimary_role_keyword, где primary_role_keyword равно одному из следующих значений: AllowReadWriteConnections
      Соединения, у которых свойство «Назначение приложения» равно ReadOnly, разрешены. Если свойство «Назначение приложения» имеет значение ReadWrite либо оно не задано, то соединение разрешено. Дополнительные сведения о свойстве соединения «Назначение приложения» см. в разделе Using Connection String Keywords with SQL Server Native Client. AllowAllConnections
      Разрешаются все соединения с базами данных в первичной реплике. Это параметр по умолчанию.

Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде PowerShell SQL Server . Дополнительные сведения см. в разделе Get Help SQL Server PowerShell.

Настройка и использование поставщика SQL Server PowerShell

Пример (PowerShell)

В следующем примере параметры ConnectionModeInSecondaryRole и ConnectionModeInPrimaryRole устанавливаются в значение AllowAllConnections.

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg $primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer" Set-SqlAvailabilityReplica -ConnectionModeInSecondaryRole "AllowAllConnections" ` -InputObject $primaryReplica Set-SqlAvailabilityReplica -ConnectionModeInPrimaryRole "AllowAllConnections" ` -InputObject $primaryReplica 

Дальнейшие действия: после настройки доступа только для чтения для реплики доступности

Доступ только для чтения к к доступным для чтения вторичным репликам.

  • При использовании bcp Utility или sqlcmd Utilityможно указать доступ только для чтения к любой вторичной реплике, которой разрешен доступ только для чтения. Для этого нужно указать параметр -K ReadOnly .
  • Обеспечение возможности подключения клиентских приложений к доступным для чтения вторичным репликам.

Факторы, которые могут повлиять на триггеры и задания после отработки отказа.

Если имеются триггеры и задания, которые не могут выполняться в недоступной или доступной для чтения базы данных-получателе, то в скриптах триггеров и заданий следует проверять, какой базой данных является искомая реплика, базой данных-источником или базой данных-получателем, доступной для чтения. Для получения этих сведений используйте функцию DATABASEPROPERTYEX, возвращающую свойство Updateability базы данных. Чтобы определить базу данных, доступную только для чтения, задайте в качестве значения READ_ONLY, как в примере ниже:

DATABASEPROPERTYEX([db name],'UpdateAbility') = N'READ_ONLY' 

Чтобы определить базу данных для чтения и записи, укажите в качестве значения READ_WRITE.

Связанные задачи

  • Настройка маршрутизации только для чтения в группе доступности (SQL Server)
  • Создание или настройка прослушивателя группы доступности (SQL Server)

См. также

  • Always On: ценностное предложение читаемой вторичной реплики
  • Always On: почему есть два варианта включения вторичной реплики для читаемой рабочей нагрузки?
  • Always On: Настройка доступной для чтения вторичной реплики
  • Always On: я только что включил читаемую вторичную реплику, но мой запрос был заблокирован. В чем дело?
  • Always On: обеспечение доступности последних статистических данных о читаемой вторичной реплике, базе данных только для чтения и моментальном снимке базы данных
  • Always On: проблемы со статистическими данными о базе данных только для чтения, моментальном снимке базы данных и вторичной реплике
  • Always On: влияние на основную рабочую нагрузку при запуске рабочей нагрузки составления отчетов на вторичной реплике
  • Always On: влияние сопоставления рабочей нагрузки составления отчетов на вторичной реплике на изоляцию моментальных снимков
  • Always On: минимизация блокировок потока REDO при запуске рабочей нагрузки составления отчетов на вторичной реплике
  • Always On: читаемая вторичная реплика и задержка данных

База данных доступна только для чтения и все изменения в ней не будут сохранены

на нескольких ПК база открывается нормально, на одном вот такое сообщение, везде Access 2003 — что нужно сделать?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Флешка доступна только для чтения
При попытке записать или удалить файл (или папку) выдается ошибка: "Файловая система доступна.

База данных открыта только для чтения
При переносе в папку из Program Files меняются атрибуты файла, из других локаций открывается норм.

SQL Server Management Studio ячейка доступна только для чтения
Здравствуйте, уважаемые формучане, столкнулся с проблемой, решить которую пока не получается. Во.

Обновление невозможно. База данных или объект доступны только для чтения
Пишу в макросе Excel нижеприведенный код для соединения с именованным диапазоном активной книги, и.

118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207

А там точно есть нужные права доступа к сетевому ресурсу (может там доступ получился только для чтения)?
А может быть там необходимо переустановить MS Access или MS Office? Попробуйте на тот компьютер скопировать эту базу и открыть её с локального диска. Если получите то же сообщение, то точно нужно переустанавливать.
Если база открывается с ярлыка — проверьте его.
Может рабочим диском для базы является отсутствующий на том компьютере логический диск?

База данных только для чтения как исправить ms sql

Информация о материале Автор: Сергей Жилин Категория: Вопросы и ответы Oracle Опубликовано: 04 октября 2010 Просмотров: 7214

SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. … Database mounted. SQL> alter database open read only; Database altered.
SQL> shutdown immediate; SQL> startup open read only ORACLE instance started. … Database mounted. Database opened.

Теперь база открыта только для чтения. Проверить это можно с помощью следующего запроса:

SQL> SELECT open_mode FROM v$database; OPEN_MODE ---------- READ ONLY

Самое популярное

  • Как посмотреть размер таблицы?
  • Как посмотреть план запроса?
  • Как посмотреть, когда у пользователя последний раз менялся пароль?
  • Как вычислить разницу между двумя датами в соседних строках одного столбца?
  • Как преобразовать TIMESTAMP в DATE?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *