2013-08-16 3 views
1

У меня есть хранимая процедура, которая имеет обновление для таблицы с вычисленным столбцом с сохранением. При запуске хранимой процедуры из Management Studio он работает нормально. Но когда я запускаю его с UnixODBC ISQL я получаю эту ошибкуОшибка UPDATE FreeTDS/unixODBC, потому что следующие параметры SET имеют неправильные настройки: «CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING»

[37000][unixODBC][FreeTDS][SQL Server]UPDATE failed because the following 
SET options have incorrect settings: 'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, 
ANSI_PADDING'. Verify that SET options are correct for use with indexed views 
and/or indexes on computed columns and/or query notifications and/or xml data 
type methods. 

Я также получаю сообщение об ошибке внутри Management Studio, если я ставлю следующие в моей хранимой процедуре:

SET ANSI_PADDING OFF 
SET ANSI_WARNINGS OFF 

Я попытался установить эти на «ВКЛ» в хранимой процедуре, но это не сработало.

Я также попытался добавить

AnsiNPW = 1 

в шаблоне источника данных UnixODBC.

Я даже попытался воссоздать хранимую процедуру с теми ANSI_PADDING и ANSI_WARNINGS, которые были установлены в ON перед предложением CREATE PROCEDURE.

Ничего похожего не имеет значения.

Любые предложения приветствуются

ответ

2

Глядя в это дальше, MSDN говорит о заявлениях SET в хранимых процедурах

Stored procedures execute with the SET settings specified at execute time except 
for SET ANSI_NULLS and SET QUOTED_IDENTIFIER. Stored procedures specifying SET 
ANSI_NULLS or SET QUOTED_IDENTIFIER use the setting specified at stored procedure 
creation time. If used inside a stored procedure, any SET setting is ignored. 

Так что это объясняет, почему установка их в хранимой процедуре ничего не сделал.

Чтобы обойти эту проблему, я поставил их перед вызовом моей хранимой процедуры, как так:

SET CONCAT_NULL_YIELDS_NULL, ANSI_PADDING, ANSI_WARNINGS ON; EXEC myProc ... 

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

  • Нет связанных вопросов^_^