我在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) - 查找具有最大大小的表
更新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变量来结束字符串+收到相同的错误。
我怀疑问题更深,因为“select”似乎不是来自一个行集而是多个行集?
好吧,我可以淹没在研究代码但我期望找到一些(魔术)解决方法。
答案 0 :(得分:1)
只需将每个嵌套级别的引号加倍,并且也始终使用单引号。
想想就是这样:
SELECT * INTO #temp
FROM OPENQUERY(
pblack,
'EXEC sp_MSforeachtable @command1= '' EXEC sp_spaceused ''''?'''' '' ')