【问题标题】:Altering a stored procedure not throwing "Invalid column name" error when that particular column is removed from the table in SQL Server从 SQL Server 中的表中删除特定列时,更改存储过程不会引发“无效的列名”错误
【发布时间】:2020-04-28 15:30:46
【问题描述】:

我从存储过程中引用的表中删除了一个列。当我更改该存储过程时,没有错误,但在执行时,出现错误

列名无效

被抛出。

我正在使用 SSMS 2017

【问题讨论】:

  • 请分享您编译时收到的信息。
  • 编译 SP 时“命令成功完成”

标签: sql sql-server-2017 ssms-2017


【解决方案1】:

您正在寻找称为“模式绑定”的功能。这意味着如果对象在视图或存储过程中被引用,则无法更改其架构。

这是在依赖级别而不是在原始对象上处理的。从SCHEMABINDING 上的文档开始。

实际上,这意味着以下过程:

  1. 更改对象(即表格)。
  2. 获取架构绑定错误。
  3. 在所有引用原始对象的对象上删除架构绑定选项。
  4. 修改原始对象。
  5. 修改依赖对象。
  6. 确保架构绑定重新“在”依赖对象上。

这有点麻烦,但它有助于强制执行数据库依赖关系。

【讨论】:

  • 我们是否有理由相信 OP 正在使用本机编译的存储过程,这是 SCHEMABINDING 实际适用的唯一类型? (而且它也是强制性的,所以他们已经拥有它)
猜你喜欢
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多