我正在使用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参数设置为1sp_configure 'Ad Hoc Distributed Queries', 1
只要使用sysadmin database-permission执行语句,一切正常。
当我尝试以普通的db-user身份执行语句时,语句失败并显示权限被拒绝错误消息。
如何授予所有用户执行临时分发声明的权力?
提前致谢
马库斯
答案 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将不会再次检查密钥
两次。
如果有人的方法不涉及编辑注册表,那么听听它会很好。
如果仍然无效,您是否尝试过设置链接服务器? MSDN,Access Specific Linked Server Tutorial