zoukankan      html  css  js  c++  java
  • SQL Server数据库文件存储目录转移

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

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

  • 相关阅读:
    团队作业2-《需求规格说明书》
    团队作业 —— 团队选题
    自我介绍+软工五问
    团队作业5——测试与发布(Alpha版本)
    结对项目(与陈超国)
    个人项目wordcount
    自我介绍+软工5问
    个人项目(C语言)
    自我介绍+软工五问
    第三篇 Scrum冲刺博客
  • 原文地址:https://www.cnblogs.com/Juvy/p/3551163.html
Copyright © 2011-2022 走看看