【问题标题】:How do I get SQL server 2008r2 to show me the Errors?如何让 SQL Server 2008r2 向我显示错误?
【发布时间】:2010-12-03 16:47:23
【问题描述】:

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

错误列表中没有显示任何内容。如何定位脚本中的错误?

谢谢!

【问题讨论】:

  • 我刚刚遇到了类似的问题,显然是因为批量太大。我已经用 GO 语句将我的批次分成 4 个部分,但它不能正常工作而不会失败。

标签: sql sql-server sql-server-2008 sql-server-2008-r2


【解决方案1】:

试试这个:

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

【讨论】:

  • 如果您在 RAISERROR 末尾添加“WITH LOG”,它将在 SQL Server 应用程序日志中放置一份错误副本。请注意这些规则“在错误日志和 Microsoft SQL Server 数据库引擎实例的应用程序日志中记录错误。错误日志中记录的错误当前限制为最大 440 字节。只有 sysadmin 固定服务器的成员角色或具有 ALTER TRACE 权限的用户可以指定 WITH LOG。"
  • 当 15 sql 文本编辑器面板打开时,我收到此错误消息但没有任何信息,我关闭了所有 sql 文本编辑器面板并打开脚本以运行和工作..
  • 这执行了脚本,但 55 分钟后出现此错误:A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
  • @stom 这是一个互联网连接问题。
猜你喜欢
  • 2018-05-19
  • 2018-05-14
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
相关资源
最近更新 更多