我已经建立了一个链接的服务器来读取一组位于本地的SQL Server计算机上的CSV文件以外的任何登录访问CSV文件,内容如下:无法使用链接服务器使用的不是“山”
USE master
go
IF EXISTS (SELECT * FROM sys.servers WHERE name = 'MyLink')
EXEC sp_dropserver 'MyLink', 'droplogins';
EXEC sp_AddLinkedServer @server = 'MyLink',
@srvproduct = '',
@provider = 'Microsoft.ACE.OLEDB.12.0',
@datasrc = 'C:\Data\Feeds',
@provstr = 'Text'
EXEC sp_AddLinkedSrvLogin MyLink, FALSE
go
然后
下面的代码工作完美,只要我登录的“山”(要么语法工程):
SELECT * FROM MyLink...myFile#csv
SELECT * FROM OPENQUERY(MyLink,'select * from myFile.csv')
如果我登录的任何其他用户,但是,我得到以下错误:
Msg 7416, Level 16, State 2, Line 1
Access to the remote server is denied because no login-mapping exists.
尝试通过脚本或通过修改SSMS中的链接服务器属性来添加映射来更改远程登录,不仅不起作用,而且还打破了'sa'运行选择语句的能力。
顺便说一句,我正在尝试解决SSIS中的known bug,它无法在双引号分隔的字段中使用逗号来处理CSV。我偶然发现了this post,它描述了使用链接服务器来解决问题而无需编写自定义分析例程。工作很好,除了整个安全的事情;我不希望我的应用程序连接为'sa'。我正在使用SQL 2005 SP3。
任何想法使这个工作与一个普通的登录?
TIA, 吉姆
@JustinStolle当我将它作为你的描述,我得到了非sa用户不同的错误(SA似乎仍然工作):
OLE DB提供程序“ Microsoft.ACE.OLEDB.12.0“链接服务器”MyLink“返回消息”无法启动您的应用程序,工作组信息文件丢失或仅由其他用户打开“。 Msg 7399,Level 16,State 1,Line 1 链接服务器“MyLink”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”报告了错误。验证失败。 消息7303,级别16,状态1,行1 无法初始化链接服务器“MyLink”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。
我无法导入文件; SSIS无法处理它。
映射:远程用户:admin;远程密码:无/空白;它也适用于Windows Server 2008 R2 64位+ MS SQL Server 2008 R2 64位;与“Microsoft Office 12.0 Access数据库引擎OLE DB提供程序”/“Microsoft.ACE.OLEDB.12.0”提供Excel xls,dbf(dBASE)文件时访问网络共享/网络目录上的xls,dbf。 “SQL服务器窗口服务”的“windows用户帐户”用于使用“网络共享”权限/用户权限。 – vlakov 2014-09-23 02:12:06