これが適切な場所でないと謝罪します。私は過去に印をつけた投稿を無関係なものにしていたので、私は意見を求めていたので、これは境界線かもしれないと思いますか?別のジョブでリモートサーバー上でジョブを開始するためのベストプラクティス
別の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
@Anandこれは、リンクサーバーを設定するだけでなく、より安全に/より良い方法になりますか? – chadwin
リンクされたサーバーがオプションでない場合、同等の良いオプションと同じくらい良いソリューションであるとは限りません。リンクサーバーは単純なジョブの簡単な方法です。 SSISはより精巧で多くの機能を提供します。 – Anand