【问题标题】:SSIS Package What credential SSIS is running?SSIS 包 SSIS 正在运行什么凭据?
【发布时间】:2015-10-21 23:35:43
【问题描述】:

我有访问 excel 文件 .xls 的包。该文件位于网络路径上。
打包从商店调用,通过 use32bitruntime = true。商店是从 C# 代码调用的。
如果文件是本地文件 => 包运行成功。
如果文件是网络路径 => 包运行失败。

检查网络路径:
我可以访问网络路径甚至手动打开文件成功。

所以我的问题是实际运行的凭据 SSIS 包是什么?
如果它在我登录 SQL 并调用商店的帐户下运行,它应该可以访问该文件。但事实并非如此。事实证明,另一个证书取代了我自己的证书。
找了好久也没找到答案。

非常感谢您对此的任何帮助。

这是一个执行 SSIS 的存储

ALTER PROCEDURE [dbo].[execute_ssis_package]
 @folder_name varchar(100) 
 ,@project_name varchar(100)
 ,@package_name varchar(300)
 --,@RunAccount varchar(300) OUTPUT
 ,@output_execution_id BIGINT OUTPUT
AS
BEGIN

    SET NOCOUNT ON;

 DECLARE @execution_id BIGINT
 EXEC ssisdb.catalog.create_execution @folder_name,
           @project_name,
           @package_name,
           @use32bitruntime = True,
           @reference_id = Null,
           @execution_id = @execution_id OUTPUT

 Select @execution_id

 DECLARE @var0 smallint = 1
 EXEC [SSISDB].[catalog].[set_execution_parameter_value] 
      @execution_id,  
      @object_type=50, 
      @parameter_name=N'LOGGING_LEVEL', 
      @parameter_value=@var0

 EXEC ssisdb.catalog.start_execution @execution_id
 SET  @output_execution_id = @execution_id

【问题讨论】:

    标签: sql sql-server ssis ssis-2012


    【解决方案1】:

    运行 SSIS 包的凭据:

    如果从 SQL 代理运行,它将以代理用户身份运行 Windows 服务。

    如果通过代理凭据从 SQL 代理运行,它将在该凭据下运行。

    如果通过 dtexec 从 Windows 调度程序运行,它将在调度程序中定义的用户下运行。

    在您的情况下,您使用的是存储过程,谁调用它?

    【讨论】:

    • 你的意思是ASP.NET项目的连接字符串中的用户是调用它的那个?
    • 是的,如果您在连接字符串中指定了特定的 SQL 用户。如果您使用的是 SSPI,那么运行 ASP.NET 的用户就是运行 IIS 中的 AppPool 的用户。
    • 非常感谢,现在我对 SSIS 包凭据传递有了更多了解。
    猜你喜欢
    • 2023-03-22
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多