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

Откуда: Киев
Сообщений: 49
Всем привет!
Есть простая задачка: выложить данные, которые возвращает хранимая процедура (рекордсет)
в текстовый файл.
Пробую реализовать через SSIS: в Data Flow делаю OLE DB Surce, где запускаю нужную мне ХП, но на закалдке column ничего нет, соответсвенно я не могу передать это в destination file.
Есть другие варианты?

P.S.
Без ХП никак.
4 фев 08, 14:05    [5240841]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
SET NOCOUNT ON есть в хп?
4 фев 08, 14:08    [5240858]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
craz
Member

Откуда: Киев
Сообщений: 49
Пробовал, н получается
4 фев 08, 14:33    [5241027]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
А что делается в этой хп?
4 фев 08, 14:39    [5241069]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
craz
Member

Откуда: Киев
Сообщений: 49
ALTER proc [dbo].[pr_CheckSumForFile] (@Path varchar (255))
as

SET NOCOUNT ON
declare @cmd as varchar (255)

if object_id('tempdb.dbo.#checksum') is not NULL begin
drop table #checksum
end

create table #checksum (summ varchar(255))
set @cmd='c:\checksum.exe '+ @Path
insert into #checksum exec master..xp_cmdshell @cmd --, no_output


select column1 = 'Блокировки ' + convert (varchar, getdate (),104)
union all
select column1 = summ from #checksum
where summ is not null
4 фев 08, 14:54    [5241166]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Ваша процедура должна "уметь" возвращать метаданные при SET FMTONLY ON (т.е. без реального выполнения запросов в ней), в Вашем случие этого не происходит.
4 фев 08, 15:14    [5241321]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
craz
Member

Откуда: Киев
Сообщений: 49
Понял, спасибо!
4 фев 08, 16:13    [5241737]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: SSIS и ХП  [new]
Idol_111
Member

Откуда:
Сообщений: 598
craz
Понял, спасибо!

Я вот не понял.
Т.е. решения в пределах SSIS сервиса не существует?
Надо переписывать хп без временных таблиц, так?
4 авг 09, 09:23    [7493575]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31227
Idol_111
Я вот не понял.
Т.е. решения в пределах SSIS сервиса не существует?
Надо переписывать хп без временных таблиц, так?
Нет, сказали-же:
pkarklin
Ваша процедура должна "уметь" возвращать метаданные при SET FMTONLY ON (т.е. без реального выполнения запросов в ней)
Переписывать процедуры нужно, но временные таблицы использовать не запрещается.

Кроме того, можно даже использовать процедуры, коотрые не возвращают метаданные (т.е. даже не переписывать), хотя это и сложнее.
4 авг 09, 09:28    [7493599]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Idol_111
Т.е. решения в пределах SSIS сервиса не существует?
Надо переписывать хп без временных таблиц, так?
Отчего же? Есть старый добрый способ ещё со времен DTS-пакетов: пишется запрос, возвращающий метаданные полностью аналогичные возврату из ХП и источником данных назначается запрос из переменной в которую этот запрос и помещается. Перед Data Flow вставляется скриптовый таск, который значению этой переменной присваевает строку вызова процедуры.

Сообщение было отредактировано: 5 авг 09, 08:08
4 авг 09, 09:31    [7493614]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
Idol_111
Member

Откуда:
Сообщений: 598
alexeyvg
Idol_111
Я вот не понял.
Т.е. решения в пределах SSIS сервиса не существует?
Надо переписывать хп без временных таблиц, так?
Нет, сказали-же:
pkarklin
Ваша процедура должна "уметь" возвращать метаданные при SET FMTONLY ON (т.е. без реального выполнения запросов в ней)
Переписывать процедуры нужно, но временные таблицы использовать не запрещается.

Кроме того, можно даже использовать процедуры, которые не возвращают метаданные (т.е. даже не переписывать), хотя это и сложнее.

так и что значит "уметь"? Нужно методом тыка проверять, когда твоя процедура возращает метаданные, а когда нет? Или все же есть какие-то правила, условия и т.п., на которые можно ориентироваться.
К примеру, в моей практике любое присутствие временных таблиц гарантирует проблемы с возвратом метаданных. Возможно моя практика была однобока.
Если не сложно, разъясните более детально.
4 авг 09, 12:45    [7495120]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
Idol_111
Member

Откуда:
Сообщений: 598
tpg
Idol_111
Т.е. решения в пределах SSIS сервиса не существует?
Надо переписывать хп без временных таблиц, так?
Отчего же? Есть стары добрый способ ещё со времен DTS-пакетов: пишется запрос, возвращающий метаданные полностью аналогичные возврату из ХП и источником данных назначается запрос из переменной в которую этот запрос и помещается. Перед Data Flow вставляется скриптовый таск, который значению этой переменной присваевает строку вызова процедуры.

Спасибо, интересно.

Вот всегда, когда пишут типа "старый добрый способ", у меня возникает вопрос. Если народ такое придумывает и использует, почему же нельзя это реализовать в нормальном виде в следующей версии. Вроде и удобно и спрос есть. Возможно есть какой-то "косяк" с этим.
Ну это уже отступление.
4 авг 09, 12:50    [7495153]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
Glory
Member

Откуда:
Сообщений: 104760
Idol_111

так и что значит "уметь"? Нужно методом тыка проверять, когда твоя процедура возращает метаданные, а когда нет? Или все же есть какие-то правила, условия и т.п., на которые можно ориентироваться.

Разумеется есть правило. Метаданные "вычисляются" без выполнения процедуры. Т.е. все объекты, которые будут созданы при реальном выполнении процедуры, априори не могут участвовать в формировании метаданных.
4 авг 09, 12:50    [7495156]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и ХП  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31227
Idol_111
так и что значит "уметь"? Нужно методом тыка проверять, когда твоя процедура возращает метаданные, а когда нет? Или все же есть какие-то правила, условия и т.п., на которые можно ориентироваться.
Почему методом тыка, просто текст прочитать.

Как уже написал Glory, в процедуре метаданные должны бать понятны без выполнения.

Idol_111
К примеру, в моей практике любое присутствие временных таблиц гарантирует проблемы с возвратом метаданных.
Не любой.
set nocount on
go
create proc test_proc
	@i int = null
as
create table #tmp(id int)

select * into #tmp2 from #tmp

select * from sysobjects o

go
exec test_proc
go
SET FMTONLY ON
exec test_proc
go
SET FMTONLY OFF
go
drop proc test_proc
Хотя это тоже не всегда буждет работать :-(

Idol_111
Вот всегда, когда пишут типа "старый добрый способ", у меня возникает вопрос. Если народ такое придумывает и использует, почему же нельзя это реализовать в нормальном виде в следующей версии. Вроде и удобно и спрос есть. Возможно есть какой-то "косяк" с этим.
Согласен. Но, возможно, разработчики из микрософт об этом недостатке не знают?

На сайте Microsoft Connect вы може оставить заявку на изменение функциональности продукта. Если вас поддержат другие разработчики, то это сделают.
4 авг 09, 14:32    [7495909]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить