遠端存儲過程的執行結果插入到本地臨時表速度很慢

paoluo 2011-02-14 12:03:35
eg:

Select * Into #Test From Test Where 1<>1
Insert Into #Test Exec zfsql.dbo.ExportTest
Select * From #Test
Drop Table #Test

這段代碼 ,執行第二句,半個小時出不了結果

但是單單執行 Exec zfsql.dbo.ExportTest 只要1秒鐘

將第2句改為

Insert Into #Test Select * From zfsql.Test.dbo.Test

也只要1秒鐘

問題出在哪?
...全文
284 点赞 收藏 29
写回复
29 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
paoluo 2011-02-15
搞定了,的確是配置的問題,在網上搜到答案的,多謝大家了。
回复
Xiao_Ai_Mei 2011-02-15
[Quote=引用 28 楼 paoluo 的回复:]
搞定了,的確是配置的問題,在網上搜到答案的,多謝大家了。
[/Quote]把搜到的链接公布下啊,哈哈学习
回复
paoluo 2011-02-14
[Quote=引用 13 楼 happyflystone 的回复:]
2000? 2005?
如果2005是不是启用了mars
[/Quote]

SQL 2000
回复
gw6328 2011-02-14
楼主不防试试,create table #test..
insert into #test exec xxx
回复
-狙击手- 2011-02-14
2000? 2005?
如果2005是不是启用了mars
回复
paoluo 2011-02-14

不好意思,忘了說了

昨天之前,上面的語句都是OK的

zfsql ,這台服務器,昨天換了一台機器,才出現此問題的

所以應該是機器設置的問題
回复
paoluo 2011-02-14
[Quote=引用 10 楼 sql77 的回复:]
创建存储过程时在其定义中指定 WITH RECOMPILE 选项

把存储过程加上这个选项试试看,不过才一条数据感觉也不可能出现这种情况
[/Quote]

感覺不是表的問題,我換了個表,一條數據也沒有,也同樣是這樣的問題。
回复
SQL77 2011-02-14
创建存储过程时在其定义中指定 WITH RECOMPILE 选项

把存储过程加上这个选项试试看,不过才一条数据感觉也不可能出现这种情况
回复
paoluo 2011-02-14
[Quote=引用 4 楼 roy_88 的回复:]
第1個dbo是多餘的,已幫樓主改了.
[/Quote]

:)
回复
paoluo 2011-02-14
[Quote=引用 3 楼 xiao_ai_mei 的回复:]
今天这么多人问这个问题啊,
[/Quote]

哈,謝了
回复
Zoezs 2011-02-14
[Quote=引用 4 楼 roy_88 的回复:]
第1個dbo是多餘的,已幫樓主改了.
[/Quote]
顶大版,我还米看出来问题。
回复
paoluo 2011-02-14
建表語句就是

Select * Into #Test From Test Where 1<>1

直接復制原表的結構
回复
paoluo 2011-02-14
[Quote=引用 1 楼 sql77 的回复:]
Insert Into #Test Exec zfsql.dbo.ExportTestSelect * From #Test
Drop Table #Test

這段代碼 ,執行第二句,半個小時出不了結果

但是單單執行 Exec zfsql.dbo.ExportTest 只要1秒鐘

將第2句改為

Insert Into #Test Select * From zfsql.d……
[/Quote]

建表語句就是

Select * Into #Test From Test Where 1<>1

直接 復制遠表的結構
回复
中国风 2011-02-14
第1個dbo是多餘的,已幫樓主改了.
回复
Xiao_Ai_Mei 2011-02-14
今天这么多人问这个问题啊,
回复
快溜 2011-02-14

EXEC OPENDATASOURCE(..)
--可慢?
回复
SQL77 2011-02-14
Insert Into #Test Exec zfsql.dbo.ExportTestSelect * From #Test
Drop Table #Test

這段代碼 ,執行第二句,半個小時出不了結果

但是單單執行 Exec zfsql.dbo.ExportTest 只要1秒鐘

將第2句改為

Insert Into #Test Select * From zfsql.dbo.Test.dbo.Test

这里貌似不一样,嘿嘿,#TEST建表语句是什么?
回复
xeqtrl982 2011-02-14
来看鱼老大的
曾经是我的偶像
CSDN改版后就一去不复返了
回复
coleling 2011-02-14
[Quote=引用 24 楼 sql77 的回复:]
没道理,EXEC 一秒,插入一下临时表才一条数据半小时出不了结果
[/Quote]

事实上,这两者差别挺大的。区别在于后者(Insert Into #Test Exec zfsql.dbo.ExportTest)需要启动分布式事务,而单独的exec不需要。

回复
-狙击手- 2011-02-14
记得sp4有修复远程调用导致sql server无响应的死循环,补丁没打?
回复
加载更多回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2011-02-14 12:03
社区公告
暂无公告