2013-08-16 89 views
1

我有一個存儲過程具有計算持久列的表的更新。 從Management Studio運行存儲過程時,它工作正常。但是,當我的unixODBC運行ISQL我得到這個錯誤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 

我嘗試設置這些在存儲過程中設置爲「ON」,但這不起作用。

我也試過在我的unixODBC數據源模板添加

AnsiNPW = 1 

我甚至試圖在CREATE PROCEDURE子句之前重新創建那些ANSI_PADDING和ANSI_WARNINGS設置爲ON的存儲過程。

雖然沒有什麼似乎有所作爲。

任何建議都讚賞

回答

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 ... 

爲了解決這個問題我打電話,像這樣我的存儲過程前設置它們

相關問題