SQL Server 中調整自增欄位的當前初始值zz
前幾天在把一個Communtiy Server 的資料庫從SQL 2000升級到SQL 2005 的時候,碰到一個怪異的問題,報如下錯誤:
Violation of PRIMARY KEY constraint 'PK_cs_Threads'. Cannot insert duplicate key in object 'dbo.cs_Threads'.
分析進去後,竟然發現這個表的自增欄位資料庫中已經達到了6144,而資料庫維護的這個表的初始自增值只到6109。
解決方法很簡單,利用以下SQL 語句即可搞定:
DBCC CHECKIDENT ('cs_Threads')
上述語句的意思就是:如果表'cs_Threads'的當前標識值小於列中儲存的最大標識值,則使用標識列中的最大值對其進行重置。
CHECKIDENT 命令可以有以下幾種寫法:
1、DBCC CHECKIDENT ('table_name', NORESEED)
不重置當前標識值。DBCC CHECKIDENT 返回一個報表,它指明當前標識值和應有的標識值。
類似如下的報表:
Checking identity information: current identity value '6109', current column value '6144'.
2、DBCC CHECKIDENT ('table_name') 或DBCC CHECKIDENT ('table_name', RESEED)
如果表的當前標識值小於列中儲存的最大標識值,則使用標識列中的最大值對其進行重置。
上述命令執行的時候,也會報類似上面的報表。
3、DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value)
當前值設定為 new_reseed_value。
如果自建立表後沒有將行插入該表,則在執行 DBCC CHECKIDENT 後插入的第一行將使用 new_reseed_value 作為標識。否則,下一個插入的行將使用 new_reseed_value + 1。
如果 new_reseed_value 的值小於標識列中的最大值,以後引用該表時將產生 2627 號錯誤資訊。
Violation of PRIMARY KEY constraint 'PK_cs_Threads'. Cannot insert duplicate key in object 'dbo.cs_Threads'.
分析進去後,竟然發現這個表的自增欄位資料庫中已經達到了6144,而資料庫維護的這個表的初始自增值只到6109。
解決方法很簡單,利用以下SQL 語句即可搞定:
DBCC CHECKIDENT ('cs_Threads')
上述語句的意思就是:如果表'cs_Threads'的當前標識值小於列中儲存的最大標識值,則使用標識列中的最大值對其進行重置。
CHECKIDENT 命令可以有以下幾種寫法:
1、DBCC CHECKIDENT ('table_name', NORESEED)
不重置當前標識值。DBCC CHECKIDENT 返回一個報表,它指明當前標識值和應有的標識值。
類似如下的報表:
Checking identity information: current identity value '6109', current column value '6144'.
2、DBCC CHECKIDENT ('table_name') 或DBCC CHECKIDENT ('table_name', RESEED)
如果表的當前標識值小於列中儲存的最大標識值,則使用標識列中的最大值對其進行重置。
上述命令執行的時候,也會報類似上面的報表。
3、DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value)
當前值設定為 new_reseed_value。
如果自建立表後沒有將行插入該表,則在執行 DBCC CHECKIDENT 後插入的第一行將使用 new_reseed_value 作為標識。否則,下一個插入的行將使用 new_reseed_value + 1。
如果 new_reseed_value 的值小於標識列中的最大值,以後引用該表時將產生 2627 號錯誤資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-609996/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 自增欄位重置SQLServer
- SQL Server中根據某個欄位,ID欄位自動增長的實現SQLServer
- SQL Server 自增欄位歸零等問題SQLServer
- SQL Server 2005裡設定自增欄位SQLServer
- 細說SQL SERVER中欄位型別SQLServer型別
- oracle中如何指定表欄位自增Oracle
- SQL Server複製的表中如何修改欄位SQLServer
- sql server中對日期欄位值的比較SQLServer
- 查詢當前SQL Server的版本SQLServer
- SQLServer中如何刪除欄位的自增標識SQLServer
- 如何處理sql server中的image型別的欄位?SQLServer型別
- 解決SQL Server中CHAR欄位空格問題SQLServer
- 在SQL Server中修改欄位型別和欄位名稱的儲存過程SQLServer型別儲存過程
- ORACLE9I中建立自增欄位的方法(轉)Oracle
- SQL Server中獲取資料庫名、表名、欄位名和欄位註釋的SQL語句SQLServer資料庫
- oracle 11G 新增欄位調整效能Oracle
- sql server如何檢視欄位註釋?SQLServer
- sql server 2005中的分割槽函式用法(partition by 欄位)SQLServer函式
- 在VC中用OLE DB讀寫SQL Server中的BLOB欄位 (轉)SQLServer
- oracle和mysql設定自增欄位OracleMySql
- sql查詢當前使用者所有表、欄位及相關注釋資訊SQL
- SQL Server 2005效能調整二(zt)SQLServer
- 怎麼整理 SQL Server效能調整清單SQLServer
- SQL Server中text型別匯入oracle clob欄位時的設定SQLServer型別Oracle
- 自動記憶體調整中真正決定自動調整的引數記憶體
- SQL Server 查詢表註釋和欄位SQLServer
- PL/SQL Developer中輸入SQL語句時如何自動提示欄位SQLDeveloper
- 如何自動填充SQL語句中的公共欄位SQL
- mysql獲取指定表當前自增id值MySql
- pydantic 欄位的預設值設定獲取當前時間
- Laravel Tips:指定自增欄位起始值Laravel
- innodb引擎對自增欄位(auto_increment)的處理REM
- SQL Server 中讀取當前年月SQLServer
- SQL INSERT INTO 語句詳解:插入新記錄、多行插入和自增欄位SQL
- 為取出的每個陣列中增加一個自增的id(注意此ID不是資料庫中存的自增id欄位)陣列資料庫
- postman入參使用自增編號,當前時間Postman
- 觸發器—一個表插入資料時其他欄位同步自增長欄位觸發器
- 獲取sql server 2008表欄位資訊SQLServer