计划
让人力资源人员将一份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='########'