c# - 以特定用户身份从 .NET(使用 SSISDB 目录)执行 SSIS 包
问题描述
我有一个简单的 SSIS 包,其中包含一个数据流任务。这从 csv 文件中读取数据并将其转储到数据库表中。我已将其部署到 SSISDB 目录并从 .NET 运行:
string targetServerName = "MyServerName";
string folderName = "TestFolder";
string projectName = "TestProject";
string packageName = "TestPackage";
string sqlConnectionString = "Data Source=" + targetServerName + ";Initial Catalog=master;Integrated Security=SSPI;";
using (var sqlConnection1 = new SqlConnection(sqlConnectionString))
{
//Set up connection to package
IntegrationServices integrationServices1 = new IntegrationServices(sqlConnection1);
Catalog catalog = integrationServices1.Catalogs["SSISDB"];
CatalogFolder folder = catalog.Folders[folderName];
ProjectInfo project = folder.Projects[projectName];
PackageInfo package = project.Packages[packageName];
//Set up parameters
Collection<PackageInfo.ExecutionValueParameterSet> executionParameters = new Collection<PackageInfo.ExecutionValueParameterSet>();
executionParameters.Add(new PackageInfo.ExecutionValueParameterSet { ObjectType = 50, ParameterName = "SYNCHRONIZED", ParameterValue = 1 });
executionParameters.Add(new PackageInfo.ExecutionValueParameterSet { ObjectType = 50, ParameterName = "LOGGING_LEVEL", ParameterValue = 3 });
// Run the package
long executionID = package.Execute(false, null, executionParameters);
}
如果源 csv 文件本地存储在 SQL Server 上,这可以正常工作。但是,如果源 csv 文件位于网络位置,我会收到“无法打开数据文件”错误(可能是因为集成服务执行包的用户没有网络位置的权限)。
是否可以使用上面的 .NET 代码执行 SSIS 包,指定具有访问网络位置所需权限的特定 Windows 用户?
(我知道我可以设置一个 SQL 代理作业并使用一个代理帐户,但我想沿着 .NET 路线走,因为我正在将现有项目从 SQL Server 2008 升级到 2016)。
解决方案
推荐阅读
- scala - Spark - GSSException:未提供有效凭据(机制级别:找不到任何 Kerberos tgt)
- python - 在行中显示数组,而不是在 jupyter 笔记本的列中
- javascript - js在chrome浏览器上的数字解析行为
- next.js - 部署后未在根目录中找到静态文件(nextjs)
- javascript - 不应该渲染的 React Native Navigator 屏幕
- python - 卡着了。请看下面的正文
- c - 在 C 语言中,我们使用 \n 表示下一行。有什么办法可以转到上一行吗?
- node.js - 在 Express NodeJS 中测试 REST API
- c++ - 基于proto文件调用setter和getter方法
- firebase - 了解 Firestore 查询