前段时间做过这么一件事情,把原本放在c盘的所有数据库(除了sql server系统文件外)文件Move到D盘,主要是为了方便后续管理以及减少磁盘I/O阻塞(C,D是2个独立磁盘)。

脚本很简单,在此只是记录下来,以免以后忘记,也方便复用:

这个脚本只有2个参数需要输入,即:目标数据库名字和目标目录

USE master
GODECLARE@DBName sysname,@DestPath varchar(256)
DECLARE @DB table(name sysname,physical_name sysname)BEGIN TRYSELECT@DBName = 'TargetDatabaseName',   --input database name@DestPath = 'D:\SqlData\'         --input destination path-- kill database processes
DECLARE @SPID varchar(20)
DECLARE curProcess CURSOR FORSELECT spid
FROM sys.sysprocesses
WHERE DB_NAME(dbid) = @DBNameOPEN curProcessFETCH NEXT FROM curProcess INTO @SPIDWHILE @@FETCH_STATUS = 0BEGINEXEC('KILL ' + @SPID)FETCH NEXT FROM curProcessEND
CLOSE curProcess
DEALLOCATE curProcess-- query physical name
INSERT @DB(name,physical_name)
SELECTA.name,A.physical_name
FROM sys.master_files A
INNER JOIN sys.databases BON A.database_id = B.database_idAND B.name = @DBName
WHERE A.type <=1--set offline
EXEC('ALTER DATABASE ' + @DBName + ' SET OFFLINE')--move to dest path
DECLARE@login_name sysname,@physical_name sysname,@temp_name varchar(256)
DECLARE curMove CURSOR FOR
SELECTname,physical_name
FROM @DB
OPEN curMoveFETCH NEXT FROM curMove INTO @login_name,@physical_nameWHILE @@FETCH_STATUS = 0BEGINSET @temp_name = RIGHT(@physical_name,CHARINDEX('\',REVERSE(@physical_name)) - 1)EXEC('exec xp_cmdshell ''move "' + @physical_name + '" "' + @DestPath + '"''')EXEC('ALTER DATABASE ' + @DBName + ' MODIFY FILE ( NAME = ' + @login_name+ ', FILENAME = ''' + @DestPath + @temp_name + ''')')FETCH NEXT FROM curMove INTO @login_name,@physical_nameEND
CLOSE curMove
DEALLOCATE curMove-- set online
EXEC('ALTER DATABASE ' + @DBName + ' SET ONLINE')-- show result
SELECTA.name,A.physical_name
FROM sys.master_files A
INNER JOIN sys.databases BON A.database_id = B.database_idAND B.name = @DBName
END TRY
BEGIN CATCHSELECT ERROR_MESSAGE() AS ErrorMessage
END CATCH
GO

转载于:https://www.cnblogs.com/aarond/archive/2013/03/29/sqlserver.html

移动Sql Server数据库的脚本相关推荐

  1. 编写SQL Server数据库对象脚本的方法

    In this article, we will explore various ways for scripting SQL Server database objects. 在本文中,我们将探索编 ...

  2. windows服务器系统巡检脚本,sql server 数据库巡检脚本

    我司数据库一季度巡检一次,所以经常用到下面脚本 --1.查看数据库版本信息 select @@version --2.查看所有数据库名称及大小 exec sp_helpdb --3.查看数据库所在机器 ...

  3. SQL Server 数据库巡检脚本

    --1.查看数据库版本信息 select @@version --2.查看所有数据库名称及大小 exec sp_helpdb --3.查看数据库所在机器的操作系统参数 exec master..xp_ ...

  4. SQL Server数据库中使用sql脚本删除指定表的列

    在SQL Server数据库中删除某一列,使用数据库管理工具直接可视化操作是很简单的,但是如果要用sql脚本呢?可能你会说很简单,直接用 ALTER TABLE [要删除的字段所在的表名] DROP ...

  5. 利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法)

    利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法) 安装好Navicat Premium,SQL Serve ...

  6. 从SQL Server数据库转到Oracle数据库的数据脚本处理

    在我们很多情况下的开发,为了方便或者通用性的考虑,都首先考虑SQL Server数据库进行开发,但有时候客户的生产环境是Oracle或者其他数据库,那么我们就需要把对应的数据结构和数据脚本转换为对应的 ...

  7. sql server数据库备份单个表的结构和数据生成脚本

    1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...

  8. powershell连接数据库_PowerShell 连接SQL Server 数据库

    PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本.工作中整理的一小段脚本,后来没有用上,先记录在这里: 建立数据库连接 查询返回一个DataTatble对象 执 ...

  9. 《转》VMware vSphere 5.1 学习系列之四:安装 SQL Server 数据库

    为什么80%的码农都做不了架构师?>>>    目 录 一.    vCenter Server数据库的配置要求    1 准备 vCenter Server 数据库    1 vC ...

最新文章

  1. 金邦黑金刚4G内存 VS Vista系统
  2. 山寨上网本溃败的两点教训
  3. [android] 练习使用ListView(一)
  4. 成功解决ModuleNotFoundError: No module named ‘sklearn.lda‘
  5. SpriteKit在复制节点时留了一个巨坑给开发者,需要开发者手动把复制节点的isPaused设置为false...
  6. USACO-Section1.5 Mother's Milk (深度优先搜索)
  7. win11开始菜单如何分组 Windows11开始菜单进行分组的设置方法
  8. 牛津词典 2018 年度词汇 ——「有毒」!
  9. Python 贪吃蛇 代码
  10. 太拼了!张朝阳的一张作息表刷爆朋友圈
  11. 批量删除文件名前的数字编号
  12. 排序算法之---希尔排序(一看你就懂滴)
  13. 工作半年后,我总结了这十点工作经验!
  14. 生产力工具评测:云笔记、离线笔记、云 Office、Markdown 编辑器
  15. V8源码边缘试探-黑魔法指针偏移
  16. coreldraw怎么画猴子_小猴子的画法
  17. Linux监控服务之zabbix
  18. 自由了!在字节跳动做码农6年后,28岁郭宇宣布退休!
  19. STMF103定时器
  20. 记一次Mysql并发死锁,引出的问题及讨论

热门文章

  1. 一个程序来比较cuda/c在GPU/CPU的运行效率
  2. GitLab CI/CD
  3. python常见的文件操作:打开、创建等
  4. STL-bitset源码解析
  5. 2021年阳光高考成绩查询,高考攻略 | 2021年阳光高考月历来了!
  6. 天线端口和参考信号支持的多端口
  7. 怎么把PPT变成word文档
  8. HDU-1028 Ignatius and the Princess III(生成函数)
  9. [BZOJ1222/Luogu2224][HNOI2001]产品加工
  10. 比MySQL快6倍 深度解析国内首个云原生数据库POLARDB的“王者荣耀”