Foo
という名前のデータベースに、主キーであるBar
という名前の列を持つテーブルがID
あり、このデータベースは開発中の SQL Server 上にあります。
実稼働サーバーから開発サーバーにデータをコピーして、そのデータで遊ぶことができるようにしようとしているので、次を実行します。
set IDENTITY_INSERT Foo.dbo.Bar ON
insert into Foo.dbo.Bar
(
ID
,Something
,Else
,Is
,Going
,Horribly
,Wrong
,With
,SQL
)
select
ID
,Something
,Else
,Is
,Going
,Horribly
,Wrong
,With
,SQL
from Production.Foo.dbo.Bar
set IDENTITY_INSERT Foo.dbo.Bar OFF
そして、私はエラーが発生します
メッセージ 8107、レベル 16、状態 1、行 1
IDENTITY_INSERT は、テーブル 'Foo.dbo.Bar' に対して既にオンになっています。テーブル 'Foo.dbo.Bar' の SET 操作を実行できません。
うーん..よし、テーブルの IDENTITY_INSERT がオンになっている。したがってSET IDENTITY_INSERT Foo.dbo.Bar ON
、クエリの先頭から を削除して実行すると、次のエラーが発生します。
メッセージ 544、レベル 16、状態 1、行 1
IDENTITY_INSERT が OFF に設定されている場合、テーブル 'Bar' の ID 列に明示的な値を挿入できません。
一日中実行できSET IDENTITY_INSERT Foo.dbo.Bar OFF
ますが、それをオンにしようとするとON
、SQL Server 2012 はそれIDENTITY_INSERT
が既にオンになっていると言います。