當我嘗試重置身份時,出現「字符串或二進制數據將被截斷」錯誤。DBCC CHECKIDENT上的「字符串或二進制數據將被截斷」
Declare @tableNameWithSchema varchar(max)
SET @tableNameWithSchema = '[' + @table_schema + '].[' + @tablenamee + ']'
DBCC CHECKIDENT (@tableNameWithSchema, RESEED, 0)
你能幫我嗎?
當我嘗試重置身份時,出現「字符串或二進制數據將被截斷」錯誤。DBCC CHECKIDENT上的「字符串或二進制數據將被截斷」
Declare @tableNameWithSchema varchar(max)
SET @tableNameWithSchema = '[' + @table_schema + '].[' + @tablenamee + ']'
DBCC CHECKIDENT (@tableNameWithSchema, RESEED, 0)
你能幫我嗎?
通過試錯法,我發現了問題:DBCC CHECKIDENT
不採取varchar(max)
。它應該是varchar(100)
。雖然我不明白爲什麼MAX
是錯誤的。如果有人知道爲什麼請讓我們知道。
下面的代碼工作:
declare @tableNameWithSchema varchar(100)
SET @tableNameWithSchema = '[' + @table_schema + '].[' + @tablenamee + ']'
DBCC CHECKIDENT (@tableNameWithSchema, RESEED, 0)
我保持這個職位,以便它可能對別人有用。
您使用的是哪種SQL Server版本?我只是用SS2012 Express檢查了我的平臺,並使用'VARCHAR(MAX)'正常工作。 –
@TT。它是SQL Server 2012.你的意思是你使用了MAX並且它工作了嗎? –
是的,我同時使用了'DBCC'命令('NORESEED'和'RESEED'),用'VARCHAR(MAX)'類型的變量運行它們,我沒有收到任何錯誤消息。 –
Declare @tableNameWithSchema varchar(max),@table_schema VARCHAR(100) = 'dbo',@tablename VARCHAR(100) = 'Your_TableName'
SET @tableNameWithSchema = '[' + @table_schema + '].[' + @tablename + ']'
DBCC CHECKIDENT (@tableNameWithSchema, RESEED,0)
您確定發生此錯誤嗎?因爲你顯然沒有顯示整個查詢。 – ZLK
'QUOTENAME'是一種內置函數,用於轉義標識符,比自己添加分隔符更方便,更可靠。 –
@ZLK是的,這不是一個完整的查詢,但我確定它來自這條線。我正在查詢數據庫的所有表並重置循環中的標識。我已經發布了答案。 –