重命名列而不破坏脚本和存储过程

Pரத*_*ீப் 8 sql sql-server triggers rename

我想将列名修改为表中的新名称

但这里的问题我想手动修改column name现在TriggersSP's.

有没有更好的方法来做到这一点.

rename一列正在使用此

sp_RENAME 'Tablename.old_Column', 'new_column' , 'COLUMN';
Run Code Online (Sandbox Code Playgroud)

同样,我怎么能做到triggersSP's.?没有打开每个脚本?

Zoh*_*led 2

嗯,有很多第三方工具承诺这种类型的“安全重命名”,有些是免费的,有些不是:

我不得不说,我从未尝试过任何这些特定工​​具来完成特定任务,但我确实对 SSDT 和 RedGate 的一些产品有一些经验,我认为它们是非常好的工具。我对 ApexSQL 一无所知。

另一种选择是尝试自己编写 sql 脚本,但是在开始之前需要考虑以下几点:

  • 可以从sql server外部直接访问你的表吗?我的意思是,是否有可能某些软件直接在该表上执行sql语句?如果是这样,当您重命名该列时可能会破坏它,并且没有 SQL 工具在这种情况下会提供帮助。
  • 你的sql脚本技能真的那么好吗?我认为自己对 sql server 很有经验,但我认为编写这样的脚本超出了我的能力。这对我来说并不是不可能,但可能需要花费太多的时间和精力才能得到我可以免费得到的东西。

如果您决定自己编写,有几篇文章可能会帮助您完成该任务:

首先,微软官方文档sys.sql_expression_dependencies
其次,一篇名为“查找 SQL Server 对象依赖关系的不同方法”的文章是由一位拥有 13 年经验的 DBA 撰写的,最后但并非最不重要的一点是StackExchange 数据库管理员网站上的一个相关问题。

当然,您可以采用戈登·利诺夫在他的评论中建议的安全方式,或者使用他的答案中建议的诸如目标数据之类的同义词,但是根据我的理解,您将必须手动修改所有列依赖项,这就是您想要避免的。