【问题标题】:help me SELECT-ing from chained stored procedures帮我从链式存储过程中选择
【发布时间】:2010-10-22 07:36:57
【问题描述】:

我在 SQL Server 2008 R2 中将本地服务器 pblack 添加为链接服务器

---1)
EXEC master.dbo.sp_addlinkedserver @server = N'pblack', 
                         --'pblack' is my localhost
    @srvproduct=N'SQL Server'

并成功执行2)和3):

--2)
sp_MSforeachtable @command1="EXEC sp_spaceused '?'"

--3)
SELECT * INTO #temp
FROM OPENQUERY(pblack,'exec sp_who') 
SELECT * FROM #temp

4)
如何将 2) 插入 3) 而不是“exec sp_who”。我无法正确引用表达式...

为什么我不能在 SQL Server 2008R2 中链接本地或本地主机?

更新:
目的是进一步修改SELECT,例如输出max(data)——找到最大size的表

更新2:

SELECT * INTO #temp 
FROM OPENQUERY
( 
     pblack, 
     'EXEC sp_MSforeachtable @command1= '' EXEC sp_spaceused ''''?'''' '' '
)

给出错误:

Msg 208, Level 16, State 1, Procedure sp_MSforeach_worker, Line 102
Invalid object name '#qtemp'.

我尝试连接字符串 + 使用 temp varchar 变量接收相同的错误。

我怀疑问题更深,因为“选择”似乎不是来自一个行集,而是来自多个行集?

好吧,我可以沉迷于研究代码,但我希望能找到一些(神奇的)解决方法。

【问题讨论】:

    标签: sql sql-server stored-procedures dynamic-sql linked-server


    【解决方案1】:

    只需将每个嵌套级别的引号加倍,并始终使用单引号。

    想想就是这样:

    SELECT * INTO #temp
    FROM OPENQUERY(
         pblack,
         'EXEC sp_MSforeachtable @command1= '' EXEC sp_spaceused ''''?'''' '' ') 
    

    【讨论】:

      猜你喜欢
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 2016-10-05
      • 2010-12-10
      • 2011-05-26
      相关资源
      最近更新 更多