高手进!OPENDATASOURCE 和 OPENROWSET的区别

vovo2000 2006-09-26 02:28:49
在查询分析器中,执行下面的三条访问远程数据库中的数据,
1和2使用OPENDATASOURCE,执行不成功,一个用ip,一个用数据库名,出错信息不一样。
3用OPENROWSET 却能成功执行。

请问为什么?使用OPENDATASOURCE 和 OPENROWSET 有什么区别?


-- 1------------------------
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB'
,'Data Source=XXX.XXX.XXX.XXX;User ID=sa; Password=sa).dbname.dbo.a

-- 出错信息
server : message 7399、level 16、status 1、行 1
OLE DB Provider 'SQLOLEDB' Reports the errors。
[OLE/DB provider returned message: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在、拒绝访问。]
OLE DB Error Trace [OLE/DB Provider 'SQLOLEDB' IDBInitialize::Initialize returned 0x80004005: ]。

-- 2 ------------------------
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB'
,'Data Source=ServerName;User ID=sa; Password=sa).dbname.dbo.a

-- 出错信息
server : message 7311、level 16、状態 2、行 1
未能获得 OLE DB 提供程序 ''%1!'' 的架构行集。该提供程序支持该接口,但使用该接口时返回了失败代码。
OLE DB Error Trace [OLE/DB Provider 'SQLOLEDB' IDBSchemaRowset::GetRowset returned 0x80040154: ]。

-- 3 ------------------------------------
SELECT *
FROM OPENROWSET(
'SQLOLEDB',
'ServerName';
'sa';
'sa',
'select * from dbname.dbo.a')





...全文
482 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aruku 2006-12-06
  • 打赏
  • 举报
回复
我这样做还是出现问题,
select *
from opendatasource('sqloledb',
'DataSource=xxx.xxx.xxx.xx;User ID=sa;Password=sa').dbName.dbo.tableName
总是出现“用户sa登录失败”,可是我的密码没有错的呀。请各位高手指教。
allright_flash 2006-09-27
  • 打赏
  • 举报
回复
跟权限没关系,连接字符串的问题!
vovo2000 2006-09-27
  • 打赏
  • 举报
回复
风云再现,呼唤高手。
jetdw 2006-09-26
  • 打赏
  • 举报
回复
不懂
还是顶一下
vovo2000 2006-09-26
  • 打赏
  • 举报
回复
我不是想知道用法,我的用法是对的。
我想知道为什么会产生这样的错误,是数据库的设置导致?权限问题?还是...
but Thank you all the same。谢谢参与
Well 2006-09-26
  • 打赏
  • 举报
回复
http://blog.csdn.net/Hopewell_Go
Well 2006-09-26
  • 打赏
  • 举报
回复
这两个的用法,我的blog里有。可以看,
vovo2000 2006-09-26
  • 打赏
  • 举报
回复
;_;
真细心 ^^;

那加了单引号后呢,问题同样。
min_1982 2006-09-26
  • 打赏
  • 举报
回复
ding
郭大侠_ 2006-09-26
  • 打赏
  • 举报
回复
-- 1------------------------
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB'
,'Data Source=XXX.XXX.XXX.XXX;User ID=sa; Password=sa).dbname.dbo.a

少了一个单引号,应为
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB'
,'Data Source=XXX.XXX.XXX.XXX;User ID=sa; Password=sa').dbname.dbo.a

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