不使用模式绑定似乎关闭了编译器警告——直到运行时你才发现你破坏了什么。
好处是模式绑定对象可以保护数据库免受意外或故意更改的影响,这些更改可能会在以后破坏依赖关系。
保护的代价是维护更加复杂,因为模式绑定对象有时需要以特定顺序更改多个对象以实现简单的局部更改。此成本是相对的,因为如果没有模式绑定,更改可能会悄无声息地破坏一些以后需要更多维护的东西。
我认为收益大于成本,特别是对于变化不大(变化少维护少)或您不知道依赖关系(不熟悉所以风险大)的已建立数据库。
是否存在不应使用模式绑定的情况?
我没有看到不对数据库对象使用 SCHEMABINDING 的任何原因。就像保护您的物品一样安全。
显然,它有利有弊。
如果您不打算创建索引视图,那么您不需要视图的 SCHEMABINDING。
基本上,计划绑定
防止视图由于表结构的更改而变得无效,例如从表中删除列。
使 UDF 具有确定性——如使用 T-SQL UDF 上的 SCHEMABINDING 选项改进查询计划中所述
我看到的唯一缺点是,它会使更改表模式变得有点困难,即使它只是一个很小的更改,例如更改 NOT NULL 列以允许空值。