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