我做了一些搜索,但没有找到解决我的问题的方法。
我从一些用户不关心命名 PK 约束、外键或索引的数据库开始,以系统生成的名称结束,例如PK__CarRenta__3213E83F2E5BD364
. 在mssqltips上,Aaron Bertrand 发表了一篇关于如何使用存储过程重命名这些对象的精彩文章。
太好了……但是我如何避免用户或应用程序创建没有名称的新对象,然后由 SQL Server 为其分配系统生成的名称?
我已经读过同一位伟大的 Aaron Bertrand撰写的关于如何使用基于策略的管理来执行命名约定的文章。然而,这似乎只适用于马已经狂奔(或对象已创建)后的通知。
你能想出一种方法来自动回滚试图创建一个没有名字的对象的语句吗?
执行此操作的最简单方法(尽管它让我有点不寒而栗)是使用带有 EVENTDATA 的数据库级 DDL 触发器。这里没有针对约束的具体内容,因此您必须发挥您的想象力(取决于您实际尝试完成的目标)与 DDL 事件组和一些手动解析。这是一个让您入门的示例。