2015-09-28 6 views
0

У меня возникла проблема с задачей в моем пакете SSIS 2012. Я создаю пакет (в порядке убывания):Вызов хранимой процедуры в ssis 2012

  1. усечь данные в таблице SQL Server
  2. заполнить эту таблицу с помощью плоского текстового файла
  3. то выполнение хранимой процедуры
  4. затем экспортировать данные в Excel

в таблице Я использую называется dbo.ClientData в базе данных под названием SalesQuota

Первые две задачи работают нормально, но у меня возникают проблемы с выполнением хранимой процедуры (через выполнение задачи SQL) в пакете. Я пробовал все, нажав сохранить то же самое соединение с истинным, чтобы попытаться выполнить процедуру SQL Server в задаче. Но я все время получаю ошибку. Итак, я использовал SQL Search в Management Studio, чтобы узнать, где хранится эта процедура, и показывает, что это может быть причиной возникновения ошибки в трех разных базах данных на сервере? Я googled и увидел что-то относительно сопоставления переменной (?) С задачей, но я не смог найти параметры процедуры.

Это ошибка я получил

[Execute SQL Task] Error: Executing the query "execute [dbo].[up_client_sp]" failed with the following error:
Invalid object name 'SalesQuota.dbo.clientstatusgather'.
Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

ответ

0

Вам нужно настроить подключение ADO.NET к базе данных и использовать его связи в задаче SQL, что Кальес процедуры сохранения. Существует также вызов свойства IsQueryStoredProcedure, для которого должно быть установлено значение true.

Вы можете настроить параметры на вкладке «Сопоставление параметров» в редакторе задач SQL, и если ваш SP вернет какие-либо данные, вы можете его захватить, используя вкладку «Выбор результата» в редакторе задач SQL. Но вам нужно только это сделать, если ваш SP фактически возвращает набор результатов, который вы хотите захватить.

+0

благодарит вас за ответ, но не следует использовать соединение OLE DB, поскольку для предыдущих двух задач я использовал соединение OLE DB? и соединение было хорошим, но пакет всегда терпит неудачу на третьем этапе, и у меня было установлено значение IsQueryStoredProcedure равным true, но до сих пор нет никакой разницы. Также как я могу узнать, какие параметры для процедуры? когда я открываю процедуру, нет @ - рядом с оператором процедуры, и я читаю, что это имена параметров. –

+0

Мы используем OLEDB для всех наших основных операторов SQL-выполнения, но для вызова «Хранимые процедуры» мы используем соединение ADO.NET. Я на самом деле не уверен в полной причине (вы можете посмотреть и сравнить, если хотите), но я получаю ту же ошибку, что и вы, когда я ошибочно установил их как OLEDB. Я не понимаю, каков ваш вопрос в отношении параметров. На вкладке «Сопоставление параметров» вы используете имя переменной SSIS в одном поле и имя параметра SQL в другом поле. Вы знаете имена параметров? – tember

+0

Я не уверен в имени параметров, которые я пробовал найти их по определенным кодам, которые позволяют вам просматривать имя процедуры и т. Д., Но всегда не имеют строк, после прохождения через серверы я понял, что процедура хранится на другом сервере как Что ж. мы используем два сервера для тестирования, но у него все еще есть официальные данные, а другой - для официальных баз данных исключительно. В официальном db процедура найдена только один раз, а в другом тестировании db - 4 раза, возможно, я должен использовать официальную процедуру сервера? –

0

Sp_ helptext 'procname' будет записывать хранимую процедуру для вас. И использовать? как держатель переменной площади. В вашем пакете SSIS для ваших параметров. Я предполагаю, что вы используете SQL-задачу. Я также предлагаю вам использовать соединение oledb.