2016-09-13 3 views
-1

У меня есть хранимая процедура, которая работает 100% при запуске с сервера Sql. Он обновляет не менее 5 разных таблиц. Когда я запускаю его из Python, он обновляет только первые две таблицы. Не заполняется на остальных таблицах. Прошедшие параметры точно такие же, как и непосредственно с сервера sql. С каждым тестом данные сбрасываются до общей начальной точки. Кто-нибудь сталкивался с этой проблемой с выполнением Python хранимых процедур? Я использую Python 3.5 и Pyodbc менее чем месяц назад, клиент и сервер Sql 2012 на окнах. Это не проблема фиксации, потому что первые две таблицы обновляются/совершаются. Заявление sql, с которым он не справляется, вовсе не является сложным. Я угадываю какое-то ограничение, например, время или только обновление столько таблиц с помощью данного вызова sql? Мой следующий шаг - сделать каждый шаг из Python в качестве отдельных шагов, а не из одного сделать все, что хранится в Proc, чтобы увидеть, есть ли у меня какие-то различия, но я надеюсь не делать этого.Python, использующий Pyodbc, подключающийся к Sql 2012, вызывающий хранимую процедуру

str_rs_SqlCommand = "{call dbo.usp_LaborLogBatchPerson ('Test User', '1')}" ### Passes parameters to the stored procedure 
print (str_rs_SqlCommand) 
obj_dbc_Connection2 = pyodbc.connect("DRIVER={SQL Server} " + " ;SERVER=" + str_dbc_ServerName + " ;DATABASE=" + str_dbc_Name + " ;UID=" + str_dbc_Uid + " ;PWD=" + str_dbc_Pwd + "" + "") #;autocommit=True #tried with and without autocommit 
conn = obj_dbc_Connection2.cursor() ### Create a cursor for the sql connection 
conn.execute(str_rs_SqlCommand) 
conn.commit() 
obj_dbc_Connection2.close 
+0

Без предоставления какого-либо кода Я не уверен, какая помощь вам нужна ожидая ... – Nicarus

+0

Код запускается из командной строки, а не из Интернета, поэтому не должно быть проблем с тайм-аутом, насколько я знаком с этими технологиями, работающими вместе. Пожалуйста, дайте мне знать, если кто-то столкнулся с проблемой времени при запуске из командной строки. –

+0

Какой код полезен? Хранимая процедура с кучей вставок/обновлений. Я сказал, что proc работает правильно при запуске с сервера Sql. Поэтому разница заключается в том, что он запускается с Python через pyodbc. –

ответ

0

Я нашел его, пройдя по частям того, что он делал. После того, как «Заявление о печати» в хранимой процедуре завершает выполнение хранимой процедуры на этом этапе. Убедитесь, что вы не используете инструкции печати в хранимых процедурах, если используете Python 3.5 с Pyodbc с MSSql 2012 на платформе Winderz ...

+0

Кто-нибудь знает, как ловушку за эту ошибку? Предполагая, что вы получите один из Python. Ошибка при выполнении с Sql-клиентом, перестает работать в тот момент, когда вы запускаете тот же код из Python. –

+0

, если вы можете отредактировать SP и хотите сохранить эквивалент операторов печати, это представляется актуальным как замена http://stackoverflow.com/a/1264635/1007939 также [RAISERROR .. WITH NO WAIT] (https://msdn.microsoft.com/en-us/library/ms178592.aspx) – CDspace

+0

Спасибо за это, но я думаю, что это не относительный. ODBC Python умирает, если я делаю печать. Печать работает только с Sql. Мое понимание из других сообщений на форуме Python заключается в том, что Python ожидает один набор результатов. У него есть некоторые проблемы с путаницей, если вы возвращаете несколько наборов результатов из одного и того же файла Stored Proc или do print в хранимой процедуре. Я также не смог заставить его отображать результирующий набор Stored Proc.Из Sql select он работает, но не работает с Python. На этом этапе я завершаю, что должен выполнить настройку для выполнения Python. Хранимые прокси. –

Смежные вопросы