2010-01-14 64 views
1

我正在研究遠程服務器(LAN)上查詢SQL Server 2008 Express實例的C#應用​​程序。無法查詢SQL鏈接服務器 - >遠程訪問MS Access,只能在服務器上工作

當我在我的工作站/開發機器上時,我可以打開SQL Server Management Studio並通過Windows身份驗證連接到SQL實例,對於所有意圖和目的,體驗與在服務器上「在服務器上」 。據我所知,我可以在我的工作站上做任何我能在服務器上做的事情。

同一臺服務器承載Access 2003 .mdb文件,該文件在SQL實例中設置爲鏈接服務器。

有問題的查詢返回通過連接來自SQL數據庫和Access數據庫的表編譯的結果集。

當我在服務器上執行查詢時,也就是說我在服務器計算機上運行SQL Server Management Studio時,所有操作都按預期運行。但是,當我嘗試從我的開發機器運行相同的查詢時,無論是在SSMS中還是嘗試運行集成測試或調試應用程序時,我都無法對鏈接的服務器執行任何操作。我可以看到它在SSMS,但任何試圖在執行什麼結果:

無法初始化OLE DB提供程序「Microsoft.Jet.OLEDB.4.0」的鏈接服務器「<DatabaseName>」的數據源對象。

我已經瀏覽了許多與此錯誤有關的線程,並嘗試了很多提供程序設置的排列,但都無濟於事。

  • Access數據庫沒有密碼(我試過設置使用名爲「admin」 W/O密碼的安全性)
  • 工作站用戶帳戶具有這樣Access數據庫位於服務器目錄的完全權限
  • 相同的行爲經歷了服務器的Win XP專業版SP3和現在與Win Server 2003的
  • 相同的行爲經歷了客戶端爲贏XP專業版SP3和現在與Win 7 Pro的X32

對T的偉大工程他服務器,從不遠程。

非常感謝。

+0

您是否嘗試過使用SQL Server身份驗證而不是NT身份驗證? – Burnsys 2010-01-14 18:41:25

+0

太棒了!我真的很想知道爲什麼這種方式有效,集成安全性不行,但將您的評論發佈爲答案,我會將其標記出來。 – Jay 2010-01-14 20:02:03

+0

可能想看看這個鏈接它提供了原因:http://dba.stackexchange.com/questions/7111/local-login-impersonation-not-working-with-a-linked-server – 2013-03-12 22:34:27

回答

1

正如Burnsys所建議的那樣,使用SQL Server身份驗證而不是NT身份驗證似乎可以做到這一點。 爲什麼的問題似乎是一個懸而未決的問題。

+0

也許適當的權限有沒有爲NT用戶組定義。我不確定SQL Server角色與鏈接服務器的相互作用是什麼,但這正是我開始尋找的地方。 – 2010-02-02 23:51:16