帮助我从链式存储过程中进行选择

发布于 2024-09-28 13:49:03 字数 1053 浏览 1 评论 0原文

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

---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) - 查找具有最大大小的表

Update2:

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'.

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

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

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

I added my local server pblack as linked server in SQL Server 2008 R2

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

and executed successfully 2) and 3):

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

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

4)
How can I insert 2) into 3) instead of 'exec sp_who'. I cannot manage to correctly quote expressions...

Why cannot I link local or localhost in SQL Server 2008R2?

Update:
The purpose is to further modify SELECT, for example, outputting max(data) - finding the table with maximum size

Update2:

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

gives error:

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

I tried concating the strings + using temp varchar variables recieving the same error.

I suspect that the problem is deeper since "select" seems like not not from one rowset but multiple ones?

Well, I can drown in studying the code but I expect to find some (magic) work-around.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

聊慰 2024-10-05 13:49:03

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

认为是这样的:

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

Just double up the quotes for each nest level, and always use single quotes too.

Think this is it:

SELECT * INTO #temp
FROM OPENQUERY(
     pblack,
     'EXEC sp_MSforeachtable @command1= '' EXEC sp_spaceused ''''?'''' '' ') 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文