利用存储过程来重命名SQL Server数据库
最近遇到一个需要在多用户模式下重新命名数据库的Case, 因为数据库可能被其他用户使用,所以直接修改可能会失败。对于此种情况,我们可以等所有用户结束使用数据库时修改,或者是将数据库切换到单用户模式下进行操作。
有时候,我们在开发过程中需要直接把生产环境的数据库拿到开发环境来测试开发。我们可以直接重命名生产环境上的数据库。这样以来,即使你有些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
参考文献
- http://stackoverflow.com/questions/11014343/how-to-rename-database-in-multi-user-mode
- http://blog.sqlauthority.com/2007/09/19/sql-server-rename-database-to-new-name-using-stored-procedure-by-changing-to-single-user-mode/
利用存储过程来重命名SQL Server数据库的更多相关文章
- 解决修改重命名sql Server数据库名称
错误: 消息 5030,级别 16,状态 2,第 1 行无法用排他锁锁定该数据库,以执行该操作. 解决方法:(原理一样) 1.将数据库设置为单用户模式 (单用户模式指定一次只有一个用户可访问数据库,该 ...
- 利用PowerDesigner绘制PDM生成SQL Server数据库
PowerDesigner是个很强大的建模工具,可以利用它绘制各种图形,本文利用该工具绘制PDM,进而生成SQL Server数据库. 比如绘制一个简单的学生选课.教师授课管理系统的PDM: pk表示 ...
- Python 学习 第17篇:从SQL Server数据库读写数据
在Python语言中,从SQL Server数据库读写数据,通常情况下,都是使用sqlalchemy 包和 pymssql 包的组合,这是因为大多数数据处理程序都需要用到DataFrame对象,它内置 ...
- Sql Server数据库之存储过程
阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储过程 简单来说,存储过程就是一条或 ...
- 基于Spring Boot,使用JPA调用Sql Server数据库的存储过程并返回记录集合
在上一篇<基于Spring Boot,使用JPA操作Sql Server数据库完成CRUD>中完成了使用JPA对实体数据的CRUD操作. 那么,有些情况,会把一些查询语句写在存储过程中,由 ...
- 在易语言中调用MS SQL SERVER数据库存储过程方法总结
Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...
- SQL Server数据库存储过程中拼接字符串注意的问题
在SQL Server数据库中书写复杂的存储过程时,一般的做法是拼接字符串,最后使用EXEC sp_executesql '拼接的字符串' 查询出结果. 先看一段代码: -- ============ ...
- SQL Server 数据库设计、命名、编码规范
https://blog.csdn.net/songguozhi/article/details/5858159 SQL Server 数据库设计.命名.编码规范
- SQL Server数据库存储过程的异常处理
SQL Server数据库存储过程的异常处理是非常重要的,明确的异常提示能够帮助我们快速地找到问题的根源,节省很多时间.本文我们就以一个插入数据为例来说明SQL Server中的存储过程怎么捕获异常的 ...
随机推荐
- JavaScript--DOM进阶(20)
// DOM自身存在很多类型,在上一章中有介绍,比如Element类型:表示的是元素节点;再比如Text类型;表示的是文本节点; 一 DOM类型 类型名 说明 Node 表示所有类型值的统一接口,IE ...
- forever 启动nodejs
forever可以看做是一个nodejs的守护进程,能够启动,停止,重启我们的app应用. 1.全局安装 forever // 记得加-g,forever要求安装到全局环境下 sudo npm ins ...
- js-ES6学习笔记-Class(2)
1.与函数一样,类也可以使用表达式的形式定义. const MyClass = class Me { getClassName() { return Me.name; } }; 这个类的名字是MyCl ...
- 【代码笔记】iOS-TableViewOfTwoSecton
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- kotlin3-IdeaIU编辑器字体自动放大缩小
- 前端开发笔记(2)css基础(上)
CSS介绍 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS ...
- PeopleSoft单点登录工作原理
单点登录是指用户在仅通过一次身份验证后,可以在多个应用程序中自由切换. 这意味着用户只需要一次登录信息,只要他点击指向其他应用程序的链接,安全信息就会自动从一个应用程序传递到另一个应用程序,用户就不会 ...
- 8.2,常用模块介绍:sys,os,time,random
sys: 介绍:主要包含涉及python编译器与系统交互的函数. 常用函数: import sys print(sys.argv)#本文件名,已经运行该程序时的参数 #[如在命令窗口中python3 ...
- rdlc里面的textbox怎么赋值
通过传递参数来实现 当前在rdlc页面,ctrl+alt+d,打开report data侧边栏 点击report data的Parameters文件夹,右键,添加新的参数,命名.定义类型,譬如命名为R ...
- Google 和 Facebook 如何大规模处理 IT 事件管理 —— 2016 SRE 大会之我见
[编者按]本文作者为 Maria Arbisman,主要介绍 Google 与 Facebook 两大巨头是如何大规模处理 IT 事件管理.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 2 ...