zoukankan      html  css  js  c++  java
  • SQL Server 数据库文件路径迁移步骤

    一、使用背景
        实际项目中,经常由于数据库服务器磁盘空间不足,导致现场数据无法及时入库,引发系统无法访问的问题,这种情况一般是清理服务的磁盘空间,主要有,删除不必要的日志、备份文件或不必要的软件等;但是,对于数据库服务器而言,除了必要的软件外,一般不在安装其他软件,保存的基本上为现场数据文件,所以,针对这种情况,一般我们只能做数据迁移,迁移至空间更大的磁盘或者其他服务器中。这里以SQL Server数据为例,简要说明涉及到的步骤。

    二、实现步骤
    1.更改数据库实例(含数据文件和日志文件)的保存路径
    使用SQL Server自带的连接工具,SQL Server Management Studio,连接后,在连接名处,右击,选择“属性”,在属性框,定位至“数据库设置”选项卡,在“数据库默认位置”设置新的路径,如下图:

    点击“确定”,保存修改,此时,会及时生效,不需要重启服务;

    2.更改用户数据库(含数据库文件和日志文件)的保存路径
    a)新建查询语句,分别输入以下命令,查询用户数据库存储位置
    select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files 

    where database_id=db_id(N'prd_poms');

    其中,prd_poms表示用户自己定义的数据库名称,该语句用于查询,prd_poms数据库的数据文件和日志文件的名称,以及对应的路径,便于后续步骤使用。

    查询结果可能如下图:

     

    b)更改用户数据库的保存路径
    输入以下语句:

    1、查询用户ID信息

    Select name,dbid From Master..SysDataBases

    2更改用户数据文件路径

    alter database prd_poms modify file ( name = prd_poms, filename = 'D:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATAprd_poms.mdf');

    alter database prd_poms modify file ( name = prd_poms_log, filename = 'D:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLDATAprd_poms_log.ldf');

    上述语句中,粗体红色的部分为数据库的名称,与步骤a)中的数据库名称一致,斜体红色部分对应步骤a)中查询的结果,分别表是文件名称,而红色斜体黄色背景部分为,文件更改后最终需要保存的路径。

    c)执行后,在文件正确的情况下,会提示修改成功。
    注:由于SQL Server数据库还有系统数据库,因此,还需要对系统数据库按照上述步骤做同样的修改,这里不再累述。

    3.修改完成后,需要重启数据库服务,才能使设置生效。
          a)暂停数据库服务,打开SQL Server 配置管理器(数据库自带工具),找到SQL Server服务,停止服务,如下图:

     

    或者直接在系统的“服务”中,找到SQL Server服务,停止服务也OK。

        b)停止数据库服务后,要确保新的路径已经存在,否则会导致数据库无法启动,以及其他异常。所以,没有的路径,请新建路径。再将原来数据库文件(含数据和日志文件)均复制到新的目录中。注:数据库服务必须要停止,否则无法复制相关文件。

       3.重启数据库服务,使所有配置生效

    三、出现的问题
    若出现无法启动的情况,且从系统的“事件查看器”中,发现原因为:

                       “FCB::Open failed: 无法打开文件号 1 的文件”之类报错信息,解决方式如下:

                       找到SQL Server服务,右击,选择“属性”,如图:

     

    在弹框的“登录”选项卡中,选择“本地账户”登录,保存,如下图

     

     将用户的数据文件权限改为完全

    再次启动SQL Server服务,即可成功。

    四、全部sql
    下面写上一些sql语句:

    查询系统数据库数据和日志文件存储路径:

    select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files 

    where database_id=db_id(N'master');

    select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files 

    where database_id=db_id(N'model');

    select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files 

    where database_id=db_id(N'msdb');

    select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files 

    where database_id=db_id(N'tempdb');

    更改系统数据库和日志文件存储路径:

    alter database master modify file ( name = master, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAmaster.mdf');
    alter database master modify file ( name = mastlog, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAmastlog.ldf');

    alter database model modify file ( name = modeldev, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAmodel.mdf');
    alter database model modify file ( name = modellog, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAmodellog.ldf');

    alter database msdb modify file ( name = MSDBData, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAMSDBData.mdf');
    alter database msdb modify file ( name = MSDBLog, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAMSDBLog.ldf');

    alter database tempdb modify file ( name = tempdev, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATA empdb.mdf');
    alter database tempdb modify file ( name = templog, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATA emplog.ldf');

    查询用户数据库数据和日志文件存储路径

    select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files  
    where database_id=db_id(N'prd_acs');


     

    更改用户数据库和日志文件存储路径:

    alter database prd_acs modify file ( name = prd_acs, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAprd_acs.mdf');
    alter database prd_acs modify file ( name = prd_acs_log, filename = 'F:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAprd_acs_1.ldf');
    ————————————————
    版权声明:本文为CSDN博主「bird_tp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/bird_tp/article/details/94551586

  • 相关阅读:
    PDF文件中的Form保存问题
    Understanding IP Fragmentation
    tcp ip guide IPsec IKE
    Windows安全事件日志中的事件编号与描述
    Cisco PIX fix up and Juniper firewall FTP ALG
    很好的IPSec介绍,详细解释了IKE协商的2个阶段的作用
    virtualbox 下运行Ubuntu 8.10的分辨率和guest additions的问题。
    Fixing the ‘Do you want to display nonsecure items’ message
    windows xp 开始菜单里面所有项目右键不起作用。
    HP backup and recovery manager
  • 原文地址:https://www.cnblogs.com/TengQiuli/p/14669763.html
Copyright © 2011-2022 走看看