1

我有一个数据库,其中存储过程的数量非常多。但是有一些存储过程我还没有在存储过程级别启动事务。

现在我想以自动化的方式为这些存储过程放置事务。目前我正在使用 PowerShell 来执行此操作。

但问题是我可以获得存储过程的定义,但我无法获取存储过程中的各个 SQL 语句,以便我可以编写一些事务回滚/提交条件

例如如果上述交易失败@@errorcount <> 0 then rollback

任何人都可以让我知道如何实现这一点,或者有没有其他方法可以做到这一点?如果我可以拆分 SQL 语句(在存储过程中),我可以在 PowerShell 中编写一些登录信息来操作存储过程

请帮忙

提前致谢

4

1 回答 1

0

它们存储为文本,因此要检查甚至更改正文作为语句,您需要一个parser。您可能Microsoft.Data.Schema.ScriptDom.dll使用 Visual Studio (和)也使用的解析器Microsoft.Data.Schema.ScriptDom.Sql.dll,它在您的 Visual Studio 安装中可用并且可以重新分发。我目前正在使用它们来检查某些 SQL 脚本是否不包含任何“不允许的”SQL 语句(当然,在我自己的上下文中是不允许的)并且它似乎有效。

话虽如此,我同意@RobertLDavis 的评论,这可能不像看起来那么容易,最好不要自动完成。此外,无论如何,您应该在之后查看所有更改。因此,您可能一开始就可以手动完成它们。

于 2012-05-02T05:39:55.463 回答