我有一个场景,那里有一个开发和prod环境。所有SSIS开发都将在开发SQL Server中进行,稍后它将被提供给一个单独的团队以在生产中进行部署。
所以现在我的要求是,作为SSIS包的开发者,我应该能够通过SSMS连接到prod服务器并执行其他团队在prod中部署的工作。我不应该在服务器上看到任何其他工作。
此方案的最佳设置是什么?
答案 0 :(得分:2)
SSMS用户界面只能做它能做的事情。除了JodyT概述的方法之外,您将能够看到所有工作,但只执行您拥有的工作,您要求自定义,因此您将需要自定义解决方案。
在这种情况下,我很可能会用存储过程解决问题。我们将利用EXECUTE AS子句来运行存储过程,但是当它运行时,操作将作为特权用户执行。
msdb.dbo.sp_start_job
是右键单击作业并“在步骤中启动作业...”时调用的方法
了解您要运行的作业的名称以及可以运行它的人员,这就是创建相应存储过程所需的全部内容。
CREATE PROCEDURE
dbo.AnandPhadkeRunJob
WITH EXECUTE AS 'domain\username'
BEGIN
SET NOCOUNT ON;
EXECUTE msdb.dbo.sp_startjob @job_name = 'Do Something';
END
在这里,我创建一个存储过程,启动名为“Do Something”的作业,并在“username”域帐户的上下文中运行它。根据您的环境进行定制。
答案 1 :(得分:1)
This page描述了SQL Server代理可用的不同数据库角色。
如果您是该作业的所有者并且您是SQLAgentUserRole
数据库角色的成员,那么您将能够执行您拥有的作业。但是,您也可以看到其他工作,但却无法完成这些工作。