Есть ли способ установить SqlJobs на SqlServer по сценарию? Я хотел бы, чтобы sqljobs устанавливались при удаленном настройке базы данных у клиента. Это возможно?Автоматическая установка SqlJobs SqlServer
ответ
Если вы смысл добавлять задания SQL Agent, вам нужно только посмотреть насколько sp_add_job (шаг | график | сервер) хранимые процедуры в MSDB, которые достаточно хорошо описаны в BOL
Если, с другой стороны, вы говорите об обеспечении установки агента, запуске и т. д., тогда я не верю, что есть способ сделать это через скрипт.
Если, с другой стороны, вы говорите о каком-то конкретном продукте/базе данных, когда речь идет о SQLJobs, тогда этот ответ вам совсем не поможет.
Редактировать
И самый простой способ, чтобы получить правильные вызовы (опять же, если мы говорим работу SQL Agent) является построение их на локальном компьютере, а затем сценарий их через SSMS/EM. Самый большой найденный у меня вопрос: вам нужно добавить сервер к заданию, даже если он предназначен только для работы на локальном сервере.
Edit 2
В ответ на первый комментарий - ваш призыв к sp_add_jobserver можно указать имя сервера как «(Local)», который будет делать это локальная работа сервера.
Вот короткий, но полный (и, надеюсь, все еще работающий) скрипт, который автоматизирует восстановление базы данных за одну ночь. Обратите внимание, что он не ссылается на какой сервер он включен, поэтому добавит задание на любой сервер, на котором он запущен:
USE [msdb]
GO
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Maintenance' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Maintenance'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'RESTORE_DatabaseN',
@enabled=1,
@notify_level_eventlog=2,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'No description available.',
@category_name=N'Database Maintenance',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @[email protected], @step_name=N'step 1',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=3,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=1,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'DECLARE @BakFile varchar(120),
@OLD_DB sysname,
@NEW_DB sysname,
@RestoreData sysname,
@RestoreLog sysname,
@DBLogical varchar(255),
@LogLogical varchar(255),
SET @OLD_DB = ''DatabaseN''
SET @NEW_DB = ''DatabaseN''
SET @BakFile = ''\\remoteserver\Backups\Server2\DatabaseN\DatabaseN.BAK''
SET @RestoreData = ''E:\sqldata\'' + @NEW_DB + ''.mdf''
SET @RestoreLog = ''F:\SQLLogs\'' + @NEW_DB + ''_log.ldf''
create table #filelist (LogicalName varchar(255), PhysicalName varchar(255), Type varchar(20), FileGroupName varchar(255), Size varchar(20), MaxSize varchar(20))
insert #filelist exec (''RESTORE FILELISTONLY FROM disk = '''''' + @BakFile + '''''''')
select @DBLogical = LogicalName from #filelist where Type = ''D''
select @LogLogical = LogicalName from #filelist where Type = ''L''
RESTORE DATABASE @NEW_DB FROM DISK = @BakFile
WITH MOVE @DBLogical TO @RestoreData,
MOVE @LogLogical TO @RestoreLog, REPLACE
EXEC ('' USE '' + @NEW_DB + '' BACKUP LOG '' + @NEW_DB + '' WITH Truncate_Only'')
EXEC ('' USE '' + @NEW_DB + '' ALTER DATABASE '' + @NEW_DB + '' SET RECOVERY SIMPLE'')
--EXEC ('' USE '' + @NEW_DB + '' dbcc shrinkfile('' + @LogLogical + '', 2000)'')
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @[email protected], @name=N'daily',
@enabled=1,
@freq_type=8,
@freq_interval=127,
@freq_subday_type=1,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=1,
@active_start_date=20070708,
@active_end_date=99991231,
@active_start_time=11500,
@active_end_time=235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
Действительно, добавление сервера на работу - это то, что все испортило. Мне нужно развернуть задания на разных серверах. –
- 1. Автоматическая установка браузеров-плагинов
- 2. Автоматическая установка профиля конфигурации
- 3. Автоматическая установка ilmerge
- 4. Автоматическая установка apk
- 5. Автоматическая установка белого пространства?
- 6. Git hook автоматическая установка
- 7. Автоматическая установка данных
- 8. Автоматическая установка Wordpress?
- 9. Автоматическая установка MSI
- 10. Автоматическая установка IIS
- 11. Автоматическая установка приложений
- 12. Автоматическая установка зависимостей VSIX
- 13. Автоматическая установка контрольной контрольной суммы
- 14. Автоматическая установка из Java MSI
- 15. Grails: автоматическая установка плагинов Grails
- 16. Ошибка импорта Python, автоматическая установка
- 17. Автоматическая установка зависимости brunch.io/bower.io
- 18. Автоматическая установка программ на vm
- 19. Автоматическая установка для Debian Jessie
- 20. Установка и сброс DATEFORMAT в SQLServer 2005
- 21. Проверьте, требуется ли установка SQLServer для перезагрузки
- 22. CentOS автоматическая установка не с «Установка назначения» ошибки
- 23. F # Диаграмма Нет Автоматическая установка диапазона оси?
- 24. Автоматическая установка tripwire через python в Linux
- 25. Автоматическая установка шрифта, используемого на моем сайте
- 26. Автоматическая установка переменной значения в форме
- 27. Автоматическая установка MySQL на AWS Ubuntu 14.04
- 28. Автоматическая установка драйвера в Windows XP
- 29. Автоматическая установка MSMQ с помощью Powershell
- 30. Автоматическая установка excel VBA add-in
Хмм. Я на самом деле пытаюсь увеличить мнение по этому вопросу. Я не думаю, что мой отличный ответ, и я хотел бы помочь вам больше, если бы вы предоставили лучшую информацию, или другие будут взвешивать комментарии и ответы. –
Ну, лучше, что вы имеете в виду? Теперь мне нужно развернуть базы данных на удаленных серверах, и я хотел бы добавить эти задания в нашу непрерывную интеграцию. У нас есть система управления версиями баз данных, которая автоматически выполняет сценарии обновления и изменения в sps и функциях. Хотелось бы добавить эти sqljobs тоже. –