2016-11-08 34 views
0

當我嘗試重置身份時,出現「字符串或二進制數據將被截斷」錯誤。DBCC CHECKIDENT上的「字符串或二進制數據將被截斷」

Declare @tableNameWithSchema varchar(max) 
SET @tableNameWithSchema = '[' + @table_schema + '].[' + @tablenamee + ']' 
DBCC CHECKIDENT (@tableNameWithSchema, RESEED, 0) 

你能幫我嗎?

+1

您確定發生此錯誤嗎?因爲你顯然沒有顯示整個查詢。 – ZLK

+1

'QUOTENAME'是一種內置函數,用於轉義標識符,比自己添加分隔符更方便,更可靠。 –

+0

@ZLK是的,這不是一個完整的查詢,但我確定它來自這條線。我正在查詢數據庫的所有表並重置循環中的標識。我已經發布了答案。 –

回答

1

通過試錯法,我發現了問題:DBCC CHECKIDENT不採取varchar(max)。它應該是varchar(100)。雖然我不明白爲什麼MAX是錯誤的。如果有人知道爲什麼請讓我們知道。

下面的代碼工作:

declare @tableNameWithSchema varchar(100) 
SET @tableNameWithSchema = '[' + @table_schema + '].[' + @tablenamee + ']' 
DBCC CHECKIDENT (@tableNameWithSchema, RESEED, 0) 

我保持這個職位,以便它可能對別人有用。

+0

您使用的是哪種SQL Server版本?我只是用SS2012 Express檢查了我的平臺,並使用'VARCHAR(MAX)'正常工作。 –

+0

@TT。它是SQL Server 2012.你的意思是你使用了MAX並且它工作了嗎? –

+0

是的,我同時使用了'DBCC'命令('NORESEED'和'RESEED'),用'VARCHAR(MAX)'類型的變量運行它們,我沒有收到任何錯誤消息。 –

0
Declare @tableNameWithSchema varchar(max),@table_schema VARCHAR(100) = 'dbo',@tablename VARCHAR(100) = 'Your_TableName' 
SET @tableNameWithSchema = '[' + @table_schema + '].[' + @tablename + ']' 
DBCC CHECKIDENT (@tableNameWithSchema, RESEED,0) 
+0

因爲我已經宣佈了這些變量。 –

+0

它正在工作。您運行此查詢時遇到了什麼錯誤 – Mansoor

+0

「字符串或二進制數據將被截斷」 –

相關問題