我已經建立了一個鏈接的服務器來讀取一組位於本地的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