Пример. Оперативное восстановление файла только для чтения (модель полного восстановления)
Этот раздел относится к базам данных SQL Server в модели полного восстановления, содержащей несколько файлов или файловых групп.
В этом примере база данных adb , которая использует модель полного восстановления, содержит три файловые группы. Файловая группа A доступна для записи и для чтения, файловые группы B и C доступны только для чтения. Изначально все файловые группы находятся в режиме в сети.
Необходимо восстановить файл b1 с атрибутом «только для чтения» из файловой группы B базы данных adb . Резервное копирование выполнялось после того, как файл был переведен в режим «только для чтения», поэтому резервные копии журналов не требуются. Файловая группа B переводится в режим «вне сети» на период восстановления, однако оставшаяся часть базы данных остается в режиме «в сети».
Последовательность восстановления
Синтаксис последовательности восстановления в сети тот же самый, что и в случае последовательности восстановления вне сети.
Чтобы восстановить файл, администратор базы данных использует следующую последовательность восстановления:
RESTORE DATABASE adb FILE='b1' FROM filegroup_B_backup WITH RECOVERY
Файловая группа B теперь находится в режиме в сети».
Дополнительные примеры
- Пример. Поэтапное восстановление базы данных (простая модель восстановления)
- Пример. Поэтапное восстановление некоторых файловых групп (простая модель восстановления)
- Пример. Оперативное восстановление файла только для чтения (простая модель восстановления)
- Пример. Поэтапное восстановление базы данных (модель полного восстановления)
- Пример. Поэтапное восстановление некоторых файловых групп (модель полного восстановления)
- Пример. Оперативное восстановление файла, доступного для чтения и записи (модель полного восстановления)
Настройка доступа только для чтения к вторичной реплике в группе доступности 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
Настройка доступа к реплике доступности
- В обозревателе объектов подключитесь к экземпляру сервера, на котором размещена первичная реплика, и разверните дерево сервера.
- Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .
- Щелкните группу доступности, реплику которой нужно изменить.
- Щелкните правой кнопкой мыши реплику доступности и выберите пункт Свойства.
- В диалоговом окне Свойства реплики доступности можно изменить доступ к соединению для первичной и вторичной роли следующим образом:
- Для вторичной роли выберите новое значение в раскрывающемся списке Доступная для чтения вторичная следующим образом. Нет
Для баз данных-получателей этой реплики соединения пользователя не разрешаются. Для них не разрешен доступ для чтения. Это параметр по умолчанию. Назначение — только чтение
Для баз данных-получателей этой реплики разрешены лишь подключения только для чтения. Для всех баз данных-получателей разрешен доступ для чтения. Да
Для баз данных-получателей этой реплики разрешены все соединения, но только с доступом для чтения. Для всех баз данных-получателей разрешен доступ для чтения. - Для первичной роли выберите новое значение в раскрывающемся списке Соединения в первичной роли следующим образом: разрешить все соединения.
Разрешаются все соединения с базами данных в первичной реплике. Это параметр по умолчанию. разрешить соединения с доступом на чтение и запись;
Если свойство «Назначение приложения» имеет значение ReadWrite или не задано, то соединение разрешено. Соединения, у которых свойство соединения «Назначение приложения» равно ReadOnly , не разрешены. Таким образом, клиент не сможет по ошибке подключить рабочую нагрузку с намерением чтения к первичной реплике. Дополнительные сведения о свойстве соединения «Назначение приложения» см. в разделе Using Connection String Keywords with SQL Server Native Client.
- Для вторичной роли выберите новое значение в раскрывающемся списке Доступная для чтения вторичная следующим образом. Нет
Использование Transact-SQL
Настройка доступа к реплике доступности
Пример этой процедуры см. в подразделе Примеры (Transact-SQL)далее в этом разделе.
- Подключитесь к экземпляру сервера, на котором находится первичная реплика.
- Если вы указываете реплику для новой группы доступности, воспользуйтесь инструкцией 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
Для баз данных-получателей этой реплики разрешены все соединения, но только с доступом для чтения. Для всех баз данных-получателей разрешен доступ для чтения.
- Чтобы настроить доступ к соединению для вторичной роли, укажите в предложении ADD REPLICA или MODIFY REPLICA WITH параметр SECONDARY_ROLE следующим образом: SECONDARY_ROLE ( ALLOW_CONNECTIONS =< NO | READ_ONLY | ALL >) где NO
- Чтобы настроить доступ к соединению для первичной роли, укажите в предложении 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)далее в этом разделе.
- Перейдите в каталог (cd) экземпляра сервера, в котором находится первичная реплика.
- При добавлении реплики доступности в группу доступности воспользуйтесь командлетом 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
Разрешаются все соединения с базами данных в первичной реплике. Это параметр по умолчанию.
- Чтобы настроить доступ к соединению для вторичной роли, укажите параметр ConnectionModeInSecondaryRolesecondary_role_keyword , где secondary_role_keyword равно одному из следующих значений: AllowNoConnections
Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом 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: читаемая вторичная реплика и задержка данных
Преобразование базы данных в режим только для чтения
Требуется исключительный доступ для переключения базы данных между режимами чтения/записи и только для чтения- см. разд. «Исключительный доступ» главы 39. Переключение режима может быть выполнено владельцем базы данных или пользователем SYSDBA.
Могут быть использованы утилиты gfix или gbak[37]:
* Используя gbak, выполните резервное копирование базы данных и восстановите ее в режиме только для чтения посредством опции -c[reate], например:
gbak -create -mode read_only dbl.fbk dbl.fdb
* Используя gflx, выдайте команду-m[ode] read-only, например: gfix -mode read_only dbl. fdb
СОВЕТ. Восстанавливайте базы данных только для чтения с полностраничным заполнением — используйте переключатель -use для указания «использовать полное пространство». В базе данных для чтения/записи страницы по умолчанию заполняются примерно на 80 процентов, поскольку это может помочь в оптимизации повторного использования страниц. Резервирование пространства не имеет смысла для базы данных только для чтения, а полностью заполненные страницы являются более компактными и более быстрыми.
СОВЕТ. Хотя сервер Firebird может управлять напрямую базами данных InterBase 5.x, эти базы данных не могут быть переведены в режим только для чтения. Вы можете обновить базу данных InterBase 5 до базы данных только для чтения Firebird, сделав транспортабельную резервную копию в gbak InterBase 5 и восстановив с использованием gbak Firebird, с переключателями -c[reate] и -mode read_only.
Читайте также
Экспорт данных из базы данных Access 2007 в список SharePoint
Экспорт данных из базы данных Access 2007 в список SharePoint Access 2007 позволяет экспортировать таблицу или другой объект базы данных в различных форматах, таких как внешний файл, база данных dBase или Paradox, файл Lotus 1–2–3, рабочая книга Excel 2007, файл Word 2007 RTF, текстовый файл, документ XML
Перемещение данных из базы данных Access 2007 на узел SharePoint
Перемещение данных из базы данных Access 2007 на узел SharePoint Потребности многих приложений Access 2007 превышают простую потребность в управлении и сборе данных. Часто такие приложения используются многими пользователями организации, а значит, имеют повышенные потребности в
Основные принципы чтения и записи XML-данных
Основные принципы чтения и записи XML-данных В главах 5, «ADO.NET: объект DataSet», и 6, «ADO.NET: объект DataAdapter» демонстрируются программируемые и прямые способы загрузки данных в объект DataSet из базы данных. Еще один метод загрузки данных основан на чтении XML-данных. Как и следовало
Режим чтения
Режим чтения Режим чтения был создан для того, чтобы пользователи могли свободно читать и перемещаться по документу, не распечатывая его (рис. 2.55). Название этого режима говорит само за себя – в нем удобнее всего работать с документом, если нужно подробно изучить то, что в
Статические поля только для чтения
Статические поля только для чтения В отличие от данных-констант, доступные только для чтения поля не причисляются автоматически к группе статических. Если вы хотите использовать значения доступных только для чтения полей на уровне классов, используйте ключевое слово
Свойства, доступные только для чтения, и свойства, доступные только для записи
Свойства, доступные только для чтения, и свойства, доступные только для записи При создании типов класса можно создавать свойства, доступные только для чтения. Для этого просто создайте свойство без соответствующего блока set. Точно так же, если вы хотите иметь свойство,
Работа с объектами чтения данных
Работа с объектами чтения данных После создания активного соединения и SQL-команды следующим шагом является предъявление запроса источнику данных. Как вы, наверное, догадываетесь, это можно сделать несколькими способами. Тип DbDataReader (реализующий IDataReader) обеспечивает самый
Получение множества наборов результатов с помощью объектов чтения данных
Получение множества наборов результатов с помощью объектов чтения данных Объекты чтения данных могут получать от одного объекта команды множество наборов результатов. Например, чтобы получить все строки таблицы Inventory и все строки таблицы Customers, можно указать оба
Обновление базы данных с помощью объекта адаптера данных
Обновление базы данных с помощью объекта адаптера данных Адаптеры данных могут не только заполнять для вас таблицы объекта DataSet. Они могут также поддерживать набор объектов основных SQL-команд, используя их для возвращения модифицированных данных обратно в хранилище
Просмотры только для чтения и изменяемые
Просмотры только для чтения и изменяемые Когда над просмотром выполняется операция DML, изменения могут быть переданы базовым таблицам, на основе которых был создан просмотр, только в случае выполнения некоторых условий. Если просмотр соответствует этим условиям, он
Просмотры только для чтения
Просмотры только для чтения Просмотр будет просмотром только для чтения, если его оператор SELECT имеет любую из следующих характеристик:* указывает квантификатор строк, отличный от ALL (т. е. DISTINCT, FIRST, SKIP);* содержит поля, определенные через подзапросы или другие выражения;*
Установка атрибутов –=Только для чтения=– у столбцов компонента StringGrid
Установка атрибутов –=Только для чтения=– у столбцов компонента StringGrid Манипулирование вышеуказанным атрибутом возможно в обработчике события OnSelectCell:if Col mod 2 = 0 then grd.Options:= grd.Options + [goEditing]else grd.Options:= grd.Options –
Базы данных (классы для работы с базами данных)
Базы данных (классы для работы с базами данных) В MFC включены несколько классов, обеспечивающую поддержку приложений, работающих с базами данных. В первую очередь это классы ориентированные на работу с ODBC драйверами – CDatabase и CRecordSet. Поддерживаются также новые средства для
14.2.7. Как сделать переменную доступной только для чтения
14.2.7. Как сделать переменную доступной только для чтения Если переменной присваивается значение, то может потребоваться, чтобы это значение не изменялось. Для этого достаточно сделать переменную доступной только для чтения. Если пользователь попытается изменить
MS SQL — перенесенные базы подключаются только в read-only (только для чтения)
Итак, вводная: у нас есть сервер Microsoft SQL Server, установленный на Windows Server 2008 или выше. Причем не важно — имеем ли мы SQL Standard, SQL Enterprise или SQL Express — ситуация будет одинаковой.
Пока базы данных лежат по своему пути по-умолчанию, т.е. в Program files, все с ними хорошо. Но как только мы перенесем их в другой каталог (а тем более — на другой диск) — сразу появляются проблемы.
Проблемы заключаются в том, что либо MS SQL Server не желает подключать (аттачить) вовсе перенесенные базы данных, либо подключает, но только в режиме «только для чтения» (т.е. read-only).
Решение.
Проблема заключается в правах на папку, куда Вы перенесли базы данных. Дело в том, что изначально MS SQL Server прав на запись туда не имеет, соответственно, и работает не так.
Чтобы узнать — какие права нужны для этой папки — нужно пройти по адресу, где эти базы лежат по-умолчанию на данном сервере (например,
C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL
), нажать правой кнопкой мыши на папке с базами данных (как правило — «DATA»), в контекстном меню выбрать «Свойства», далее перейти на вкладку «Безопасность» и посмотреть текущие права.
Вы увидите там надпись вида «SQLServerMSSQLUser$HOSTNAME$SQLExpress» или типа того (вместо HOSTNAME — имя Вашего сервера, вместо SQLExpress — имя инстанции или ничего).
Теперь топаем туда, куда Вы базы скопировали, и добавляем эту группу с полными правами в безопасность (кстати да, это группа, а не пользователь).
А вот отсюда читаем внимательно! Просто так, введя частично имя группы и нажав на кнопку «Проверить имена» Вы ее не добавите! Windows будет себя вести так, как будто такого группы нет в ни в системе, ни в домене — нигде вообще. Почему это сделано — загадка (ибо безопасности оно не добавляет — отчаившись, админы добавляют группу «Все» и дают максимальные права на папку).
Вводить имя группы нужно ПОЛНОСТЬЮ. Каждый блин символ! Один в один, вот прямо как написано во вкладке «Безопасность» папки «DATA», где на ЭТОМ сервере лежат базы по-умолчанию. Если не введете хотя-бы один символ — группа не распознается. И неважно — какие объекты для поиска Вы выбираете — все равно пока не введете символ в символ — ОС будет говорить, что такого объекта не существует.
Итак, добавили группу с максимальными правами к папке, где сейчас лежат нужные базы данных — и снова пробуем присоединить их в MS SQL Server. Теперь должно получиться.
