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 Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\prd_poms.mdf');

alter database prd_poms modify file ( name = prd_poms_log, filename = 'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\prd_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 Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf');
alter database master modify file ( name = mastlog, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf');

alter database model modify file ( name = modeldev, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\model.mdf');
alter database model modify file ( name = modellog, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\modellog.ldf');

alter database msdb modify file ( name = MSDBData, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\MSDBData.mdf');
alter database msdb modify file ( name = MSDBLog, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\MSDBLog.ldf');

alter database tempdb modify file ( name = tempdev, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\tempdb.mdf');
alter database tempdb modify file ( name = templog, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\templog.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 Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\prd_acs.mdf');
alter database prd_acs modify file ( name = prd_acs_log, filename = 'F:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\prd_acs_1.ldf');
————————————————
版權聲明:本文為CSDN博主「bird_tp」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/bird_tp/article/details/94551586


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM