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

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秒鐘

問題出在哪?
...全文
371 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
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无响应的死循环,补丁没打?
加载更多回复(9)

22,300

社区成员

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

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