編集:以下のテキストを読んで理解しようとする前に、まず以下の私の答えを読んでください。何が起こっているのかを見ると、それだけの価値があるとは思わないかもしれません;)
私は奇妙な問題を抱えています.SQL Server 2008 R2は、実際にはもう存在しない無効な列について不平を言い続けていますが、私もそれを使用していません!
常にこのエラーが発生するため、列への参照が見つからない自分のアプリケーション内から、そのテーブルの行を更新できなくなりました。次に、テストとしてSSMSで直接更新したかったのですが、そこで行を編集すると、まだこのエラーが発生します。
以前に何が起こったか: CertcUL varchar(1) という列を作成しましたが、それは機能しました。しばらくすると、varchar(30) にする必要があるように見えたので、テーブルのデザインを編集して varchar(30) に変更しました。
その瞬間から、この列を更新できるのは、1 キャラクターを保存したときだけであることがわかりました。さらに保存しようとすると、文字列またはバイナリの切り捨てについて警告するエラーが表示されました。どういうわけか、以前の varchar(1) 情報はまだ DB に存在していました。
その列の名前を CertcUL2 または Cert_cUL に変更したとき、同じことが起こり続けました! したがって、列名を変更しても、根本的な原因は変わりません。また、SSMSでいくつかの文字を直接追加しようとするとき。
列を削除し、すぐに varchar(30) を使用して新しい列を追加し、「test」を呼び出しても、同じ問題が残りました。この列にはまだ 1 文字しか保存できません。このコラムは最後のコラムでした。それを最後の列にすることも役に立ちません。他の列を維持しながら新しい列を作成する場合にのみ、適切に動作する列を持つことができます。
そのため、列が削除された場合でも、SQL Server は列に関する一部のメタ データを保存します。And は名前ではなく、列が作成された順序を調べます。
これがどのように発生する可能性があるか、(おそらく)テーブル全体を削除して再作成する以外に、これを修正する方法を知っている人はいますか?
ありがとう!