如何让SQL Server 2008r2显示错误信息?

25

我正在运行一个插入脚本,该脚本应该将13,381行数据从SSMS插入到一个空的数据库中。但它告诉我“查询完成时出现错误”,并且只插入了13357行。

错误列表中没有显示任何内容。我该如何找到脚本中的错误?

谢谢!


我之前也遇到了类似的问题,似乎是因为批量太大了。我将批处理分成了4个片段,并使用GO语句运行,现在它可以正常工作而不会失败了。 - axk
1个回答

37

试试这个:

begin try

    --your inserts here

end try
begin catch
    --returns the complete original error message as a result set
    SELECT 
        ERROR_NUMBER() AS ErrorNumber
        ,ERROR_SEVERITY() AS ErrorSeverity
        ,ERROR_STATE() AS ErrorState
        ,ERROR_PROCEDURE() AS ErrorProcedure
        ,ERROR_LINE() AS ErrorLine
        ,ERROR_MESSAGE() AS ErrorMessage

    --will return the complete original error message as an error message
    DECLARE @ErrorMessage nvarchar(400), @ErrorNumber int, @ErrorSeverity int, @ErrorState int, @ErrorLine int
    SELECT @ErrorMessage = N'Error %d, Line %d, Message: '+ERROR_MESSAGE(),@ErrorNumber = ERROR_NUMBER(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE(),@ErrorLine = ERROR_LINE()
    RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState, @ErrorNumber,@ErrorLine)
end catch

2
如果在RAISERROR的末尾添加"WITH LOG",它将在SQL Server应用程序日志中放置一个错误副本。请注意这些规则:"将错误记录在Microsoft SQL Server数据库引擎实例的错误日志和应用程序日志中。在错误日志中记录的错误目前仅限于最大440个字节。只有sysadmin固定服务器角色的成员或具有ALTER TRACE权限的用户才能指定WITH LOG。" - RC_Cleland
当我打开了15个SQL文本编辑器面板时,出现了一个没有任何信息的错误消息。我关闭了所有的SQL文本编辑器面板,然后打开脚本运行,问题得到解决。 - dankyy1
这个脚本已经执行了,但是55分钟后出现了以下错误:在向服务器发送请求时发生了传输级错误。(提供程序: TCP Provider, 错误: 0 - 远程主机强制关闭了一个现有的连接。) - Shaiju T
@stom,这是一个互联网连接问题。 - lukejkw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接