Pau*_*her 5 c# sql-server-2012 ssis-2012
我正在尝试连接到 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)
Run Code Online (Sandbox Code Playgroud)
如果我运行这个,我会得到一个错误
The server principal "XXXX" is not able to access the database \"SSISDB\" under the current security context
Run Code Online (Sandbox Code Playgroud)
如果我授予用户 sysadmin 权限它就可以工作,所以这绝对是一个权限问题,但我不能用它作为解决方案。
在旧的集成服务模型下,您将使用户成为 db_ssisadmin、db_ssisdtuser 或 db_ssisoperator 的成员 - 尝试过,但没有帮助:-(
答案包含在链接中
1. 允许登录名只能读取/执行一个项目,但无法访问该项目所在文件夹中的其他对象(项目或环境): a. 将其映射到 SSISDB 数据库角色的成员 - 民众。(这利用了 SQL 安全机制。) b. 授予文件夹读取权限,并授予项目读取/执行权限。(这使用 SSIS 目录安全机制。)
2. 允许登录名(用户或组)能够读取/执行文件夹中的所有项目: a. 将其映射到 SSISDB 数据库角色的成员 - public。b.授予该文件夹读取/执行/读取对象的权限。
3. 允许登录名能够在 SSISDB 上执行任何操作: a. 使其成为 SSISDB 数据库角色 - ssis_admin 的成员。
归档时间: |
|
查看次数: |
2881 次 |
最近记录: |