读书人

[回馈CSDN网友]贴个SQL小工具-移动数据

发布时间: 2012-04-09 13:41:25 作者: rapoo

[回馈CSDN网友]贴个SQL小工具--移动数据库物理文件
已经适用大多数情况(SQLServer2005/2008):

SQL code
USE masterGODECLARE        @DBName sysname,    @DestPath varchar(256)DECLARE @DB table(    name sysname,    physical_name sysname) BEGIN TRYSELECT     @DBName = 'FF',   --input database name    @DestPath = 'E:\' --input destination path--kill database processesDECLARE @SPID varchar(20)DECLARE curProcess CURSOR FORSELECT spid FROM sys.sysprocessesWHERE DB_NAME(dbid) = @DBNameOPEN curProcess    FETCH NEXT FROM curProcess INTO @SPID    WHILE @@FETCH_STATUS = 0    BEGIN            EXEC('KILL ' + @SPID)             FETCH NEXT FROM curProcess    ENDCLOSE curProcessDEALLOCATE curProcess--query physical nameINSERT @DB(    name,    physical_name)SELECT     A.name,     A.physical_nameFROM sys.master_files AINNER JOIN sys.databases B    ON A.database_id = B.database_id        AND B.name = @DBNameWHERE A.type <=1--set offlineEXEC('ALTER DATABASE ' + @DBName + ' SET OFFLINE')--move to dest pathDECLARE     @login_name sysname,    @physical_name sysname,    @temp_name varchar(256)DECLARE curMove CURSOR FORSELECT     name,    physical_nameFROM @DBOPEN curMove    FETCH NEXT FROM curMove INTO @login_name,@physical_name        WHILE @@FETCH_STATUS = 0        BEGIN            SET @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_name        ENDCLOSE curMoveDEALLOCATE curMove--set onlineEXEC('ALTER DATABASE ' + @DBName + ' SET ONLINE')--show resultSELECT     A.name,     A.physical_nameFROM sys.master_files AINNER JOIN sys.databases B    ON A.database_id = B.database_id        AND B.name = @DBNameEND TRYBEGIN CATCH    SELECT ERROR_MESSAGE() AS ErrorMessageEND CATCH


[解决办法]
太强大了吧?
支持.
[解决办法]
强烈建议MS +300分 :)
[解决办法]
探讨
强烈建议MS +300分 :)

[解决办法]
。。。
[解决办法]
前一天都在,楞是没发现,谢了
[解决办法]
先做个记号,呵呵
[解决办法]
执行了下:
SQL code
sp_configure 'show advanced options',1reconfiguregosp_configure 'xp_cmdshell',1reconfiguregosp_configure 'show advanced options',0reconfiguregoUSE masterGODECLARE        @DBName sysname,    @DestPath varchar(256)DECLARE @DB table(    name sysname,    physical_name sysname) BEGIN TRYSELECT     @DBName = 'TMP_DB',   --input database name    @DestPath = 'd:\A-' --input destination path--kill database processesDECLARE @SPID varchar(20)DECLARE curProcess CURSOR FORSELECT spid FROM sys.sysprocessesWHERE DB_NAME(dbid) = @DBNameOPEN curProcess    FETCH NEXT FROM curProcess INTO @SPID    WHILE @@FETCH_STATUS = 0    BEGIN            EXEC('KILL ' + @SPID)             FETCH NEXT FROM curProcess    ENDCLOSE curProcessDEALLOCATE curProcess--query physical nameINSERT @DB(    name,    physical_name)SELECT     A.name,     A.physical_nameFROM sys.master_files AINNER JOIN sys.databases B    ON A.database_id = B.database_id        AND B.name = @DBNameWHERE A.type <=1--set offlineEXEC('ALTER DATABASE ' + @DBName + ' SET OFFLINE')--move to dest pathDECLARE     @login_name sysname,    @physical_name sysname,    @temp_name varchar(256)DECLARE curMove CURSOR FORSELECT     name,    physical_nameFROM @DBOPEN curMove    FETCH NEXT FROM curMove INTO @login_name,@physical_name        WHILE @@FETCH_STATUS = 0        BEGIN            SET @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_name        ENDCLOSE curMoveDEALLOCATE curMove--set onlineEXEC('ALTER DATABASE ' + @DBName + ' SET ONLINE')--show resultSELECT     A.name,     A.physical_nameFROM sys.master_files AINNER JOIN sys.databases B    ON A.database_id = B.database_id        AND B.name = @DBNameEND TRYBEGIN CATCH    SELECT ERROR_MESSAGE() AS ErrorMessageEND CATCH 


[解决办法]

探讨
强烈建议MS +300分 :)

[解决办法]
哈哈,老盖手下无弱兵
[解决办法]
O


[解决办法]

这个东西。。。。

移动数据库物理文件?


这样也可以?


