允许所有用户使用Ad Hoc Distribution Queries

时间:2010-08-02 15:40:09

标签: sql-server

我正在使用AD Hoc Distribution Queries将数据从MS SQLServer 2008传输到MS Access。 该过程使用单个SQL语句启动:

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

为此,我通过

将Ad Hoc Distribution Query参数设置为1
sp_configure 'Ad Hoc Distributed Queries', 1

只要使用sysadmin database-permission执行语句,一切正常。

当我尝试以普通的db-user身份执行语句时,语句失败并显示权限被拒绝错误消息。

如何授予所有用户执行临时分发声明的权力?

提前致谢

马库斯

1 个答案:

答案 0 :(得分:2)

取自EggHeadCafe;似乎普遍认为这是一个名为DisallowAdHocAccess的注册表项;在没有0角色的用户可以执行临时分布式查询之前,它需要以值sa存在。

Server\MSSQL.1\Providers\Microsoft.Jet.OLEDB.4.0键中添加DWORD 名为DisallowAdHocAccess的值为0

使用注册表允许对Jet提供程序进行临时访问 (使用Management Studio将无法使用,因为它会删除注册表 键而不是将其设置为零,并且缺少注册表项 解释为“不允许临时访问”。)

如果您之前收到错误,请在再次尝试之前确保错误 您重新启动服务器或运行DBCC FREEPROCCACHE命令,因为它似乎 如果您运行相同的查询,SQL Server将不会再次检查密钥 两次。

如果有人的方法不涉及编辑注册表,那么听听它会很好。

如果仍然无效,您是否尝试过设置链接服务器? MSDNAccess Specific Linked Server Tutorial