【发布时间】:2020-05-26 12:48:20
【问题描述】:
我找到了一些示例,其中删除或更改了存储过程以防万一。
但是如何编写一个严格执行以下操作的 T-SQL 批处理脚本:
- 检查存储过程是否存在:
- 如果它存在,则脚本什么都不做 - 我不想放弃并重写或更改现有程序,因为它可能有其他人所做的更改。此外,脚本不应因错误而中止,因为它可能是较大批量更改的一部分。
- 如果它不存在,则只能使用我的代码创建一个新过程
?
【问题讨论】:
-
得到错误是否足够好?因为如果您运行
create procedure语句并且该过程已经存在,那么 SQL Server 将引发错误“数据库中已经存在一个名为“您的过程名称”的对象。”... -
你提出了一个很好的观点@ZoharPeled。
-
它需要是原子的吗?如果是这样,并且如果只有您的代码将在此 SP 的沙箱中播放,您可能需要使用 application lock 来保护操作免受多次调用。
-
它可能有其他人所做的更改您需要一个源代码控制系统,这样更改/版本就不会丢失。以及不允许对代码进行随机、未记录、未审查和未测试的更改的变更管理流程。
-
@SMor 你是对的。不幸的是,有时生活很粗糙,一个数据库可能由两个不同的团队维护,他们互相抛出随机的 SQL 脚本。
标签: sql-server tsql