4
我補種標識列是這樣的:補種SQL服務器標識列
EXEC sp_MSforeachtable "DBCC CHECKIDENT ('?', RESEED, 0)"
查詢扔下我一個錯誤,如果有表中沒有身份。但是我仍然需要爲數據庫中所有具有身份的表格重新設置身份。 (如果沒有身份證明,請不要拋出錯誤)
我補種標識列是這樣的:補種SQL服務器標識列
EXEC sp_MSforeachtable "DBCC CHECKIDENT ('?', RESEED, 0)"
查詢扔下我一個錯誤,如果有表中沒有身份。但是我仍然需要爲數據庫中所有具有身份的表格重新設置身份。 (如果沒有身份證明,請不要拋出錯誤)
所有表格是否真的是空的?
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql = @sql + N'DBCC CHECKIDENT('''
+ QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
+ '.' + QUOTENAME(OBJECT_NAME([object_id]))
+ ''', RESEED, 0);' + CHAR(13) + CHAR(10)
FROM sys.columns
WHERE is_identity = 1;
PRINT @sql;
-- EXEC sp_executesql @sql;
補種所有表,在一個線路上有一個標識列0:
exec sp_MSforeachtable 'dbcc checkident(''?'', reseed, 0)', @whereand='and exists(select 1 from sys.columns c where c.object_id = o.id and is_identity = 1)'
檢查標識信息:當前標識值 '33798',當前列值 '0'。 DBCC執行完成。如果DBCC打印錯誤消息,請聯繫您的系統管理員。 檢查身份信息:當前身份值'3359',當前列值'0'。 DBCC執行完成。如果DBCC打印錯誤消息,請聯繫您的系統管理員。
太好了。謝謝! – user194076
此代碼在具有計算列的表上使用它們時會拋出錯誤「DELETE失敗,因爲以下SET選項具有不正確的設置:'QUOTED_IDENTIFIER'」。任何想法如何改變上面的腳本,使其使用計算列(也顯然發生在索引視圖,篩選索引,查詢通知,空間索引操作和XML數據類型方法)? – Marchy
@Marchy,當你創建這些表時,你有'SET QUOTED_IDENTIFIER OFF'嗎?您是否嘗試在腳本的開始處添加SET QUOTED_IDENTIFIER ON;(在'DECLARE'應該沒問題之前)? –