杂记--转移数据库文件位置】

 /*--------------------------------------------------------------------------------------
     t-mac 编写整理
       ---学习总结使用
         --MSDN笔记
----------------------------------------------------------------------------------------*/


/*
 移动 用户数据库文件的位置---》》》》是用户数据库
 方法有2种:一种是分离附加
            还有一种是通过改变数据库的状态,alter 文件的位置(推荐用这个)
       (如果是移到另外一个SQL Server 实例中或另一台服务器上,请使用备份还原或者分离附加)
*/

 

 


----------------------------1.分离附加------------------------------
<textarea cols="78" rows="15" name="code" class="c-sharp">--a 先分离Pubs库 exec sp_detach_db 'pubs','true' --b 用create database .... for attach 附加 (不要用 sp_attach_db,微软不推荐了) create database pubs on (filename='E:/杂七杂八/northwind和pubs数据库/PUBS.MDF') log on (filename='E:/杂七杂八/northwind和pubs数据库/PUBS_LOG.LDF') FOR ATTACH --c 用视图sys.master_files 查看 SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'pubs'); </textarea>

 

-------------------------2 通过改变数据库的状态,alter 文件的位置------------------

<textarea cols="79" rows="15" name="code" class="c-sharp">--a.使数据库进入离线状态 alter database pubs set offline --b.将数据库文件转移到你目标目录 --c.修改数据库的文件位置为你的目标目录 alter database pubs modify file(name=PUBS,FILENAME='E:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA/PUBS.MDF') alter database pubs modify file(name=PUBS_LOG,FILENAME='E:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA/PUBS_LOG.LDF') --d.将数据库pubs变成在线状态 ALTER DATABASE PUBS SET ONLINE --e.用视图sys.master_files 查看 SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'pubs'); </textarea>


-----------------------如果你的数据库无法启动了,而又要用数据库-------------------
                                                           --源于:MSDN,没有试过
<textarea cols="79" rows="15" name="code" class="c-sharp">--1.如果启动了 SQL Server 实例,则将其停止。 --2.通过在命令提示符下输入下列命令之一,在仅 master 恢复模式下启动 SQL Server 实例。 --a.对于默认的 (MSSQLSERVER) 实例,请运行以下命令。 NET START MSSQLSERVER /f /T3608 --b.对于命名实例,请运行以下命令。 NET START MSSQL$instancename /f /T3608 --3.对于要移动的每个文件,请使用 sqlcmd 命令或 SQL Server Management Studio 运行以下语句。 ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path/os_file_name' ) --4.退出sqlcmd或者SQL Server Management Studio ,停止SQL实例 --5.将文件移动到新位置,并且启动SQL实例(例如,运行 NET START MSSQLSERVER。) --6.运行以下查询来验证文件更改。 SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'&lt;database_name&gt;'); </textarea>  

 


 /*
  移动 系统数据库文件的位置---》》》》是系统数据库
     *除 master 和 Resource 数据库以外的所有系统数据
  *master
  *Resource
 */

 

   ------------------------除 master 和 Resource 数据库以外的所有系统数据------------------------
   
  <textarea cols="79" rows="15" name="code" class="c-sharp">--a.修改目标系统数据库的位置、 ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path/os_file_name' ) --b.停止SQL SERVER实例 --c.将本来的文件移动到新位置 --下面是查看目标数据库原来的位置的语句 SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'targer_db'); GO --d.重启SQL实例,并且使用上面的SQL语句查看移动没有 ------ps:遇到硬件坏了,用和用户数据库一样的方法移动------ </textarea>   


  ----------------------------master Resource 数据库-----------------------
  --直接看MSDN吧(- - || 自己没试过 不敢再写了 大家自己去看吧)
  http://msdn.microsoft.com/zh-cn/library/ms345408.aspx
 

 

 

 

你可能感兴趣的:(杂记--转移数据库文件位置】)