Сценарии командной строки для восстановления 4 системных баз данных SQL Server MS 2008

Точный ответ на Ваш вопрос (обрабатывающий bounce-xxx@example.com адрес), зависит от того, как Ваш сервер настроен для получения почты. Если example.com виртуальный домен лучшее, которое можно сделать, собирают сообщения в bounce@example.com почтовый ящик (принятие recipient_delimiter = -).

Если example.com локально поставленный домен для сервера (почта поставляется фактическим системным учетным записям), затем, можно добавить a .forward файл к корневому каталогу bounce пользователь, который поставляет к программе, которая анализирует информацию о возврате и записывает ее в базе данных или файле. Посмотрите man local для большего количества информации о .forward формат и как поставить к программе.

То, что мы делаем, так как мы отправляем сообщения за большим количеством доменов, является использованием bounces.example.com как наш домен VERP. Этот домен должен быть добавлен к relay_domains. Создать /etc/postfix/transport_maps с этим содержанием:

bounces.example.com             bulkbounce:

Затем добавьте строку, подобную этому к /etc/postfix/master.cf:

bulkbounce   unix  -       n       n       -       -       pipe
  user=nobody argv=/usr/local/bin/bounce_handler.py ${recipient}

bounce_handler.py сценарий принимает адрес VERP как свой параметр командной строки, анализирует его и делает необходимые обновления базы данных для записи возврата.

3
задан 13 May 2010 в 16:59
2 ответа

Как упомянуто в комментариях - Вы не копируете/восстанавливаете TEMPDB.

Заставить сценарий продолжаться после sqlservr -m команда, Вам нужна к "фону" команда. Чтобы сделать это, используйте start команда перед ним. Что-то как:

start sqlservr -m

должен работать. После этого, хотя, необходимо будет ожидать SQL Server для фактического запуска прежде, чем дать любые команды. В Windows 2003 можно добраться sleep.exe из Windows 2003 Resource Kit, чтобы сделать это. В Windows 2008 можно использовать timeout.exe команда. Вам будут нужны ко времени несколько стартапов для понимания для точно, сколько времени ожидать прежде, чем делать попытку восстановлений (и добавить немного времени к нему, на всякий случай...),

До восстановления msdb и модели, хотя, это должны быть 2 более простых восстановления sqlcmd точно так же, как то, Вы имеете для ведущего устройства. Также необходимо удостовериться, что Вы останавливаете экземпляр SQL Server прежде, чем перезапустить сервис.

Заключительный сценарий посмотрел бы что-то как:

::set variables
set dbdirectory=C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
title Restoring system databases
net stop mssqlserver
cd C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn
start sqlservr -m
timeout /t 60
sqlcmd -Slocalhost -E -Q "restore database master from disk='c:\master.bak' WITH REPLACE" 
sqlcmd -Slocalhost -E -Q "restore database msdb from disk='c:\msdb.bak' WITH REPLACE" 
sqlcmd -Slocalhost -E -Q "restore database model from disk='c:\model.bak' WITH REPLACE" 
taskkill /im sqlservr.exe
net start mssqlserver
pause

Обязательно проверьте эту technet статью также.

примечание: Я не протестировал это, я принимаю Ваш sqlcmd операторы корректны здесь...

1
ответ дан 3 December 2019 в 07:17
  • 1
    Также - просто хотел добавить, что я обычно - защитник замены Пакетных файлов с Powershell - при этом обстоятельстве, которое я не то, хотя, резервное копирование/восстановление через Powershell является крайне подробным в сравнении. –  MattB 13 May 2010 в 18:07

Вместо "taskkill/im sqlservr.exe" для остановки механизма SQL Server более чистый путь следующий:

sqlcmd -Slocalhost -E -Q "shutdown"

"Завершение работы" является командой T-SQL, которая может быть дана к механизму SQL через любой вид соединения, таким образом, это работает, даже когда "сеть останавливается, mssqlserver" не будет, такой как в однопользовательском режиме. Это может также быть сделано от администраторского соединения. (Я не попробовал, но это могло бы даже работать в хранимой процедуре. Отличное развлечение 1 апреля!)

1
ответ дан 3 December 2019 в 07:17

Теги

Похожие вопросы