问题标签 [raiserror]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
27834 浏览

sql - 如何在单个进程中模拟 SQL Server 中的死锁?

我们的客户端代码检测到死锁,等待一段时间,然后重试请求最多 5 次。重试逻辑根据错误号 1205 检测死锁。

我的目标是测试各种存储过程中的死锁重试逻辑和死锁处理。我可以使用两个不同的连接创建死锁。但是,我想在单个存储过程本身内部模拟死锁。

死锁会引发以下错误消息:

消息 1205,级别 13,状态 51,第 1 行
事务(进程 ID 66)在锁定资源上与另一个进程死锁,并已被选为死锁牺牲品。重新运行事务。

我看到此错误消息位于sys.messages

我无法使用以下方法引发此错误RAISERROR

消息 2732,级别 16,状态 1,第 1 行
错误号 1205 无效。该数字必须从 13000 到 2147483647,并且不能是 50000。

我们的死锁重试逻辑检查错误号是否为 1205。死锁需要与普通死锁具有相同的消息 ID、级别和状态。

有没有办法模拟死锁(使用 RAISERROR 或任何其他方式)并仅通过一个进程获得相同的消息编号?

我们的数据库使用 SQL 2005 兼容性,尽管我们的服务器从 2005 到 2008 R2 有所不同。

0 投票
1 回答
978 浏览

spring - Mybatis-Spring中如何捕获Sybase RAISERROR?

我试图从 Sybase 中的存储过程中捕获我的 Java 代码中的错误消息RAISERROR,但没有捕获任何内容,即使当我直接调用 proc 时,我可以看到错误被抛出。

我理解Mybatis-Spring

将 MyBatis 异常转换为 Spring DataAccessException

因此,我对我的 Mapper 类进行了编码:

我试图捕捉这两个异常,但没有捕捉到任何东西。

有没有人有任何想法?

谢谢,斯蒂芬

0 投票
1 回答
2254 浏览

sql-server-2008-r2 - SQL Server 跳过 RAISERROR

简单的代码。非常奇怪的行为,三重检查了这一点。@filePath并且@pathNVARCHAR(260)并且@existsINTdbo.WriteToFile将文件写入磁盘,在本例中为空文件。

当我第一次运行此代码并且@exists为 0 时,它会进入 if 块。文件按预期创建。证实了这一点。但是RAISERROR if 块中没有被调用。而是只RAISERROR调用 if 块的外部。

但是,如果我将第一个替换RAISERROR ('A')PRINT 'blabla'print 语句,则会按预期调用。

如果我@exists = 0用 1=1 替换并保持第一个不变,RAISERROR ('A')那么一切都会正常运行并RAISERROR ('A')调用第一个。

有人可以解释一下吗?

哦,是的,为什么

在一个全新的查询窗口中给我这个:

这是相同消息的 2 倍。也许我的 SQL 服务器配置不正确?

如果您有兴趣,我也会发布该WriteToFile程序,也许它会有所帮助,我从网上获得了这个程序,但它运行良好,但它可能会产生以下RAISERROR行为:

编辑:运行 SQL Server 2008 R2

0 投票
2 回答
3284 浏览

java - java可以处理MS SQL Server RAISEERROR命令引起的异常吗?

不幸的是,我被推到了一种情况,这使我使用 java 在 MS SQL Server 中执行一些存储过程。发生异常时,我在 SP 中使用 RAISEERROR 命令。问题是 java 似乎无法捕获这些异常。我的示例 SP:

我的Java代码:

SP 正常执行,但 java 中没有发现异常!

那么,java可以处理这些异常吗?我在这里做错了吗?

0 投票
1 回答
7595 浏览

sql - 来自 TSQL 中 Catch 块的 RAISERROR 传递给调用批处理 - 需要传递给调用应用程序

