2017-09-21 14 views
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には何も表示されないので)?ショーン・ランゲが指摘するように

+0

sysconstraintsまたはsysobjectsから行を削除することはできません。それを試してみると、エラー259が発生します。 "システムカタログへの特別更新は許可されていません。"以前はこれらの更新を行うことができましたが、SQL Server 2005の時点ではもう許可されていません。 –

答えて

0

この質問は、議論の余地がある:

メッセージ259、レベル16、状態1、システムカタログにライン1つの アドホック更新は許可されていません。

関連する問題