1. USE master
  2. GO
  3.  
  4. DECLARE
  5. @DBName sysname,
  6. @DestPath varchar(256)
  7. DECLARE @DB table(
  8. name sysname,
  9. physical_name sysname)
  10.  
  11. BEGIN TRY
  12.  
  13. SELECT
  14. @DBName = 'TargetDatabaseName', --input database name
  15. @DestPath = 'D:\SqlData\' --input destination path
  16.  
  17. -- kill database processes
  18. DECLARE @SPID varchar(20)
  19. DECLARE curProcess CURSOR FOR
  20.  
  21. SELECT spid
  22. FROM sys.sysprocesses
  23. WHERE DB_NAME(dbid) = @DBName
  24.  
  25. OPEN curProcess
  26. FETCH NEXT FROM curProcess INTO @SPID
  27. WHILE @@FETCH_STATUS = 0
  28. BEGIN
  29. EXEC('KILL ' + @SPID)
  30. FETCH NEXT FROM curProcess
  31. END
  32. CLOSE curProcess
  33. DEALLOCATE curProcess
  34.  
  35. -- query physical name
  36. INSERT @DB(
  37. name,
  38. physical_name)
  39. SELECT
  40. A.name,
  41. A.physical_name
  42. FROM sys.master_files A
  43. INNER JOIN sys.databases B
  44. ON A.database_id = B.database_id
  45. AND B.name = @DBName
  46. WHERE A.type <=1
  47.  
  48. --set offline
  49. EXEC('ALTER DATABASE ' + @DBName + ' SET OFFLINE')
  50.  
  51. --move to dest path
  52. DECLARE
  53. @login_name sysname,
  54. @physical_name sysname,
  55. @temp_name varchar(256)
  56. DECLARE curMove CURSOR FOR
  57. SELECT
  58. name,
  59. physical_name
  60. FROM @DB
  61. OPEN curMove
  62. FETCH NEXT FROM curMove INTO @login_name,@physical_name
  63. WHILE @@FETCH_STATUS = 0
  64. BEGIN
  65. SET @temp_name = RIGHT(@physical_name,CHARINDEX('\',REVERSE(@physical_name)) - 1)
  66. EXEC('exec xp_cmdshell ''move "' + @physical_name + '" "' + @DestPath + '"''')
  67. EXEC('ALTER DATABASE ' + @DBName + ' MODIFY FILE ( NAME = ' + @login_name
  68. + ', FILENAME = ''' + @DestPath + @temp_name + ''')')
  69. FETCH NEXT FROM curMove INTO @login_name,@physical_name
  70. END
  71. CLOSE curMove
  72. DEALLOCATE curMove
  73.  
  74. -- set online
  75. EXEC('ALTER DATABASE ' + @DBName + ' SET ONLINE')
  76.  
  77. -- show result
  78. SELECT
  79. A.name,
  80. A.physical_name
  81. FROM sys.master_files A
  82. INNER JOIN sys.databases B
  83. ON A.database_id = B.database_id
  84. AND B.name = @DBName
  85. END TRY
  86. BEGIN CATCH
  87. SELECT ERROR_MESSAGE() AS ErrorMessage
  88. END CATCH
  89. GO

注:原文摘自:Aaron的博客:http://www.cnblogs.com/aarond/archive/2013/03/29/2988620.html

SQL Server数据库文件存储目录转移的更多相关文章

  1. 人人都是 DBA(V)SQL Server 数据库文件

    SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb. SELECT [name] ,database_id ,suser_sname ...

  2. SQL Server数据库文件与文件组总结

    文件和文件组概念 关于文件与文件组,简单概括如下,详情请参考官方文档"数据库文件和文件组Database Files and Filegroups"或更多相关资料: 数据文件概念: ...

  3. C# 以附加文件方式连接SQL Server数据库文件

    string str = @"data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFileName=z:\ttt.mdf;Us ...

  4. 修改Sql Server 数据库文件默认存放目录

    -- 更改数据文件存放目录   EXEC xp_instance_regwrite     @rootkey='HKEY_LOCAL_MACHINE',     @key='Software\Micr ...

  5. sql server数据库文件的迁移(mdf&ldf文件)

    mdf 源文件 ldf 日志文件 在服务器不同磁盘目录内做迁移.移动用户数据库文件的情况大致有下面一些: ① 没有设计规划好,贪图方便,,,,数据库文件和日志文件增长过快,导致存放数据库文件的磁盘空间 ...

  6. 收缩SQL Server数据库文件

    收缩整个数据库 DBCC SHRINKDATABASE (dbName) 收缩单个文件DBCC SHRINKFILE (FileName) 查找所有的文件名称USE dbNameEXEC sp_hel ...

  7. 查看sql server数据库文件信息

    --drop table #dbfiles --deallocate cursor1 ------ declare cursor1 cursor for SELECT name from sys.da ...

  8. SQL Server 数据库文件 4 点注意

    1.数据库被分解成逻辑页面,每页8K,在每一个文件中页面从 0 --> x 连续编号: 2.可以通过 [database_id]   [file_id]   [page_id] 的形式引用页面: ...

  9. sql server数据库如何存储数组,int[]float[]double[]数组存储到数据库方法

    原文地址:https://www.zhaimaojun.top/Note/5475296 将数组存储到数据库的方法 (本人平时同csharp编写代码,所以本文中代码都是csharp代码,有些地方jav ...

随机推荐

  1. The Art of Computer Programming

    <计算机程序设计艺术>即<The Art of Computer Programming>是计算机领域里颠峰级的里程碑,加上国外人士对它的推崇,所以提起它的大名简直就象法律书籍 ...

  2. ubuntu笔记1

    修改grub启动项顺序 在/etc/grub.d/ 目录下 文件前序号越小 在启动界面顺序越靠前, 用sudo mv修改文件名, sudo update-grub更新

  3. Cocos2d-JS中的Sprite精灵类

    精灵类是cc.Sprite,它的类图如下图所示.cc.Sprite类直接继承了cc.Node类,具有cc.Node基本特征. 创建Sprite精灵对象 创建精灵对象可以使用构造函数实现,它们接受相同的 ...

  4. Objective-C设计模式——原型Prototype(对象创建)

    1.原型 原型设计模式所谓原型设计模式,其实就是对象复制,这个特性在所有语言基本上都是存在的. 我们知道在OC中,对象赋值其实是对对象的引用复制,其实就是相当于C语言中的指针.创建了一个新的变量,但是 ...

  5. 高仿百度传课应用客户端源码iOS版

    高仿百度传课iOS版,版本号:2.4.1.2 运行环境:xcode6.3  ios8.3 (再往上系统没有测试) 转载请注明出处,不可用于商业用途及不合法用途. 如果你觉得不错,欢迎  star  哦 ...

  6. 洛谷 P3374 【模板】树状数组 1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  7. iOS 系统架构及常用框架

    1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多 2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer).媒体层(Media l ...

  8. brewhome - 第三方包管理工具

    最近对移动开发感兴趣,于是乎有了相当正式的理由购买了一台macbook pro 13. 我虽然以前没有使用过mac os,但是上手却很快,这大概跟我最近几年一直在使用linux系统有关吧.我平时上班时 ...

  9. SUID或SGID程序中能不能用system函数

    system()函数的声明和说明如下: 注意它的描述那里,system()执行一个由command参数定义的命令,通过调用/bin/sh -c命令来实现这个功能.也就是说它的逻辑是这样的! 进程调用s ...

  10. [大牛翻译系列]Hadoop(19)MapReduce 文件处理:基于压缩的高效存储(二)

    5.2 基于压缩的高效存储(续) (仅包括技术27) 技术27 在MapReduce,Hive和Pig中使用可分块的LZOP 如果一个文本文件即使经过压缩后仍然比HDFS的块的大小要大,就需要考虑选择 ...