2015-03-03 41 views
0

我想導入數據到數據庫。 爲了做到這一點,我需要設置indentity insert on。 使用edit mapping來設置500+表不是一個選項。設置啓用插入多個表,其中一些已經有ID ON

所以我發現了這個SO Question

但一些表已經將其設置爲ON所以Puting這在一個查詢將產生1個錯誤語句錯誤和停止。 如何強制它忽略錯誤結束轉到下一個語句,直到它將嘗試將所有表設置爲ON?

回答

1

你是如何導入你的數據?你可能想看看Keep Identity Values When Bulk Importing Data

您一次只能將IDENTITY_INSERT打開爲一個表格(每個會話)。如果需要,您可以使用此查詢來生成一個腳本,以關閉每個適用表的IDENTITY_INSERT。

select 
    N'SET IDENTITY_INSERT ' + quotename(s.name) + N'.' + quotename(o.name) + N' OFF' 
from 
    sys.objects o 
     inner join sys.schemas s on s.schema_id = o.schema_id 
     inner join sys.columns c on c.object_id = o.object_id 
where 
    o.type = 'U' and 
    c.is_identity = 1 
1

- 爲SQL Server 2005和 開始嘗試

set identity_insert (table 1 name) on 
end try 

begin catch 

    print ' table 1 already on' 
end catch 

begin try 

    set identity_insert (table 2 name) on 

end try 

begin catch 

    print ' table 2 already on' 

end catch  
相關問題