我们还真是孤陋寡闻啊!
[解决办法]
8错,谢谢楼主分享!
[解决办法]
回帖是一种美德!传说每天回帖即可获得 10 分可用分!回帖是一种美德!传说每天回帖即可获得 10 分可用分!回帖是一种美德!传说每天回帖即可获得 10 分可用分!
[解决办法]
探讨
太强大了吧?
支持.

[解决办法]
强帖留名~~
[解决办法]
看不懂,LZ写点注释吧
[解决办法]
★〓销售老虎机破解仪器,★〓详细介绍请登陆我公司网站查询联系电话:15858125285 联系人★〓:余先生 QQ:992487591 1009910397
破解老虎机仪器产品详细介绍请登陆我公司网站查询联系电话:15858125285 联系人:余先生 QQ:992487591 1009910397
老虎机遥控器--游戏机上分器,定位器,干扰器,退币器。--打老虎机包赢!质量上乘!价格合理!诚信买卖!中国邮政货到付款!一周内可退换货~!
[解决办法]
学习学习
[解决办法]
长见识了!顶
[解决办法]
很好很强大,收藏了
[解决办法]
探讨
8错,谢谢楼主分享!

[解决办法]
顶 好东西 收藏了 呵呵
[解决办法]
谢谢楼主 mark 一下
[解决办法]

[解决办法]
楼主辛苦,收藏先!
[解决办法]
探讨
引用:
太强大了吧?
支持.

[解决办法]
强帖留名~~

[解决办法]
mark
[解决办法]
mark
[解决办法]
学习·强!
[解决办法]
mark
[解决办法]
mark
[解决办法]
学习中...
[解决办法]
mark
[解决办法]
学习
[解决办法]
hao
------解决方案--------------------


收藏,虽然还有些地方不怎么明白.查查字典也要搞清楚
[解决办法]
记号,学习下。
[解决办法]
收藏了,谢谢分享
[解决办法]
先收藏,以后学习!
[解决办法]
大,收藏,接分,
LZ加注!!
[解决办法]
2000不可用吗?
[解决办法]
mark
[解决办法]
感谢分享~~~
[解决办法]
我还没有用呢,收藏一下
[解决办法]
楼主是microsoft的人?
[解决办法]
强贴留名
[解决办法]
强大...拿回来好好研究下...
[解决办法]
楼主太牛啦!好东东,顶一个.
[解决办法]
事先还要一个个杀进程?
楼主能用文字讲解一下么?一些对应知识点,小鸟在此学习了.
[解决办法]
强帖留名
[解决办法]
这个有什么用吗?谁知道?

[解决办法]
太强了,哈哈...
[解决办法]

探讨
强烈建议MS +300分 :)

[解决办法]
探讨
引用:
强烈建议MS +300分 :)
hehe

[解决办法]

不错啊
挺有帮助的啊
[解决办法]
签名!
[解决办法]
探讨
收藏了,谢谢分享

[解决办法]
mark
[解决办法]
有帮助
[解决办法]
事先还要一个个杀进程?
楼主能用文字讲解一下么?谢了哦 收藏先
[解决办法]
收藏了,谢谢分享
[解决办法]
完全不知所曰!
建议加点注悉,让我们这些菜鸟学习学习~~~
[解决办法]
mark
[解决办法]
收藏先
[解决办法]
学习学习
[解决办法]
楼主太强大了,学习一下
[解决办法]
收藏下
[解决办法]
我顶ing……
学习中


[解决办法]
收藏!
[解决办法]
好东东
[解决办法]

探讨
太强大了吧?
支持.

[解决办法]
探讨
引用:
完全不知所曰!
建议加点注悉,让我们这些菜鸟学习学习~~~


[解决办法]
收藏,Mark,呵呵
[解决办法]
不错,谢谢分享!
免费资源下载站http://download.csdn.net/zhuhong110450
[解决办法]
楼主真好,虽然我看不懂,还是顶一下
[解决办法]
探讨
引用:
引用:
完全不知所曰!
建议加点注悉,让我们这些菜鸟学习学习~~~



[解决办法]
收藏,Mark
[解决办法]
mark
[解决办法]
2000的是否可以?
[解决办法]
不错,收藏,学习下
[解决办法]
不错,收藏,建议加入精华。
[解决办法]
谢谢,收藏一下。
[解决办法]
路过 学习
[解决办法]
学习一下,谢谢分享
[解决办法]
做过记号
[解决办法]
探讨

这个东西。。。。

移动数据库物理文件?


这样也可以?


我们还真是孤陋寡闻啊!

[解决办法]
感谢赐教
[解决办法]
我有些奇怪。。
为什么这么几行代码,,,
就这么多人写不出来。。。
我 不是说我写的出来。
我是奇怪。、、、

读书人网 >SQL Server

热点推荐