2
あるデータベースから別のデータベースにすべてのデータをコピーしたいのですが、簡単に挿入できない外部キーには多くの問題があります。私は外部キーを無効にし、データを挿入してから再び有効にしたいと思います。それを行う最も簡単な方法は何ですか?SQLサーバーで一時的に制約を無効にする
おかげで、 イヴァン
あるデータベースから別のデータベースにすべてのデータをコピーしたいのですが、簡単に挿入できない外部キーには多くの問題があります。私は外部キーを無効にし、データを挿入してから再び有効にしたいと思います。それを行う最も簡単な方法は何ですか?SQLサーバーで一時的に制約を無効にする
おかげで、 イヴァン
-- 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
これは信頼されていない状態のままになります。クエリオプティマイザがそれらを使用できるように、 'WITH CHECK'オプションを使用する必要があります。 c.f. [統計とクエリオプティマイザについて知っておくべき13の事柄](http://www.simple-talk.com/sql/t-sql-programming/13-things-you-should-know-about-statistics-and-照会オプティマイザ/)は9と10を指します。 –
データが無効であることは明らかです。クリーンアップを実行して有効にする必要があります。 –
それを再び有効にする方法は問題です。詳細はこちらhttp://www.mssqltips.com/tip.asp?tip=1539 –