zoukankan      html  css  js  c++  java
  • MS SQL 迁移数据库文件

    MS SQL 数据库迁移文件,这里说的不是将数据库迁移到另外一台服务器,只是在服务器不同磁盘目录内做迁移。移动数据库文件的情况大致有下面一些:

      1: 事先没有规划好,数据库文件或日志文件增长过快,导致某个盘或整个磁盘空间不足,需要移动数据文件或日志文件

      2: 纯粹由于业务需求,数据增长过快。

      3: 为了更好的IO的性能,需要将数据文件、日志文件分布到不同磁盘,减轻IO压力,提供IO性能。

      4:故障恢复。例如,数据库处于可疑模式或因硬件故障而关闭。

    案例:现在我在数据库实例中有数据库MyAssistant,(假设)由于事先没有规划好,导致数据文件位于E:DataBase目录下, 我们需要将数据文件移动到D:DataBase_Data目录下,

    将日志文件移动到F:DataBase_Log目录下。

    clip_image002

    步骤1:对数据库中每个要移动的文件(数据文件/日志文件),通过下面命令指定到新的目录

    复制代码
    USE master
    
    GO
    
    ALTER DATABASE MyAssistant
    
    MODIFY FILE(NAME='MyAssistant', FILENAME='D:DataBase_DataMyAssistant.mdf');
    
    GO
    
    ALTER DATABASE MyAssistant
    
    MODIFY FILE(NAME='MyAssistant_log', FILENAME='F:DataBase_LogMyAssistant_log.ldf');
    
    GO
    复制代码

     

    如果有多个数据库的数据文件/日志文件需要移动,可以通过一系列上述命令执行

    复制代码
    ALTER DATABASE DATABASE_ID1
    
    MODIFY FILE(NAME='DATABASE_NAME', FILENAME='....mdf');
    
    ALTER DATABASE DATABASE_ID2
    
    MODIFY FILE(NAME='DATABASE_NAME', FILENAME=.....mdf');
    
    .......
    复制代码

     

    步骤2:停止SQL Server实例,你可以在SQL Server Management Studio的配置工具Sql Server Configuration Manager下停止。也可用NET STOP MSSQLSERVER命令实现。

     

    步骤3:将那些数据文件或日志文件手工移动到对应的目录(也就是上面命令中FILENAME对应的目录)

    步骤4:重启SQL Server实例,验证数据文件迁移是否成功。

    SELECT name, physical_name
     
    FROM sys.master_files
     
    WHERE database_id = DB_ID('MyAssistant');

    二:迁移系统数据库文件

     

     迁移系统数据库文件与迁移用户数据库文件稍微有些不同,主要是master数据库有点特殊,下面介绍一下迁移master系统数据库的步骤:

     

    步骤1:如果SQL Server实例已经启动,那么停止该实例;这一步也完全可以忽略不做。

     

    步骤2:修改启动参数(配置管理器-高级标签-启动参数)

     

     

    -dD:sqldatamaster.mdf;

    -eC:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLLogERRORLOG;

    -lE:sqllogmastlog.ldf

    步骤3:关闭实例服务,拷贝master数据库的相关文件到目标文件。如上所示,把master数据的数据文件和日志文件分别从C:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATA下拷贝到D:sqldata 和E:sqllog目录下。

     

    步骤4:启动服务。检查OK没有问题后,删除master数据库在原C:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATA下的文件。

     

    迁移model、msdb、tempdb数据库的步骤如下:

     

    步骤1: 执行下面脚步

     

    复制代码
    USE master
    
    GO
    
    
    
     
    ALTER DATABASE msdb
    MODIFY FILE(NAME='MSDBData', FILENAME='D:sqldataMSDBData.mdf') ;
    GO
    
     
    
    ALTER DATABASE msdb
    MODIFY FILE(NAME='MSDBLog', FILENAME='E:sqllogMSDBLog.ldf') ;
    
    GO
    
     
    
    ALTER DATABASE model
    MODIFY FILE(NAME='modeldev', FILENAME='D:sqldatamodel.mdf') ;
    
    GO
    
    
    ALTER DATABASE model
    MODIFY FILE(name='modellog' , filename='E:sqllogmodellog.ldf') ;
    
    GO
    
     
    
    ALTER DATABASE tempdb
    MODIFY FILE(name='tempdev', filename='D:sqldata	empdb.mdf') ;
    
    GO
    
     
    ALTER DATABASE tempdb
    MODIFY FILE(name='templog', filename='E:sqllog	emplog.ldf') ;
    
    GO
    复制代码

     

    步骤2:停止SQL SERVER服务,移动数据文件到制定路径,需要注意的是:对于临时数据库,由于每次启动 MSSQLSERVER 服务时都会重新创建 tempdb,因此不需要从物理意义上移动数据和日志文件。

     

    步骤3: 启动SQL SERVER服务,验证修改是否生效。

     

    步骤4: 删除原来的数据文件。

    作者:潇湘隐者
    http://www.cnblogs.com/kerrycode/archive/2013/04/24/3041357.html
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    Visual Studio 2010 Preview (cont.)
    Office VBA 进阶(开篇)
    Two cool debugger tips that I learnt today
    Send GMail
    Google Email Uploader
    看看.NET 4.0 都有些什么?
    XML Serializer in .NET
    Timeloc: 一个Adobe AIR程序
    SDC task library 一个MSBuild Task的有益补充。
    不考虑促销活动的百货业态供应商结算设计
  • 原文地址:https://www.cnblogs.com/seasonzone/p/4837277.html
Copyright © 2011-2022 走看看