Bash FreeTDS/unixODBC更新失败,因为以下设置选项的设置不正确:';CONCAT_NULL_产生_NULL、ANSI_警告、ANSI_填充和x27;
我有一个存储过程,它对具有计算的持久列的表进行更新。 从ManagementStudio运行存储过程时,它工作正常。但是当我用unixodbcisql运行它时,我得到了这个错误Bash FreeTDS/unixODBC更新失败,因为以下设置选项的设置不正确:';CONCAT_NULL_产生_NULL、ANSI_警告、ANSI_填充和x27;,bash,sql-server-2005,freetds,unixodbc,Bash,Sql Server 2005,Freetds,Unixodbc,我有一个存储过程,它对具有计算的持久列的表进行更新。 从ManagementStudio运行存储过程时,它工作正常。但是当我用unixodbcisql运行它时,我得到了这个错误 [37000][unixODBC][FreeTDS][SQL Server]UPDATE failed because the following SET options have incorrect settings: 'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADD
[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数据源模板中
我甚至尝试在CREATEPROCEDURE子句之前,将这些ANSI_填充和ANSI_警告设置为ON来重新创建存储过程
但似乎没有什么不同
关于存储过程中的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 ...