2010-08-02 58 views
4

我正在使用AD Hoc分佈查詢將數據從MS SQLServer 2008傳輸到MS Access。允許所有用戶的點對點分配查詢

INSERT INTO OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\temp\target.mdb;User ID=Admin;Password=;')...testtable select * from dbo.testtable 

要做到這一點,我設置了臨時發佈查詢參數1通過

sp_configure 'Ad Hoc Distributed Queries', 1 

一切都很好,只要執行該語句的工作原理: 的進程正在使用一個SQL語句開始具有系統管理員數據庫權限。

當我嘗試將語句作爲正常的db用戶執行時,語句失敗並顯示權限被拒絕的錯誤消息。

我該如何授予所有用戶執行臨時分發語句?

預先感謝

馬庫斯

+0

你是否玩過這裏討論的註冊表設置? http://www.eggheadcafe.com/software/aspnet/29256297/nonsa-users-get-access-denied-in-ole-db-query.aspx – 2010-08-02 15:45:05

+0

不幸的是它不起作用:( 仍然是一樣的行爲。 – marcus 2010-08-25 23:57:23

回答

2

EggHeadCafe兩者;似乎普遍認爲這是一個名爲DisallowAdHocAccess的註冊表鍵;在沒有sa角色的用戶可以執行臨時分佈式查詢之前,它需要存在值0

Server\MSSQL.1\Providers\Microsoft.Jet.OLEDB.4.0鍵,添加具有價值0命名DisallowAdHocAccess一個DWORD 值。

允許Jet提供點對點訪問,通過使用註冊表 (使用Management Studio將無法正常工作,因爲它會刪除註冊表 鍵而不是將其設置爲零的,並且缺少的註冊表項 解釋爲「不允許臨時訪問」)。

如果您之前得到了錯誤,重新嘗試確保 重新啓動服務器或運行DBCC FREEPROCCACHE命令,因爲它似乎 ,如果您運行相同的查詢 兩次SQL Server將不會再次檢查鍵之前。

如果有人有辦法不涉及編輯註冊表,但很高興聽到它。

如果這仍然不起作用,您是否嘗試設置鏈接服務器? MSDNAccess Specific Linked Server Tutorial

+0

我使用了相同的解決方案,但將「Microsoft.ACE.OLEDB.12.0」作爲提供程序密鑰。 – 2016-04-25 18:02:53

相關問題