2

データベースの 4 つのテーブルにUserHash NVARCHAR(255)との2 つの列を追加しました。UserSalt NVARCHAR(8)これらのテーブルの 1 つについて、UserHashそのテーブルで何かを更新しようとすると、列に関する次のエラーが発生します。

エラーメッセージ:

メッセージ 207、レベル 16、状態 1、行 1 列名 'UserHash' が無効です。

Updateステートメントの例:

UPDATE dbo.Users 
SET UserSalt = 'asdf', UserHash = 'SomeString' 
WHERE ID = 21237

(1 row(s) affected)
(1 row(s) affected) 

テーブルは SSMS で編集されており、そのうち 3 つは問題ありませんでした。

選択すると、列が表示されます。インテリセンスはそれを見ます。

列を削除すると、更新機能が復元されます。

問題の表は、UserHash列ではなく列でのみ問題を示していUserSaltます。

削除して再度追加しようとしました。同じ問題。新しい列は索引付けされていません。テーブルのすべてのインデックスを再構築しました。

私が行うすべての検索は、クエリとビューに関する回答に対して「おっと..私の悪い」と思いつきます。SQL の達人で、この動作を見たことがありますか?

4

1 に答える 1

1

悪いことではありませんが、私は本当に悪いベンダーのレガシーコードに苦しんでいます..答えを見つけるためにかなり深く掘り下げなければなりませんでした.

トリガーで参照される「監査」テーブルはフィールドに依存しませんが、この特定のテーブルのトリガーでは、列の序数位置と、SQL 2008 と互換性のないその他の複雑なフィールド トラッキングを使用します。 ( http://technet.microsoft.com /en-us/library/ms186329(v=sql.105).aspx ) 他のテーブルの監査テーブルとトリガーは新しく、同じ問題はありません。

現在、DB 内の 50 以上のトリガーを確認して、それらを最新のものにする必要があります。

于 2013-10-16T17:24:45.920 に答える