2011-01-04 22 views
2

あるデータベースから別のデータベースにすべてのデータをコピーしたいのですが、簡単に挿入できない外部キーには多くの問題があります。私は外部キーを無効にし、データを挿入してから再び有効にしたいと思います。それを行う最も簡単な方法は何ですか?SQLサーバーで一時的に制約を無効にする

おかげで、 イヴァン

答えて

3
-- disable the check_sale constraint in the employee table 
ALTER TABLE employee NOCHECK CONSTRAINT check_sale 

-- enable the check_sale constraint in the employee table 
ALTER TABLE employee WITH CHECK CHECK CONSTRAINT check_sale 

あなたのスクリプトは、すべての制約を取得し、それらのすべてを無効にすることができ、複数のテーブルにまたがる場合。

USE AdventureWorks; 
GO 
SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint, 
SCHEMA_NAME(schema_id) AS SchemaName, 
OBJECT_NAME(parent_object_id) AS TableName, 
type_desc AS ConstraintType 
FROM sys.objects 
WHERE type_desc LIKE '%CONSTRAINT' 
GO 

http://www.mssqlcity.com/Articles/General/using_constraints.htm

+0

これは信頼されていない状態のままになります。クエリオプティマイザがそれらを使用できるように、 'WITH CHECK'オプションを使用する必要があります。 c.f. [統計とクエリオプティマイザについて知っておくべき13の事柄](http://www.simple-talk.com/sql/t-sql-programming/13-things-you-should-know-about-statistics-and-照会オプティマイザ/)は9と10を指します。 –

+0

データが無効であることは明らかです。クリーンアップを実行して有効にする必要があります。 –

+2

それを再び有効にする方法は問題です。詳細はこちらhttp://www.mssqltips.com/tip.asp?tip=1539 –

関連する問題