我正在使用 AD Hoc 分布式查询将数据从 MS SQL Server 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 数据库权限执行该语句,一切都会正常工作。
当我尝试以普通数据库用户身份执行该语句时,该语句失败并显示权限被拒绝的错误消息。
如何授予所有用户执行临时分发语句?
提前致谢
Marcus
取自蛋头咖啡馆 http://www.eggheadcafe.com/software/aspnet/28910398/opendatasource-authority-on-sql-server-2005.aspx;似乎大家一致认为这是一个名为DisallowAdHocAccess
;它需要与价值一起存在0
在没有用户之前sa
角色可以执行即席分布式查询。
In the Server\MSSQL.1\Providers\Microsoft.Jet.OLEDB.4.0
键,添加一个DWORD
命名的值DisallowAdHocAccess
与价值0
.
通过使用注册表允许对 Jet 提供程序进行临时访问
(使用 Management Studio 不起作用,因为它会删除注册表
键而不是将其设置为零,并且缺少注册表项
解释为“不允许临时访问”)。
如果您之前遇到过错误,请在重试之前确保
您重新启动服务器或运行DBCC FREEPROCCACHE
命令,因为看起来
如果您运行相同的查询,SQL Server 将不会再次检查密钥
两次。
如果有人有一种不涉及编辑注册表的方法,那么很高兴听到它。
如果这仍然不起作用,您是否尝试过设置链接服务器?MSDN http://msdn.microsoft.com/en-us/library/aa213778%28v=sql.80%29.aspx, 访问特定链接服务器教程 http://www.aspfree.com/c/a/Microsoft-Access/Configuring-a-Linked-Microsoft-Access-Server-on-SQL-2005-Server/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)