SQL Server如何在存储过程中存储SQL语句

时间:2012-05-02 03:40:06

标签: sql-server stored-procedures powershell

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

现在我想以自动方式为这些存储过程放置事务。目前我正在使用PowerShell这样做。

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

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

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

请帮忙

提前致谢

1 个答案:

答案 0 :(得分:0)

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

话虽如此,我同意@RobertLDavis的评论,这可能不像它看起来那么简单,最好不要自动完成。此外,无论如何, 应审查所有更改。因此,您可能首先可以手动完成它们。