我有一个数据库,其中存储过程的数量是非常高的。但是有一些存储过程没有在存储过程级别启动事务。如何SQL Server存储在存储过程中的SQL语句
现在我想把交易,这些存储过程以自动方式。目前我正在使用PowerShell来执行此操作。
但问题是,我可以得到存储过程的定义,但我不能得到单个SQL语句在存储过程中,这样我可以写一些事务回滚/提交条件
例如,如果上述交易失败@@errorcount <> 0 then rollback
任何人都可以请让我知道如何做到这一点,还是有其他的方法来做到这一点?如果我可以分裂SQL语句(这是在存储过程中)我可以写在PowerShell的登录操作的存储过程
请帮
在此先感谢
这听起来像一个非常糟糕的主意。我不会以编程方式执行此操作。编写能够决定放置这些语句的适当位置的逻辑非常困难。除此之外,最安全的方法是绑定到Visual Studio中的查询分析器引擎,并让它解析过程代码并将其分解为单独的语句。 –
另外,你是如何从数据库中提取存储的proc代码?你不使用源代码控制系统? –
在proc中添加大量的BEGIN TRAN-COMMIT TRAN逻辑通常会导致更多的阻塞,并可能导致命令超时和更频繁的死锁。如果COMMIT被遗漏在某个地方,那么交易可以保持开放并且不会被提交,直到通过某种方式(可能强行)关闭连接并且所完成的工作被丢弃并丢失。如果你正在编程创建新的'样板'CRUD程序,那将是一回事,但我必须投入第三次(第四次)投票。这不是你最好的主意。 –