Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 SQL Azure/SQL Server 2008-存储过程-如果在任何点出现错误,请不要插入_Sql Server 2008_Tsql_Transactions_Azure Sql Database - Fatal编程技术网

Sql server 2008 SQL Azure/SQL Server 2008-存储过程-如果在任何点出现错误,请不要插入

Sql server 2008 SQL Azure/SQL Server 2008-存储过程-如果在任何点出现错误,请不要插入,sql-server-2008,tsql,transactions,azure-sql-database,Sql Server 2008,Tsql,Transactions,Azure Sql Database,我想我有一个很简单的问题,但我需要一个明确的答案。我想不出测试我的想法的方法,因为它依赖于一个暂时的错误(我无法控制) SQL Azure容易出现暂时性错误、超时、拒绝连接等。有时在打开连接时,有时在执行查询时 我通过存储过程将一行插入SQLAzure(它基本上是一个消息传递系统,因此每条消息只应发送/插入一次) 如果发生暂时性错误,我的系统将等待几秒钟,然后重试。。。重复,直到存储过程执行时没有任何错误 我需要存储过程插入行并向我确认它已插入,或者完全失败而不插入它 目前,我发现当数据库遇到一

我想我有一个很简单的问题,但我需要一个明确的答案。我想不出测试我的想法的方法,因为它依赖于一个暂时的错误(我无法控制)

SQL Azure容易出现暂时性错误、超时、拒绝连接等。有时在打开连接时,有时在执行查询时

我通过存储过程将一行插入SQLAzure(它基本上是一个消息传递系统,因此每条消息只应发送/插入一次)

如果发生暂时性错误,我的系统将等待几秒钟,然后重试。。。重复,直到存储过程执行时没有任何错误

我需要存储过程插入行并向我确认它已插入,或者完全失败而不插入它

目前,我发现当数据库遇到一个非常糟糕的补丁时,一条消息可能会被发送几次

一个处理金融交易的系统会做什么

因为它只是一个insert语句,所以我认为在事务中包装它不会有任何效果,对吗


有谁能为我澄清一下,或者甚至给我指一些我自己应该阅读的文档吗?

假设过程中不止有一个insert(一些是在insert之后选择的?)
您可以在应用程序中启动事务。这样-如果您在应用程序中提交事务并成功,那么一切都会完成。

根据gbn的建议,我添加了一个额外的键,而不是标识,我可以使用它来识别重复项,并在插入之前检查此项。

请查看表上的唯一业务键是什么?我不是指身份:这不是一个商业关键。你需要这个来识别重复的…@JohnSaunders,我看不到你的point@gbn,谢谢,我按照您的建议添加了一个业务密钥,并使用它检查重复项。您是否阅读了链接?我的意思是你不应该使用签名。