我最近使用 - EXEC sp_rename '<source table name>', '<destination table name>'
重命名现有表并希望在我们的一台实时服务器上执行相同的操作。使用此过程重命名表有什么问题吗?我问这个是因为我们的一位 DBA 说在实时服务器上使用这个过程会有问题。
4 回答
没有引用您要重命名的表吗?那将是我认为重命名表不会产生影响的唯一实例。但是,如果该表没有被任何东西引用,那么该表的目的是什么?
您可以在此处阅读有关 sp_rename 的更多信息:http: //msdn.microsoft.com/en-us/library/ms188351.aspx
特别注意以下几点:
重命名表或列等对象不会自动重命名对该对象的引用。您必须手动修改任何引用重命名对象的对象。例如,如果重命名表列并且触发器中引用了该列,则必须修改触发器以反映新列名。在重命名对象之前,使用 sys.sql_expression_dependencies 列出对象的依赖关系。
使用该过程重命名表没有重大问题。您唯一需要记住的是,在执行该命令时,应用于该表的锁将不允许您查询数据,但这应该只需要几毫秒,所以您应该没问题.
PS 不要忘记修改您的视图、程序、功能等 :)
以下是微软官方网站中描述的唯一注意事项。
更改对象名称的任何部分都可能破坏脚本和存储过程。我们建议您不要使用此语句重命名存储过程、触发器、用户定义的函数或视图;相反,删除对象并使用新名称重新创建它。
更多详情请访问:http: //msdn.microsoft.com/en-us/library/ms188351.aspx
仅当我们确定所有依赖的 SP、View 功能不受影响时,才建议使用EXEC sp_rename 。确保您更改或删除了依赖对象。
也许您的 DBA 可以分享他/她关注的细节。对于引用该表的任何对象,重命名表当然是一个重大更改,因此您需要执行尽职调查以确保更改依赖对象以使用新名称。重命名操作还需要一个简短的模式修改锁,并使现有的引用缓存计划无效,因此如果表被大量使用,请注意这一点。