exec sp_addlinkedserver创建的服务器连接生存周期是多久?不删除是否一直可以用?

julong88 2011-05-07 10:35:03
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '


我在存储过程中调用似乎不行

异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。

...全文
420 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2012-09-06
  • 打赏
  • 举报
回复
没听说超时的,最起码我的生产环境整整1年了。
liulang55 2012-09-06
  • 打赏
  • 举报
回复
楼主 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码
这里ITSV 是指的服务器吗
julong88 2011-05-07
  • 打赏
  • 举报
回复
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]

查询分析器里面好好的,存储过程就不行
AcHerat 元老 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 julong88 的回复:]
我在查询分析器里面创建连接,然后调用查询表数据很方便,关闭查询分析器再打开还可以用。

但存储过程中调用相同的语句就不行。。。
[/Quote]

你自己写个带参数的存储过程,传入 IP 或者其他条件值,在里面做链接,然后删除。
王向飞 2011-05-07
  • 打赏
  • 举报
回复
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON

把这些都写到存储过程里
julong88 2011-05-07
  • 打赏
  • 举报
回复
我在查询分析器里面创建连接,然后调用查询表数据很方便,关闭查询分析器再打开还可以用。

但存储过程中调用相同的语句就不行。。。
julong88 2011-05-07
  • 打赏
  • 举报
回复
嗯,这样也行,算是一种办法

最好是创建连接,以后不需要创建,每次都可以调用,除非显式删除连接
ly745455 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ssp2009 的回复:]
引用 1 楼 julong88 的回复:
如果连接用完就需要删除那还不如直接写在存储过程的语句里面,但这样太死板,万一服务器地址换了就麻烦了
可以动态执行,传参数

SQL code

declare @ip char='10.10.10.1'
exec( 'exec sp_addlinkedserver ''ITSV '', '' '', ''SQLOLEDB'','''+@ip+……
[/Quote]

把要连接的服务器地址放到一个表里,
每次连接就从表读数据。



julong88 2011-05-07
  • 打赏
  • 举报
回复
多谢楼上,这样的办法我也想到了,那还不如不创建链接,直接使用openrowset,opendatasource
快溜 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 julong88 的回复:]
如果连接用完就需要删除那还不如直接写在存储过程的语句里面,但这样太死板,万一服务器地址换了就麻烦了
[/Quote]可以动态执行,传参数

declare @ip char='10.10.10.1'
exec( 'exec sp_addlinkedserver ''ITSV '', '' '', ''SQLOLEDB'','''+@ip+ '''')
julong88 2011-05-07
  • 打赏
  • 举报
回复
我要在不止一个存储过程中连接远程服务器,不会是每次都创建连接吧?
1、这样做太累了
2、服务器地址更新就麻烦了
王向飞 2011-05-07
  • 打赏
  • 举报
回复
SET ANSI_NULLS OFF
SET ANSI_WARNINGS OFF
julong88 2011-05-07
  • 打赏
  • 举报
回复
如果连接用完就需要删除那还不如直接写在存储过程的语句里面,但这样太死板,万一服务器地址换了就麻烦了

34,593

社区成员

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

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