0
私はこのSQLを実行する場合:sysconstraintsから制約を削除することは安全です(「ドロップ制約」が失敗するため)。
Msg 3727, Level 16, State 0, Line 9
Could not drop constraint. See previous errors.
私はNOCHECKに制約を変更しようとしたが、それはすでに次のとおりです。...
IF EXISTS
(select a.id, a.name ,b.name
from sysobjects a, sysobjects b, sysconstraints c
where a.name = 'my_index_name'
and b.name = 'my_table'
and a.id = c.constid
and c.id = b.id)
BEGIN
ALTER TABLE my_table
DROP CONSTRAINT my_index_name
END
をキャンセルするまで、それがポイントSSMSがエラーを与えた時、実行されます。クエリの存在チェック部分を別々に実行しましたが、インデックスは存在します。
私はsysconstraintsとsysobjectsから制約を削除できるだけの十分なSQL知識を持っていますが、データベースが破損するかどうかは疑問です。(特に、後で同じインデックス名を再作成しようとするSQL残ったディスクファイル/ SQL Serverによって管理されるデータのために失敗します)。
実際に「以前のエラーを表示する」方法はありますか(SSMSには何も表示されないので)?ショーン・ランゲが指摘するように
sysconstraintsまたはsysobjectsから行を削除することはできません。それを試してみると、エラー259が発生します。 "システムカタログへの特別更新は許可されていません。"以前はこれらの更新を行うことができましたが、SQL Server 2005の時点ではもう許可されていません。 –