Приносим свои извинения, если это не подходящее место для запроса. У меня были сообщения, отмеченные в прошлом как не связанные, потому что я просил мнения, и я думаю, что это может быть пограничным?Лучшая практика для запуска задания на удаленном сервере с другим заданием
Я хочу иметь возможность запускать задание на удаленном SQL-сервере из задания на другом SQL-сервере. Я знаю, как это сделать, это не мой вопрос.
Недавно мы перенесли наши серверы на работу и переделали все права на безопасность/разрешения/логины для почти всего. Так что теперь были повод для безопасности. Раньше я был в состоянии выполнить это действие с помощью linkserver и просто с помощью команды
EXEC [LINKSERVER].msdb.dbo.sp_start_job N'JOB NAME'
Но так как миграции, linkserver я имел обыкновение использовать, чтобы сделать это, в настоящее время нет, и они не развлекая мою просьбу для его резервного копирования. Они сказали использовать другой метод, который используется в другом задании.
Итак, я нашел эту работу, и она использует SQLCMD, которая требует хранения имени пользователя и пароля на шаге задания. С использованием этого кода:
declare @cmd varchar(2000), @Success int
set @cmd='sqlcmd -S "{IP ADDRESS}" -U {USERNAME} -P {PASSSWORD} -Q "exec msdb.dbo.sp_start_job @job_name=''JOB NAME''"'
exec @Success = xp_cmdshell @cmd
IF (@Success = 0)
PRINT 'Success'
ELSE
PRINT 'Failure';
На мой взгляд, это кажется менее безопасным, чем использование сервера ссылок? Нет? Потому что теперь кто-то и их мать, которые хотя бы читают доступ к этим шагам, могут захватить этот логин, который имеет ограниченный доступ, но все же. Если по какой-то причине у пользователя были отменены привилегии SQL или они покинули компанию, у них все равно будет некоторый способ входа в SQL-сервер.
Хранение учетных данных в ясном тексте в любом месте всегда было для меня красным флагом. С точки зрения безопасности, каков наилучший способ выполнить эту задачу?
Вы можете вникать в SSIS, который позволит вам подключаться к любому количеству серверов и выполнять хранимые процедуры при запутывании учетных данных - https://msdn.microsoft.com/en-us/library/ms141003.aspx. – Anand
@ А, а это будет более безопасным/лучше, чем просто создание связанного сервера? – chadwin
Не обязательно лучшее решение, равно как и хороший вариант, если связанный сервер не является вариантом. Связанный сервер - простой способ для простых заданий; SSIS более сложная и предлагает множество функций. – Anand