sql-server – 从非sysadmin域用户拥有的SQL Agent功课运行SSIS
我有两个SSIS包,它们在一夜之间(通过SQL Server署理)运行,作为更大的SSIS陈设的一部门,没有任何题目.统统都在行使 Windows身份验证,而且打算的功课由sysadmin(我,我)拥有,并作为SQL Server署理处事帐户运行. 因此,数据本质上是源体系?> transit db~>进级?> NDS一夜之间. 我体谅的两个SSIS包,处理赏罚传输db~>分期和分期?> NDS部门别离用于特定的一组数据. 域用户(非sysadmin)在源体系中执行某些操纵并将风趣的数据推送到传输数据库中,因此我必要一种要领在事变时刻内获取此更新的数据以更新NDS:确定最简朴的要领此人触发该ETL,是通过单击启用宏的Excel事变簿中的按钮,该按钮通过ODBC(行使Windows身份验证)毗连到SQL Server并执行存储进程. 存储进程如下所示: create procedure dbo.UpdateMaterialInventory as begin execute msdb.dbo.UpdateMaterialInventory; end [msdb]中的“姐妹”存储进程如下所示: create procedure dbo.UpdateMaterialInventory with execute as 'SqlAgentProxy' as begin execute msdb.dbo.sp_start_job N'NDS-ManualMaterialInventory'; end 此[SqlAgentProxy]用户是我在[msdb]中按照域用户的登录名建设的Windows用户,我向此UpdateMaterialInventory进程授予了执行权限.这停止了必需向域用户授予对msdb.dbo.sp_start_job的执行权限,这将是过多的. SQL署理功课NDS-ManualMaterialInventory由域用户拥有,而且有两个步调,每个步调范例为[SQL Server Integration Services Package],配置为Run as SSISProxy. SSISProxy是一个SQL Server署理署理,行使根据名称SSISProxyCredentials映射到[SQL Server Integration Services Package]子体系.域用户的登录名已添加到署理帐户主体. SSISProxyCredentials是行使统一个域用户的标识建设的,该用户在一夜之间运行整个SSIS ETL,而且其暗码被四重搜查. 此刻,假如我运行这个: execute as login=N'DOMAINthatperson' exec NDS.dbo.UpdateMaterialInventory; go 我获得这个输出: Job 'NDS-ManualMaterialInventory' started successfully. 然而,事变经验汇报我们一个不那么令人激昂的故事: The job failed. The Job was invoked by User DOMAINthatperson. The last step to run was step 1 (Extract). 第1步详情: Executed as user: {domain user that runs SSIS ETL overnight}. Microsoft (R) SQL Server Execute Package Utility Version 12.0.4100.1 for 64-bit Copyright (C) Microsoft Corporation. All rights reserved. Started: 2:18:50 PM Failed to execute IS server package because of error 0x80131904. Server: {server name},Package path: SSISDBFooBarfoobar.dtsx,Environment reference Id: NULL. Description: Login failed for user '{domain user that runs SSIS ETL overnight}'. Source: .Net SqlClient Data Provider Started: 2:18:50 PM Finished: 2:18:51 PM Elapsed: 0.094 seconds. The package execution failed. The step failed. 功课失败,任那里所都没有记录. 假如我将功课全部者变动为本身,并将步调“运行”变动为SQL Server署理处事帐户,则功课将运行,乐成并将1,067行记录到[元数据].[dbo].[sysssislog]. 看起来有关怎样配置署理/凭据的题目.我做错了哪一部门? 办理要领这个题目看起来比此刻伟大得多.因为您行使的是SQL 2014,因此您也许会被2012年推出的新安详成果所困扰.独一真正重要的是: Server: {server name},Environment reference Id: NULL. Description: Login failed for user '{domain user that runs SSIS ETL overnight}'. 您的署理用户的登录很也许无法会见SSISDB目次(纵然他也许有权会见SQL Server). 请查察此MSDN博客文章SSIS Catalog Access Control Tips和SQL 2012 SSIS Catalog Permissions 一旦您现实加载了包,您也许会碰着其他安详上下文题目,但您应该从集成处事自己得到更好的日记记录. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |