如何将查询的消息结果插入sql中的#temptable?

时间:2016-08-01 20:06:29

标签: sql-server-2008 tsql

当我在Management Studio中运行此命令时:

DBCC CHECKIDENT ('TBL_NAME', RESEED, 0);

输出是:

  

检查身份信息:当前身份值' 0',当前列值' 0'。
  DBCC执行完成。如果DBCC打印了错误消息,请与系统管理员联系。

我想获得该输出并将其插入#temptable,任何想法?

1 个答案:

答案 0 :(得分:1)

如果您打算获取特定表的最新生成标识并将其存储到临时表,从SQL Server 2008 R2开始,您可以使用IDENT_CURRENT函数,如下所示:

SELECT IDENT_CURRENT('TBL_NAME') AS CurrentIdentity
INTO #temptable

对于早期版本的SQL Server,您可以访问

SELECT IC.last_value AS CurrentIdentity
INTO #temptable
FROM sys.identity_columns IC
     INNER JOIN sys.objects O ON IC.object_id=O.object_id
WHERE O.object_id=OBJECT_ID('TBL_NAME')

通过OUTPUTBUFFER函数可以捕获DBCC或任何其他存储过程的PRINT输出,但有很多限制:

DBCC CHECKIDENT ('TBL_NAME', RESEED, 0);
CREATE TABLE #temptable TABLE ([Buffer] NVARCHAR(MAX))
INSERT @output
EXEC ('DBCC OUTPUTBUFFER(@@SPID)')
SELECT * FROM #temptable

除了故障排除之外,我强烈反对使用OUTPUTBUFFER。