2017-01-20 3 views
0

Приносим свои извинения, если это не подходящее место для запроса. У меня были сообщения, отмеченные в прошлом как не связанные, потому что я просил мнения, и я думаю, что это может быть пограничным?Лучшая практика для запуска задания на удаленном сервере с другим заданием

Я хочу иметь возможность запускать задание на удаленном 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-сервер.

Хранение учетных данных в ясном тексте в любом месте всегда было для меня красным флагом. С точки зрения безопасности, каков наилучший способ выполнить эту задачу?

+0

Вы можете вникать в SSIS, который позволит вам подключаться к любому количеству серверов и выполнять хранимые процедуры при запутывании учетных данных - https://msdn.microsoft.com/en-us/library/ms141003.aspx. – Anand

+0

@ А, а это будет более безопасным/лучше, чем просто создание связанного сервера? – chadwin

+0

Не обязательно лучшее решение, равно как и хороший вариант, если связанный сервер не является вариантом. Связанный сервер - простой способ для простых заданий; SSIS более сложная и предлагает множество функций. – Anand

ответ

0

Я думаю, что ваш лучший вариант - использовать OPENROWSET, как описано this article. Используйте подход динамического запроса внизу.

Смежные вопросы