移动Sql Server数据库的脚本
前段时间做过这么一件事情,把原本放在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数据库的脚本相关推荐
- 编写SQL Server数据库对象脚本的方法
In this article, we will explore various ways for scripting SQL Server database objects. 在本文中,我们将探索编 ...
- windows服务器系统巡检脚本,sql server 数据库巡检脚本
我司数据库一季度巡检一次,所以经常用到下面脚本 --1.查看数据库版本信息 select @@version --2.查看所有数据库名称及大小 exec sp_helpdb --3.查看数据库所在机器 ...
- SQL Server 数据库巡检脚本
--1.查看数据库版本信息 select @@version --2.查看所有数据库名称及大小 exec sp_helpdb --3.查看数据库所在机器的操作系统参数 exec master..xp_ ...
- SQL Server数据库中使用sql脚本删除指定表的列
在SQL Server数据库中删除某一列,使用数据库管理工具直接可视化操作是很简单的,但是如果要用sql脚本呢?可能你会说很简单,直接用 ALTER TABLE [要删除的字段所在的表名] DROP ...
- 利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法)
利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法) 安装好Navicat Premium,SQL Serve ...
- 从SQL Server数据库转到Oracle数据库的数据脚本处理
在我们很多情况下的开发,为了方便或者通用性的考虑,都首先考虑SQL Server数据库进行开发,但有时候客户的生产环境是Oracle或者其他数据库,那么我们就需要把对应的数据结构和数据脚本转换为对应的 ...
- sql server数据库备份单个表的结构和数据生成脚本
1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...
- powershell连接数据库_PowerShell 连接SQL Server 数据库
PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本.工作中整理的一小段脚本,后来没有用上,先记录在这里: 建立数据库连接 查询返回一个DataTatble对象 执 ...
- 《转》VMware vSphere 5.1 学习系列之四:安装 SQL Server 数据库
为什么80%的码农都做不了架构师?>>> 目 录 一. vCenter Server数据库的配置要求 1 准备 vCenter Server 数据库 1 vC ...
最新文章
- 金邦黑金刚4G内存 VS Vista系统
- 山寨上网本溃败的两点教训
- [android] 练习使用ListView(一)
- 成功解决ModuleNotFoundError: No module named ‘sklearn.lda‘
- SpriteKit在复制节点时留了一个巨坑给开发者,需要开发者手动把复制节点的isPaused设置为false...
- USACO-Section1.5 Mother's Milk (深度优先搜索)
- win11开始菜单如何分组 Windows11开始菜单进行分组的设置方法
- 牛津词典 2018 年度词汇 ——「有毒」!
- Python 贪吃蛇 代码
- 太拼了!张朝阳的一张作息表刷爆朋友圈
- 批量删除文件名前的数字编号
- 排序算法之---希尔排序(一看你就懂滴)
- 工作半年后,我总结了这十点工作经验!
- 生产力工具评测:云笔记、离线笔记、云 Office、Markdown 编辑器
- V8源码边缘试探-黑魔法指针偏移
- coreldraw怎么画猴子_小猴子的画法
- Linux监控服务之zabbix
- 自由了!在字节跳动做码农6年后,28岁郭宇宣布退休!
- STMF103定时器
- 记一次Mysql并发死锁,引出的问题及讨论
热门文章
- 一个程序来比较cuda/c在GPU/CPU的运行效率
- GitLab CI/CD
- python常见的文件操作:打开、创建等
- STL-bitset源码解析
- 2021年阳光高考成绩查询,高考攻略 | 2021年阳光高考月历来了!
- 天线端口和参考信号支持的多端口
- 怎么把PPT变成word文档
- HDU-1028 Ignatius and the Princess III(生成函数)
- [BZOJ1222/Luogu2224][HNOI2001]产品加工
- 比MySQL快6倍 深度解析国内首个云原生数据库POLARDB的“王者荣耀”