徵狀
請試想下列案例:
-
在 SQL Server 2000年資料庫中,您可以有一個資料行已設定為特定的預設值的資料表中。
-
您可以升級這個資料庫到較新版的 SQL Server (SQL Server 2005,或 SQL Server 2008年或 SQL Server 2008 R2)。
在這個案例中,您會注意到,在升級後的版本中,資料行的預設值將會有額外的括號四周,而任何已編碼為接受原始的預設值,從 SQL Server 2000年的應用程式將會失敗。下表顯示了不同版本的 SQL Server 儲存區預設值為 0 類別目錄的中繼資料表中:
版本 |
SQL Server 2000 |
SQL Server 2005 或更新版本 |
數值 |
(0) |
((0)) |
注意: 這個問題只會影響數字值。文字和函式,都將儲存在 SQL Server 2000年和更新版本中相同的格式。例如,文字會儲存為 ('文字 '), function()會儲存為 (function())。
原因
這種行為是經過設計規劃。新版本的 SQL Server 區別 SQL Server 2000年解碼,並儲存在類別目錄的中繼資料中的 SQL 運算式。如需詳細資訊,請參閱這份文件的其他相關資訊一節中所列的各種連結。
解決方案
請修改您的應用程式,使其接受新的格式中的預設值。範例,如果您的應用程式設計成預期的預設值為 「 (0) 」 都有一組括號括住數字的值,請變更您的應用程式預期兩個一組括號"((0))",以便它會繼續為使用 SQL Server 2005 及更新版本資料庫的版本。
其他相關資訊
如何檢視資料行的預設值:您可以使用下列兩種方法之一來檢視資料行的目前設定的預設值:方法 1: 使用 SQL Server Management Studio:
-
在物件總管中以滑鼠右鍵按一下您要檢查的預設值,然後按一下 [設計],以開啟 「 資料表設計師 」 中的資料表的資料行的資料表。
-
選取您要檢查 thedefault 值的資料行。
-
於資料行屬性] 索引標籤中,您會看到預設值如下列影像所示之預設值或繫結] 屬性中:

方法 2: 使用下列的系統檢視的其中一個:
-
sys.default_constraints -使用 [定義資料行,以取得所需的資訊。
-
sys.syscomments -使用文字資料行,在此檢視中,以取得必要的資訊。注意: 這個 SQL Server 2000年系統資料表是包含做為回溯相容性檢視。我們建議您改用目前的 SQL Server 系統檢視。若要尋找的對等系統檢視表,請參閱下方的其他參考資料下的連結。
其他參考資料: