我试图连接到SSDB目录,以便使用.NET对象模型执行一个包。
using Microsoft.SqlServer.Management.IntegrationServices;
var sqlConn = new SqlConnection(connectionString);
var ssis = new IntegrationServices(sqlConn);
var project = ssis.Catalogs["SSISDB"].Folders[package.Path].Projects[package.Project];
var pinfo = project.Packages[package.Name + ".dtsx"];
var id = pinfo.Execute(false, env, packageParams)如果我运行这个,我会得到一个错误
The server principal "XXXX" is not able to access the database \"SSISDB\" under the current security context如果我授予用户sysadmin权限,它就能工作,所以这肯定是一个权限问题,但我不能用它作为解决方案。
在旧的Integration模型下,您将使用户成为db_ssisadmin、db_ssisdtuser或db_ssisoperator的成员--尝试过,但没有帮助:-(
发布于 2015-02-19 15:59:51
答案包含在链接中
1.允许登录只能读取/执行一个项目,但不能访问项目所在文件夹中的其他对象(项目或环境):将其a.Map给SSISDB数据库角色的成员--公共。(这利用了SQL安全机制。)将其读入文件夹,并将其读取/执行授予项目。(这使用SSIS目录安全机制。)2.允许登录(用户或组)能够读取/执行文件夹中的所有项目:将其a.Map给SSISDB数据库角色的成员-- public。将b.Grant读取/执行/读取对象到文件夹。3.允许登录在SSISDB上做任何事情: a.make它是SSISDB数据库角色- ssis_admin的成员。
https://dba.stackexchange.com/questions/93232
复制相似问题