我有一个数据库,其中存储过程的数量非常高。但是有很多存储过程我没有在存储过程级别启动事务。
现在我想以自动方式为这些存储过程放置事务。目前我正在使用PowerShell这样做。
但问题是我可以得到存储过程的定义,但是我无法在存储过程中获取单个SQL语句,以便我可以编写一些事务回滚/提交条件
例如,如果上述交易失败@@errorcount <> 0 then rollback
任何人都可以让我知道如何实现这一点,还是有其他方法可以做到这一点?如果我可以拆分SQL语句(在存储过程中),我可以在PowerShell中编写一些登录来操作存储过程
请帮忙
提前致谢
答案 0 :(得分:0)
它们存储为文本,因此要检查甚至更改正文作为语句,您需要parser。您可以get somewhere使用Visual Studio也使用的解析器(Microsoft.Data.Schema.ScriptDom.dll
和Microsoft.Data.Schema.ScriptDom.Sql.dll
),它可以与Visual Studio安装一起使用,可以是redistributed。我正在使用它们来检查某些SQL脚本是否包含任何“不允许的”SQL语句(当然,在我自己的上下文中不允许)它似乎有用。
话虽如此,我同意@RobertLDavis的评论,这可能不像它看起来那么简单,最好不要自动完成。此外,无论如何, 应审查所有更改。因此,您可能首先可以手动完成它们。