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 2005效能調整二(zt)SQLServer
- SQL Server中獲取資料庫名、表名、欄位名和欄位註釋的SQL語句SQLServer資料庫
- SQLServer中如何刪除欄位的自增標識SQLServer
- SQL Server 查詢表註釋和欄位SQLServer
- 如何自動填充SQL語句中的公共欄位SQL
- SQL INSERT INTO 語句詳解:插入新記錄、多行插入和自增欄位SQL
- Laravel Tips:指定自增欄位起始值Laravel
- pydantic 欄位的預設值設定獲取當前時間
- 在 SQL Server 中,建立表時可以直接為欄位新增唯一約束(UNIQUE)SQLServer
- SQL Server資料庫調整表中列的順序操作方法及遇到問題SQLServer資料庫
- mysql獲取指定表當前自增id值MySql
- SQL Server中事務日誌自動增長對效能的影響(下)PGSQLServer
- SQL Server中事務日誌自動增長對效能的影響(上)OSSQLServer
- MS SQL 替換欄位中的 u00a0SQL
- postman入參使用自增編號,當前時間Postman
- 基於MySQL自增ID欄位增量掃描研究MySql
- sql語句修改欄位型別和增加欄位SQL型別
- SQL Server一次SQL調優案例SQLServer
- MyBatis實現MySQL表欄位及結構的自動增刪MyBatisMySql
- DB2巧用欄位自動增長主鍵的方法DFDB2
- Sql查詢 一個表中某欄位的資料在另一個表中某欄位中不存在的SQL
- win10如何調整開始欄大小_win10開始欄怎麼調整Win10
- 短視訊app製作,去除當前自帶的頂部導航欄APP
- sqlserver採集欄位的sql語句SQLServer
- DB2_更新SQL欄位DB2SQL
- sql 統計多個欄位的和(如果欄位中含有 null 的處理)SQLNull
- SQL字元型欄位按數字型欄位排序實現方法SQL字元排序
- 在 Laravel 中自動維護 slug 欄位Laravel
- PbootCMS模板欄目頁如何呼叫當前欄目的文章boot
- 一文詳解MySQL如何同時自增自減多個欄位MySql
- MAC新手教程:如何快速調整Dock欄的大小Mac
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- Linux 中 awk命令如何擷取指定欄位的前幾個字元Linux字元
- 在SQL Server上測試事務日誌的自動增長(三)QOSQLServer
- 在SQL Server上測試事務日誌的自動增長(二)TGSQLServer
- 在SQL Server上測試事務日誌的自動增長(一)JPSQLServer
- arcgis欄位值計算(擷取A欄位前8位+按照順序計算8位)
- jquery/js透過當前URL對當前欄目連結高亮顯示jQueryJS
- 點選導航欄使當前欄目背景變色