重新开始SQLServer研究后的第一个想法,本来想写关于APPLY运算符的。
后来忽然发现虚拟机上的数据库名字起的不对,就想要写语句改一下数据库名,改名后发现不对,原来逻辑文件和物理文件都要改名的;
于是就想起来研究一下如何比较完整的“数据库改名”。
其实,问题主要就是集中在“逻辑文件”和“物理文件”的改名上;
通常情况下,我们创建数据库的时候,逻辑文件和物理文件名都是和数据库名字有关系的(一般都包含数据库名),改数据库名的时候最好连这两个也一起改掉。
于是就开始写代码了咯,当中的过程就不细说了,反正灰头土脸了几次,唉,丢人鸟~~~!~!~!
主要的步骤如下:
- STEP_1 修改逻辑文件名
- STEP_2 设置数据库为SINGLE_USER
- STEP_3 设置数据库为OFFLINE
- STEP_4 移动物理文件
- STEP_5 修改物理文件名
- STEP_6 设置数据库为ONLINE
- STEP_7 设置数据库为MULTI_USER
- STEP_8 修改数据库名
具体的代码如下:
其中,STEP_1、STEP_4、STEP_5是最重要的部分!
脚本说明:
- 上面的脚本在一个数据文件、一个日志文件的数据库上经过多次测试,可信性比较高;
- 还需要增加一些逻辑判断,如“是否要改名的数据库、数据文件已经存在”等等
- 多数据文件、多文件组的情况未测试