关于在存储过程中读取另一台服务器下的数据库的数据的问题??急!!!

汤臣一丁 2003-12-27 12:13:02
请问这个SQL语句应该怎么样写呀,急!!!

我已经本地数据库中建立了另一台服务器的连接,但是不知道怎样用SQL语句调用。请高手指教,谢谢!
...全文
93 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
汤臣一丁 2003-12-30
  • 打赏
  • 举报
回复
谢谢大家,我的问题已经成功解决了,原来是Sql2000与Sql 7的兼容问题。

非常感谢大家的帮助。再次感谢。
汤臣一丁 2003-12-30
  • 打赏
  • 举报
回复
我在服务器上设置了一下,加上DBO.,在点击Check Syntex是成功的,但是在点击"Apply"按钮以后,还是不能通过,弹出一个错误窗口,上有以下一句话:

"Error 7405: Heterogeneous queris require the ANSI_NULLS and ANSI_WARNINGS options to set for the connection. This ensures consistent query semantics.Enable these options and then reissue your query."

天啦,到底是什么意思呀,需要怎样设置呀。谢谢,谢谢。。。
汤臣一丁 2003-12-29
  • 打赏
  • 举报
回复
非常感谢您。
wzh1215 2003-12-29
  • 打赏
  • 举报
回复
但是我要对另一台服务器上的数据库进行插入操作,如何写SQL语句呢?

比如说,我在server1上建立一个存储过程,要对server2上的SMS数据库进行插入操作。
建立链接完全正常,但是在SQL语句中加入了DBO.
(如: insert into server1.sms.dbo.outsms(....) values(...)),
就无法通过,去掉sms后面的DBO,就可以通过。
---
那是因为你在服务器上的权限所致!
表明你没有对服务dbo用户的修改权限,
insert into server1.sms.(要跟登录用户名).outsms(....) values(...)),
jingxijun 2003-12-29
  • 打赏
  • 举报
回复
比如说,我在server1上建立一个存储过程,要对server2上的SMS数据库进行插入操作。
建立链接完全正常,但是在SQL语句中加入了DBO.
(如: insert into server1.sms.dbo.outsms(....) values(...)),
就无法通过,去掉sms后面的DBO,就可以通过。

---------
那就去掉dbo, 作用一样的。
汤臣一丁 2003-12-29
  • 打赏
  • 举报
回复
但是我要对另一台服务器上的数据库进行插入操作,如何写SQL语句呢?

比如说,我在server1上建立一个存储过程,要对server2上的SMS数据库进行插入操作。
建立链接完全正常,但是在SQL语句中加入了DBO.
(如: insert into server1.sms.dbo.outsms(....) values(...)),
就无法通过,去掉sms后面的DBO,就可以通过。

这句话在查询分析器里是完全正常的。请问该怎么办??万分感谢。。。
aierong 2003-12-29
  • 打赏
  • 举报
回复


SELECT *
FROM OPENQUERY(linkname, 'SELECT * FROM tablename')
汤臣一丁 2003-12-29
  • 打赏
  • 举报
回复
我在存储过程里的SQL语句中表名前加了DBO.,存储过程报错,去掉就没事,但是在查询分析器里执行存储过程,没有DBO就报错,请问这个该如何解决??? 谢谢。
jingxijun 2003-12-29
  • 打赏
  • 举报
回复
select * into 本地库名..表名 from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名

insert 本地库名..表名 select * from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名


使用联结服务器:
添加远程服务器
EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
添加远程登录用户
exec sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'
GO
然后你就可以如下:
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go
gmlxf 2003-12-27
  • 打赏
  • 举报
回复
建立好以后你直接可以使用
别名.库名.dbo.对象名
来获得数据或者操作。

如以下的语句:

select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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