代码之家  ›  专栏  ›  技术社区  ›  Karl

使用SQL帐户时无法连接到链接服务器(Excel文件)

  •  0
  • Karl  · 技术社区  · 8 年前

    计划

    让人力资源人员将一份Excel文件的工资单职务转储到网络共享中,将该文件添加为SSMS中的链接服务器,并在我的ASP中使用这些职务。Net web表单。使用链接服务器而不是导入数据,以允许HR自行更新职务文件。

    问题

    只要我在SSMS中使用Windows身份验证,我就可以创建链接服务器并毫无问题地查询它。但是,如果我尝试使用SQL帐户访问链接服务器,首先会得到错误:

    对远程服务器的访问被拒绝,因为不存在登录映射(错误7416)

    正在使用的SQL帐户与我的web表单用于其他一切的帐户相同。这个SQL帐户没有文件权限这一事实并不奇怪,因此,对链接服务器的安全性进行调整应该可以解决问题。

    问题(第二部分)

    为了减少变量的数量,我移动了Excel文件,使其与SQL Server位于同一台计算机上。我用我的域管理员帐户登录到机器并登录到SSMS。

    我访问链接服务器的安全选项卡,为了尽可能地使用最广泛的网络,我将本地登录(顶部)留空,直接进入“Be made with this security context:”,然后继续提供我的域管理员凭据。我点击OK,得到以下结果:

    不是有效的帐户名或密码(错误7399)

    我知道帐户名和密码都很好,那怎么办?

    其他事项

    遇到过类似情况的人已被指示更改用于SQL Server服务的登录帐户,这是我使用域管理员帐户(用于故障排除,atm)完成的。这并没有解决问题。

    这就是链接服务器代码的样子,尽管我是通过GUI创建的(为了完整起见,包括在内):

    EXEC master.dbo.sp_addlinkedserver @server = N'ADP_TITLES', @srvproduct=N'', @provider=N'Microsoft.ACE.OLEDB.12.0', @datasrc=N'C:\JOB_TITLE_EXPORT.xlsx', @provstr=N'Excel 12.0 Xml'
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'ADP_TITLES',@useself=N'False',@locallogin=NULL,@rmtuser=N'DOMAIN\username',@rmtpassword='########'
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Karl    8 年前

    解决方案似乎是为远程登录输入“admin”,并将密码留空。

    但是,只有当文件存储在本地时,这才有效。如果它在网络上,我仍然会收到一个7399错误,但它不是说问题是帐户名/密码,而是说问题未指明。

    我可以用本地文件来完成我的项目。既然我会继续这样做,我就不需要征求更多的答案了。