利用存储过程来重命名SQL Server数据库

最近遇到一个须要在多用户模式下从新命名数据库的Case, 由于数据库可能被其余用户使用,因此直接修改可能会失败。对于此种状况,咱们能够等全部用户结束使用数据库时修改,或者是将数据库切换到单用户模式下进行操做。sql

有时候,咱们在开发过程当中须要直接把生产环境的数据库拿到开发环境来测试开发。咱们能够直接重命名生产环境上的数据库。这样以来,即便你有些SQL没有保存,也能够直接从原来的数据库中抓取。数据库

有两个重要的细节咱们必须注意测试

  • 当重名名数据库时, filegroup的名字和数据文件名(.mdf,.ldf)并不会发生变化。
  • 用户必须切换到Master数据库上下文环境中,并具备SA的权限才能够重名名数据库。
USE master;
GO
-- 将数据库设置为单用户模式
EXEC sp_dboption AdventureWorks, 'Single User', True
GO
-- 重命名数据库
EXEC sp_renamedb 'AdventureWorks', 'AdventureWorks_New'
GO
-- 在将数据库设置回多用户模式
EXEC sp_dboption AdventureWorks_New, 'Single User', False
GO

参考文献

相关文章
相关标签/搜索