2013-02-06 68 views
0

我有一個表不應該在多個數據庫上的主鍵列上設置標識屬性。可能會有人無意中從設計角度設置其屬性。如何通過sql server 2005中的sql查詢從主鍵列中刪除標識屬性

因此,我想寫一個一次性的查詢,它將檢測並從表中刪除該身份規範。

我看了所有的搜索文章,而不是滿足於像創建新表,複製其元數據/數據,自該表將其改名爲解決方案是非常關鍵和列在其上有許多限制。

我也嘗試過,設置Identity_insert屬性ON但它只是一次。當服務器再次連接時,它不允許我保存。

SET IDENTITY_INSERT <tableName> ON; 

我不想通過將數據插入到它之前設置IDENTITY_INSERT ON改變我的後臺程序太多。

有什麼建議嗎?

回答

0

不幸的是,從表格中加入IDENTITY屬性,而無需創建丟棄第一重新創建表的沒有別的辦法。因此,您需要將數據存儲在新表中,刪除原始表,然後將臨時表重命名爲正確的名稱。

OR

你可以只添加一個新的列到你的表,那麼你的數據複製到這個新列,從表中刪除您的身份列,最後設置你的新列作爲主鍵。

如何找到你的身份列...

select object_name(object_id) table_name,name column_name 
from sys.columns 
where is_identity = 1