Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 использование временных таблиц при openrowset  [new]
vovan21rus
Member

Откуда:
Сообщений: 61
Добрый день всем. Подскажите, пожалуйста, в чем дело. Создается временная таблица, а затем сразу же через openrowset идет вызов процедуры sp_spaceused, сиквел ругается, что моя временная таблица еще не создана, но если отдельно создавать таблицу и отдельно прогонять spaceused, то результаты отобразятся
5 фев 14, 16:02    [15523556]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Код где?
5 фев 14, 16:05    [15523580]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
vovan21rus
Member

Откуда:
Сообщений: 61
SELECT a1,a2,3,a4..

INTO

##MyTable2
FROM ##MyTable --уже создана
DECLARE @size INT = ( SELECT CAST(SUBSTRING(data, 0, LEN(data) - 2) AS INT) AS size
FROM OPENROWSET('SQLNCLI',
'Server=servername;Trusted_Connection=yes;',
'SET FMTONLY OFF exec tempdb.dbo.sp_spaceused ##MyTable2')
5 фев 14, 16:08    [15523607]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Ошибка вылетает в момент компиляции, когда ##MyTable еще не создана.

Так что или так:

SELECT a1,a2,3,a4..

INTO

##MyTable2
FROM ##MyTable --уже создана
go
DECLARE @size INT = ( SELECT CAST(SUBSTRING(data, 0, LEN(data) - 2) AS INT) AS size
FROM OPENROWSET('SQLNCLI',
'Server=servername;Trusted_Connection=yes;',
'SET FMTONLY OFF exec tempdb.dbo.sp_spaceused ##MyTable2')


Или заворачивать openrowset в динамику.

Сообщение было отредактировано: 5 фев 14, 18:59
5 фев 14, 18:58    [15524701]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
vovan21rus
Member

Откуда:
Сообщений: 61
Я понял знаю, что ошибка во время компиляции, инструкцию GO использовать не могу, т.к. все это находится в одной процедуре, завернуть openrowset в sp_executesql?
5 фев 14, 19:54    [15524914]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
vovan21rus
Я понял знаю, что ошибка во время компиляции, инструкцию GO использовать не могу, т.к. все это находится в одной процедуре, завернуть openrowset в sp_executesql?
Да, должно помочь.
5 фев 14, 19:55    [15524915]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
vovan21rus
Member

Откуда:
Сообщений: 61
Спасибо, завтра попробую
5 фев 14, 22:23    [15525420]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вообще, дался вам этот openrowset? Есть два варианта: тупой - insert into ... exec, и поумнее - посмотреть код процедуры и заселектить откуда надо напрямую.
5 фев 14, 22:29    [15525437]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
vovan21rus
Member

Откуда:
Сообщений: 61
Insert into не могу сделать, т.к. не хочу создавать еще одну таблицу временную специально для двух параметров, которые тянутся из sp_spaceused, но, дабы избежать подобных ситуаций, все-таки, придется
5 фев 14, 22:37    [15525453]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
vovan21rus
Insert into не могу сделать, т.к. не хочу создавать еще одну таблицу временную специально для двух параметров, которые тянутся из sp_spaceused, но, дабы избежать подобных ситуаций, все-таки, придется


sp_spaceused тащит данные из sys.dm_db_partition_stats...работайте с DMV
6 фев 14, 10:44    [15526896]     Ответить | Цитировать Сообщить модератору
 Re: использование временных таблиц при openrowset  [new]
vovan21rus
Member

Откуда:
Сообщений: 61
Через sp_helptext глянул, что откуда берется, и вытащил из системных таблиц данные напрямую, про openrowset можно забыть, спасибо
6 фев 14, 11:37    [15527226]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить