【问题标题】:Issue when running SQL Server 2005 SSIS Package on Remote Server在远程服务器上运行 SQL Server 2005 SSIS 包时出现问题
【发布时间】:2026-01-29 09:05:01
【问题描述】:

我在我的开发机器上创建了一个 SSIS 包,它很简单: 1) 从数据库中的弱表中删除记录。 2) 将文件从文件系统加载到数据库中的弱表中。 3)从asp.net页面调用包

当我在我的机器上手动运行包时,它可以工作,当保护级别为 EncryptSensitiveWithUserKey 时。当我部署时,我将保护级别更改为“DontSaveSensitive”。

当我运行 Web 应用程序时,我收到此错误 - “发生 OLE DB 错误。错误代码:0x80040E4D。OLE DB 记录可用。来源:“Microsoft SQL Native Client”。

不幸的是,我没有太多权限访问远程服务器上的 SQL Server 2005 实例来手动运行它。

当我部署包时,我包含一个 xml 配置文件并在 connectionstring 属性中包含密码。

我也打开了日志记录,但看不到任何写入事件日志或 SQL Server 的内容。 有人可以请我参考 SSIS 写入的日志表吗?我已经检查了 MSDB。是 sysdtslog90 吗?

谁能给我一些指示,我可以用什么来解决这个问题。

问候

【问题讨论】:

  • 你是怎么调用这个包的?
  • 它是从一个 asp.net 网页调用的。我有机会在远程数据库服务器上手动调用包,因为我必须申请访问该框才能让 dba 运行它。

标签: .net asp.net sql-server sql-server-2005 ssis


【解决方案1】:

您是否检查了调用 SSIS 包的用户帐户的权限,以确保他们对所涉及的所有表/资源拥有足够的权限?

ASP.Net 工作进程通常设置为在网络服务帐户下运行,甚至是页面上的用户(如果启用了模拟),并且他们没有适当的权限来访问指定的表。

【讨论】:

  • 我知道数据库帐户对应用程序的数据库和 msdb 数据库具有 sysadmin 访问权限,它也已添加到 dt_dtsadmin、dt_dtsltdser 和 dt_dtsoperator、public 和 db_datareader。我正在使用模拟来浏览网站,并且模拟的用户和网络服务可以访问应用程序的数据库和 msdb 数据库。
【解决方案2】:

用于记录的表名为 sysdtslog90。它将位于与您在日志记录中指定的连接的数据库匹配的数据库中。此外,您必须选择 Sql Server 日志记录提供程序才能使用该表。跟踪并查看此表后,您应该能够看到应用程序失败时发送的消息。

【讨论】:

  • 感谢您澄清这一点。该表是空的,我选择了 sql server 日志记录提供程序。你知道为什么不传递数据库密码,即使包上的保护级别是“DontSaveSensitive”。