4

SSMS を介してテーブルに計算列を追加しようとしてVARCHAR(10)DATEます。

CONVERT(DATE, [charDob])テーブル デザイナーの SSMS レポートに数式を入力すると、次のようになります。

列 の式の検証中にエラーが発生しましたcharDobTyped

式を使用する[charDob]と、期待どおりに「機能」します。つまり、列が正しくバインドされます。また、式CONVERT(DATE, '2001')は期待どおりに「機能」するため、列を使用するとエラーが発生します。

元の列は でVARCHAR(10)あり、NULL 値または他の方法で に変換可能な値が含まれていますDATE。クエリSELECT CONVERT(DATE,charDob) as dob FROM peopleは期待どおりに機能します。また、エラーメッセージは「無効な式」に関するものであり、データ変換エラーに関するものではないため、inconvertible がこれを引き起こしているとは思いません。

新しい計算列とダミー値を含むテーブルを既に保存し、データベースに再接続しました。これは、時々発生する奇妙なキャッシュの問題が発生しないようにするためでした。エラーは、永続化されたフラグとは無関係に永続化されます-簡単にオフにできる場合のみ。

4

1 に答える 1

8

Management Studio は、ほとんどの DDL を実行する最適な方法ではありません。新しいクエリ ウィンドウを開いて、次を使用してください。

ALTER TABLE dbo.whatever ADD newcolumn AS (CONVERT(DATE, CharDob));

具体的なバグは次のとおりです。

http://connect.microsoft.com/SQLServer/feedback/details/291134/katmai-table-designer-cant-validate-computed-column-formula

このコンテキストでの「次のリリース」は、間違いなく SQL Server 2012 であるため、2008 または 2008 R2 SSMS を使用している場合 (理由は?)、修正は適用されません。

于 2013-03-29T21:45:07.663 に答える