我一直在研究 TRY/CATCH 块,我对如何以我需要的方式传递错误有点困惑。从我读过的内容来看,如果我理解正确,SQL 中的 CATCH 块中的 RAISERROR 将被传递给调用批处理或调用应用程序。该应用程序正在运行一个存储过程,其中包含一个事务。该事务被包装在一个 TRY/CATCH 块中。在 CATCH 块中,如果事务中的某些内容失败导致它跳转到 CATCH,我将引发错误。如果通过 SSMS 运行该过程,则错误显示正常并且事务回滚。但是,如果应用程序调用存储过程并发生相同的错误,则应用程序永远不会知道错误,因此现在过程不会失败。

首先,我是否正确理解了 CATCH 中的 RAISERROR 是如何工作的?如果是这样,我怎样才能将该错误引发回调用应用程序?

我正在运行 Windows 7、SQL Server 2005

0 投票
2 回答
2856 浏览

sql-server - TRIGGER ROLLBACK 上的自定义消息?

我在 SQL Server 中有一个触发器,当条件发生时,我需要ROLLBACK它。问题是我需要设置自定义消息。

但它引发了2个错误

Msg 50100, Level 16, State 1, Procedure tU_COM_Proposta, Line 42
custom message
Msg 3609, Level 16, State 1, Line 1
事务在触发器中结束。该批次已中止。

我怎样才能让它只引发我的自定义错误,同时我需要回滚触发器的事务?

0 投票
1 回答
6577 浏览

java - java没有捕获ms sql存储过程引发错误

我的 SQL Server 2008 数据库中有一个存储过程,我正在开发一个使用 sqljdbc4 连接的 java 应用程序。一切正常,即使是过程调用,但有一件事 - 在某些情况下,java 不会捕获由过程引发的引发异常,并在调用时指定,如选择或更新(删除插入)

这是一个例子

在这种情况下,java 捕获异常

但是当我使用这样的选择时

或更新,java 继续执行而不捕获异常。就像它不等待程序结束一样。

所以我的问题是,我是否错误地使用了存储过程,或者它是 jdbc 驱动程序中的一个错误,还是它更喜欢使用 out 参数并离开这个策略;我用谷歌搜索了这个问题,没有找到任何东西。

就个人而言,我想使用引发的错误

0 投票
0 回答
105 浏览

asp.net - 验证时出现错误,我该如何退出

我有一个特定的网络表单,当用户点击

保存按钮它调用我的dbEngineClass中的函数 save() 。

现在,当用户输入重复数据时,我会引发某个错误并在网页中处理它

显示某个消息框,但之后我希望它退出课程而不是这样做

还要别的吗

但显然它将继续执行btnsave.click sub

如果出现错误,我如何退出课程或阻止单击方法继续?

这是我的代码:这是保存信息并引发事件的函数

这是我在网页中处理它的方式

现在,在此处理程序完成后,我需要它退出并且不要继续 btnSave.click

调用SaveNewCustomer() 子的处理程序,因为当它继续时它会清除所有

数据,我不想要那个

0 投票
0 回答
621 浏览

sql - 具有 >20 严重性和数据库权限的 RAISERROR

我正在尝试将 INSTEAD OF 触发器部署到 Sql Azure 数据库。除其他外,它可能会执行以下行:

Sql Server 中任何严重性大于或等于 20 的内容都需要“with log”命令,该命令需要 ALTER TRACE 权限。好的,没问题,除了我不知道如何授予我的 Sql Azure 用户运行它的权限。Sql Azure 不支持 sp_addrolemember,以下情况:

失败并显示此晦涩的消息:

消息 40520,级别 16,状态 1,行 1 此版本的 SQL Server 不支持安全类“服务器”。

谷歌搜索上述错误很少,而且 MSDN 的文档也很模糊。

0 投票
4 回答
38598 浏览

sql-server - 在 SQL Server 中使用 RAISERROR 引发自定义错误消息

在以前的版本中,我们在 t-sql 中引发了错误,例如:

在最新的 SQL Server 中,此语法已停用,并替换为 RaiseError () 语法。

我想要一个引发错误的通用方法,到目前为止我能想到的最好的方法是:

但是我不能用 sp_addmessage 为每条消息创建错误消息,因为有 1000 条消息。

使用自定义消息引发消息的更好方法是什么?