Точный ответ на Ваш вопрос (обрабатывающий 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 как свой параметр командной строки, анализирует его и делает необходимые обновления базы данных для записи возврата.
Как упомянуто в комментариях - Вы не копируете/восстанавливаете 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
операторы корректны здесь...
Вместо "taskkill/im sqlservr.exe" для остановки механизма SQL Server более чистый путь следующий:
sqlcmd -Slocalhost -E -Q "shutdown"
"Завершение работы" является командой T-SQL, которая может быть дана к механизму SQL через любой вид соединения, таким образом, это работает, даже когда "сеть останавливается, mssqlserver" не будет, такой как в однопользовательском режиме. Это может также быть сделано от администраторского соединения. (Я не попробовал, но это могло бы даже работать в хранимой процедуре. Отличное развлечение 1 апреля!)