помогите мне выбрать из цепочки хранимых процедур - PullRequest
1 голос

Я добавил свой локальный сервер 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 (данные) - найти таблицу с максимальным размером

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

Я попытался объединить строки +, используя переменные temp varchar, получив ту же ошибку.

Я подозреваю, что проблема глубже, так как "select" кажется не из одного набора строк, а из нескольких?

Ну, я могу утонуть в изучении кода, но я ожидаю найти некоторый (волшебный) обходной путь.

1 Ответ

1 голос
/ 22 октября 2010

Просто удвойте кавычки для каждого уровня гнезда и всегда используйте одинарные кавычки.

Подумайте, вот что:

SELECT * INTO #temp
FROM OPENQUERY(
     pblack,
     'EXEC sp_MSforeachtable @command1= '' EXEC sp_spaceused ''''?'''' '' ') 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...