祝大家新年快樂!
我定期從從 Web 應用程式下載的 CSV 檔案中匯入資料。我已經LS_Text使用 CSV 檔案為本地路徑創建了鏈接服務器。我INSERT INTO ... SELECT在存盤程序中使用查詢匯入檔案內容。只要我以SA. 但是,如果我使用 Windows 身份驗證登錄,則會收到錯誤訊息
無法為鏈接服務器“LS_Text”初始化 OLE DB 訪問介面“Microsoft.ACE.OLEDB.12.0”的資料源物件。
我計劃通過呼叫存盤程序的應用程式匯入檔案。因此,Windows 身份驗證必須起作用。
錯誤資訊是什么意思?如果檔案路徑不存在,則會產生相同的錯誤訊息。因此,SQL Server 或 OLEDB 提供程式似乎無法看到包含 CSV 檔案的檔案夾。但是我已經用我的憑證自己保存了檔案。
我使用以下批處理創建了鏈接服務器:
EXEC sp_addlinkedserver @server = N'LS_Text', @srvproduct=N'CSVFLATFILE',
@provider=N'Microsoft.ACE.OLEDB.12.0', @datasrc=N'C:\Trans', @provstr=N'Text;HDR=Yes';
EXEC sp_addlinkedsrvlogin @rmtsrvname = N'LS_Text', @useself = 'false',
@locallogin = NULL, @rmtuser = NULL, @rmtpassword = NULL;
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1;
據我了解,這@useself = 'false', @rmtuser = NULL, @rmtpassword = NULL意味著無需登錄名和密碼即可訪問鏈接服務器。我嘗試了各種其他組合,但都沒有成功。
在 Google 上找到的有關此錯誤訊息的文章涉及 OPENROWSET 而不是鏈接服務器。或者用ACE驅動配置。但這不是問題,因為它作為SA.
那么如何使用 Windows 身份驗證查詢 CSV 檔案呢?任何提示表示贊賞。
uj5u.com熱心網友回復:
也許這不是一個完整的答案,但希望它可以幫助您自己更好地除錯此類問題。正如您所提到的,它作為 sa 作業,因此可能的問題與用戶/登錄映射有關。檔案頁面sp_addlinedsrvlogin doc上有一個示例,描述了如何嘗試特定的 Windows 登錄。這可能值得嘗試您的憑據,看看它是否有效。其次,有多種方法可以深入了解服務器代碼路徑中發生的事情以加載和使用提供程式。可以在這里找到合理的博客文章這是關于與 Oracle 交談,但重要的內容是關于如何為鏈接服務器設定跟蹤事件,以及在您開始嘗試執行查詢后查看發生了什么。(鏈接服務器與 openrowset 到鏈接服務器應該無關緊要,但請注意,術語 openrowset 在 SQL 中被多載以允許不同的代碼路徑,包括一些不直接通過 OLE/DB 或不通過此特定 OLE/DB 的代碼路徑提供者,正如大衛在對您的問題的評論中提到的那樣)。因此,在錯誤之前跟蹤操作可能會指出在 Windows 登錄案例與 sa/admin 路徑中失敗的地方。最后,由于 Jet(現在是 ACE)提供程式基本上是一個 DLL,它被加載到 SQL Server 行程中,然后執行檔案系統操作以嘗試加載檔案,因此僅使用它可能很有價值procmon監視行程并查看是否有某些操作失敗(例如讀取注冊表項或在提供程式中打開檔案)。鑒于 sa 對您有用,這似乎不是最有可能的問題,但它可能是一個有用的工具。
您還詢問了錯誤訊息。我會試著解釋一下。(我撰寫了最初的 Jet OLE/DB 提供程式,后來在我更換團隊后更名為 ACE)。在 OLE/DB 中,有一些 COM 介面在概念上“存在”于 4 個主要內部類上。你可以在這里看到這個記錄在 OLE/DB 程式員指南中。資料源物件是最頂層的物件,對于不同的資料源,它意味著一些不同的東西。第二級概念是“會話”。在 Jet/ACE 中,這兩個概念并沒有真正不同,因為您只是有一個到檔案的連接,但是在 SQL Server 和其他服務器事物中,資料源物件是到服務器的連接,而會話是到該服務器的單獨連接服務器。您收到的錯誤是說與提供程式的初始連接/身份驗證失敗。這意味著 N 件事之一,但我首先要檢查“從 SQL 登錄名到 Jet/ACE 登錄名的映射作業不正常”。
net-net - 如果您可以通過正常路徑(openrowset(BULK CSV 格式)加載 CSV,從長遠來看,您的生活可能會像 David 建議的那樣更好。
無論您選擇哪種路徑,都祝您好運除錯您的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/403458.html
標籤:
