• 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

  • 相关阅读:
    如何使网站不出现从客户端(:)中检测到有潜在危险的 Request.Path 值这样类似的提示
    layui下select下拉框不显示或没有效果
    video
    各个平台的mysql重启命令
    微信开放平台 redirect_uri参数错误
    JS中setTimeout()的用法详解
    验证视图状态MAC失败的解决办法
    The 'microsoft.jet.oledb.4.0' provider is not registered on the local machin
    一个Nginx部署多个vue前端项目总结
    Java之HttpClient调用WebService接口发送短信源码实战
  • 原文地址:https://www.cnblogs.com/TengQiuli/p/14669763.html
Copyright © 2020-2023  润新知