在OLE DB 或 ODBC 之類數據訪問組件中用OPENROWSET 打開遠端數據集的方法

原创 2006年05月24日 10:55:00

在 SQL Server 的在線幫助手冊中有這麼一段示例:
A. Use OPENROWSET with a SELECT and the Microsoft OLE DB Provider for SQL Server

This example uses the Microsoft OLE DB Provider for SQL Server to access the authors table in the pubs database on a remote server named seattle1. The provider is initialized from the datasource, user_id, and password, and a SELECT is used to define the row set returned.

USE pubs
GO
SELECT a.*
FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',
   'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a
GO

這個示例如果直接修改後放在 SQL Server 的 Enterprise Manager 中運行的話不會出錯,
但是如果把這段代碼的訪問數據方式用在 Query Analyzer 或者 使用Ole DB/ODBC 之類的組件執行的話,
會出現"Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' has been denied.
You must access this provider through a linked server" 的錯誤提示,
也就是說,系統沒有打開OPENROWSET遠程訪問的許可,需要在目前 SQL Server 上建一個 "已連接Server",

添加的方法比較簡單,我的 SQL Server 是英文版,可以在 Enterprise Manager 中點開目前 SQL Server,
然對 Security -> Linked Servers 點右鍵,選 "新建...",參數可自行設定。

當然,這個方法隻能打開一個遠程數據服務連接,並且一直保持,如果要隨時可以打開任意遠程數據,
可以用更改 OLE DB 和 MSDASQL 的遠程Ad hoc訪問開關設定值的方式更改,也就是更改注冊表,注冊表文件如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Providers/SQLOLEDB]
"DisallowAdhocAccess"=dword:00000000

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Providers/MSDASQL]
"DisallowAdHocAccess"=dword:00000000


但是需要注意的是,這樣就是變相地打開 SQL Server 的對外訪問安全控制。

參考 URL:
http://www.microsoft.com/downloads/details.aspx?familyid=8f0a8df6-4a21-4b43
http://support.microsoft.com/default.aspx?scid=kb;en-us;327489
OPENROWSET  "Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' has been denied.
You must access this provider through a linked server"

關鍵字:



 

清空(數據庫中所有)表數據

1.delete 與 truncate delete 模式一般為 delete from table_name where {search_condition},可實現選擇性地刪除表中某些條記錄,當沒...
  • Benjayming
  • Benjayming
  • 2013年08月13日 21:52
  • 871

java系统学习(一) --------java语言中的数据与运算符

1.数制 1.1二进制 二进制特征: 有两个数字组成: 0  和 1 运算时逢二进一 例如:1100110011 、1000110001 ps:比较常见的机器语言一般用的二进制 1.2八进制 ...
  • q383965374
  • q383965374
  • 2015年07月15日 16:08
  • 984

【数据库摘要】2_SQL_Base_Examples

SELECT 语句 SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中,称为结果集。 SELECT 语法 SELECT column_name,column_name FR...
  • tanxiang21
  • tanxiang21
  • 2014年04月10日 13:52
  • 1039

Javascript的基本数据类型

JavaScript中有五种基本数据类型,它们分别是:undefined,null,boolean,number,string。还有一种复杂数据类型-object。 undefined类型只有...
  • zhuying6666
  • zhuying6666
  • 2017年01月28日 20:40
  • 147

在android中使用OrmLite数据库框架

android中的数据库框架OrmLite,是对android中自带数据库的封装。下面按步骤说明如何使用。 最重要的是继承OrmLiteSqliteOpenHelper,获取得到helper对象 ...
  • baidu_26994091
  • baidu_26994091
  • 2016年07月13日 00:48
  • 2322

C# 與 C++ 數據類型

WORD           ushort DWORD            uint UCHAR           int/byte   大部分情況都可以使用int代替,而如果需要嚴格對齊的話...
  • yuli1234147
  • yuli1234147
  • 2016年07月19日 23:55
  • 109

PHP自动发送邮件功能

PHP自动发送邮件功能
  • nycqwert
  • nycqwert
  • 2014年09月20日 17:14
  • 2155

.NET Core 1.1日期解析无APi、SQL Server数据转换JSON

前言 在批量导入Excel中的数据时发现出生日期为整数也就是为天数,结果倒腾了翻,这是其一,其二是数据库中的某一列存的是JSON数据,但是场景是为了作为作业来运行,此时不得不将筛选出的数据手动拼接成...
  • aabv54321
  • aabv54321
  • 2017年03月18日 10:39
  • 300

深度学习数据集(一)

深度学习 常用数据集
  • u010402786
  • u010402786
  • 2015年07月01日 09:45
  • 2025

数据挖掘进阶之关联规则挖掘FP-Growth算法

数据挖掘进阶之关联规则挖掘FP-Growth算法 绪 近期在写论文方面涉及到了数据挖掘,需要通过数据挖掘方法实现软件与用户间交互模式的获取、分析与分类研究。主要涉及到关联规则与序列模式挖掘两块。关联规...
  • sunhuaqiang1
  • sunhuaqiang1
  • 2015年11月16日 15:23
  • 48311
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在OLE DB 或 ODBC 之類數據訪問組件中用OPENROWSET 打開遠端數據集的方法
举报原因:
原因补充:

(最多只允许输入30个字)