SQL ServeR语言 SSISDB ASP.NET "Login failed for user 'DOMAINPCNAME$'"



我在ASP中使用Microsoft.SqlServer.Management.IntegrationServices。. NET web表单访问SSISDB中的SSIS项目。在我自己的PC上进行本地测试,我能够从测试服务器访问软件包,并且运行良好。

当我尝试从测试服务器运行站点时,我的问题出现了。同一测试服务器托管IIS 7站点,并托管使用Integration Services存储包的Sql server数据库。所以就像我说的,这个包是托管在服务器上的,当我在我的PC上本地运行这个网站时,一切都很好。

当我在测试中运行站点并尝试访问包时,我得到:System.Data.SqlClient.SqlException (0x80131904):用户'[DOMAIN][PCNAME]$'登录失败。

我在我的连接字符串中使用集成安全:

SqlConnection connection = new SqlConnection(@"Data Source=[Test_Server];Initial Catalog=master;Integrated Security=True;");
IntegrationServices integrationServices = new IntegrationServices(connection);

尝试连接时出现错误。

我已经尝试添加'[DOMAIN][PCNAME]$'作为Sql登录使用Windows认证与我能想到的每一个权限。数据库SSISDB的用户映射有accessadmin、datareader、datwriter、owner、public和ssis admin。我知道并非所有这些都是必要的,但我正在尝试每一种方法。

我进入数据库下的SSISDB,并赋予登录权限连接,执行,和选择。

在集成服务目录下,我给了我的文件夹,在SSISDB目录下,我的Windows用户('[DOMAIN][PCNAME]$')登录读取,执行对象和读取对象的权限。

我给了ssisdatattransfer项目权限,允许Windows用户读取、修改和执行。

我没主意了,我想可能是IIS的问题。它已经安装并设置了Windows身份验证。

有人有什么想法吗?我找到了关于如何让代码工作的帖子,但没有关于连接细节的帖子。谢谢!

我最近也遇到过类似的问题,我也使用过与web应用程序一起使用的SSIS包。在我看来,你应该使用自定义用户帐户作为你的应用程序池帐户。您必须将此帐户添加到数据库服务器。当运行应用程序池作为本地系统或网络服务时,用于连接到远程数据库服务器的帐户将是"DomainNameMachineName$",这对于试图连接到sql服务器的每台机器都是不同的。因此,与其在sql中添加所有这些用户名,不如使用自定义用户帐户。

其次,看起来你的web应用程序不运行在同一台机器上作为你的sql服务器,我认为不会工作,因为你可以调用SSIS包从同一台服务器。

另一个尝试是在sql server管理工作室的Security - Credentials中添加一个凭据。此凭据将是您成功运行它的经过身份验证的用户。然后在您的SSIS包中,在SQL Server代理中,进入作业步骤并在"Run As"下拉框中,为您创建的用户选择新凭据。

最新更新