1. 程式人生 > >SQL Server:移動系統資料庫

SQL Server:移動系統資料庫

說到這個問題,基本上有人就會想到三個問題:

1,什麼是系統資料?

2,為什麼要移動系統資料庫?

3,移動系統資料庫我們可以用附加和分離,為什麼還要單獨拿出來說呢?

對於這三個問題我一個一個講吧,也算是自己做個筆記。

1,什麼是系統資料?

所謂系統資料庫就是我們在裝SQL Server之後,系統自帶的資料庫(這樣的回答是不是很白痴^_^).

如果你裝SQL Server2005或2008在開啟一個SQL例項後,就會看到一個數據庫--->系統資料庫資料夾,裡邊就是系統自帶的資料庫,如圖:
system-database-pic

   對於每一個系統資料庫,這裡我先用簡單的語言說一下:

    1),master:
          這個資料庫是全域性資料庫,它包含一些系統表,許可權分配,使用者帳號設定,當前資料庫配置資訊以及關於磁碟空間,檔案分配等資訊。所以在執行諸如使用者帳號設定,許可權分配和改變系統配置資訊後都要備份此資料。所以在這裡強烈建議,不僅要經常備份自己的資料庫,還有備份此資料庫,雖然不像備份自己資料庫那樣那麼頻繁。至少半個月或一個月備份一次此資料庫。 
         在這裡還有專門的一個數據庫大牛討論過是否應該備份此資料庫:

SQL SERVER – Backup master Database Interval – master Database Best Practices
    2),model:
           這個資料庫只是一個模板資料庫,我們在建立任意的一個數據庫的時候,都是複製此資料庫為新資料庫的基礎,如果希望每一個新的資料庫都含有某些物件或者許可權,可以把這個物件或許可權放在此資料庫中,新建立的新資料庫都會繼承此資料的新物件或許可權,並且擁有這些物件或許可權。 
    3),msdb: 
            作者原話:SQL Server代理伺服器會使用該資料庫,它會執行一些列如備份和複製任務的計劃好的活動。Service Borker也會用到該資料庫,他為SQL Sever提供佇列和可靠訊息傳遞。當我們不在該資料庫執行備份或維護任務時,通常可以忽略該資料庫。在SQL Server2005之前,實際上是可以刪除該資料庫的,只後SQL Server仍然可用,但不能在維護任何備份歷史了,並且不能夠在定義任務,警告,工作或者建立複製,不過因為預設的msdb資料庫非常小,建議即使用不到也不要刪除它。
    4),tempdb:
          該資料庫說白了,就是一箇中轉站或資料寄存站,使用者顯示建立的臨時表,在查詢處理和排序時內部所產生的中間結果的工作表,維護用的快照等,都會用到此資料庫,與其他資料庫所不同的是,在每次SQL Server例項重啟之後,都會重建而不是恢復. 所以我們在其中建立的所有物件和許可權在下次重啟SQL Server時都會全部丟失。
          但是我們也不能忽略此資料庫,因為tempdb的大小和配置,對優化SQL Server的功能和效能來說很重要。
          對tempdb資料庫,還要多說幾句,雖然在tempdb每次被重建時,它會從model資料庫繼承大多數的資料庫選項,但是tempdb卻不會從modeldb資料庫中複製其恢復模式,因為它總是使用簡單恢復模式。另外,tempdb是無法刪除的,也不用備份。

2,為什麼要移動系統資料庫?

         我們在安裝SQL Server後預設的這些系統資料庫都會放在C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA此資料夾下,一般的都不很大,為什麼我們還有移動他們呢?
        在沒有實踐管理伺服器之前,我也沒有這個想法,但是我發現我的伺服器C盤一直都在增加,或者萬一重灌系統,我設定的資料庫選項,以及使用者賬戶設定都要重新設定,所以就有了這個想法。

       還有一點就是作為重新佈置計劃或安排好的維護操作的一部分,我們也許需要移動系統資料庫。

3,用附加和分離就可以,為什麼還要單獨說呢?

       回答這個問題之前,我們在看一張圖
       move-system-database-pic 
     注意到了嗎,在我選中master系統資料庫右擊,選中任務後,並沒有出現“分離”這個選項。那就說明移動這些系統資料庫是和使用者自定義的資料庫是不同的。
     移動tempdb,model和msdb的步驟和移動master資料庫步驟稍微有點不同。
     1),移動tempdb,model和msdb資料庫 
            i),移動一個沒有損壞的系統資料庫 
                首先讓我們用查詢命令看一下SQL Server預設儲存這些系統資料庫的路徑;查詢命令:
                      SELECT name,physical_name AS CurrentLocation,state_desc
                      FROM sys.master_files
                F5執行,顯示如圖:
                  move-system-database-pic-1 
                之後開始我們的移動之旅吧!
                   a),對資料庫中每個要移動的檔案使用帶有MODIFY FILE選項的ALTER DATABASE命令來指定新的資料夾選項。如:                

--Move tempdb
ALTER DATABASE tempdb MODIFY FILE(NAME='tempdev',FILENAME='D:\Database\tempdb.mdf');
ALTER DATABASE tempdb MODIFY FILE(NAME = 'templog',FILENAME='D:\Database\templog.ldf');
--Move model
ALTER DATABASE model MODIFY FILE(NAME='modeldev',FILENAME='D:\Database\model.mdf');
ALTER DATABASE model MODIFY FILE(NAME='modellog',FILENAME='D:\Database\modellog.ldf');
--Move msdb
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBData',FILENAME='D:\Database\msdbdata.mdf');
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBLog',FILENAME='D:\Database\msdb_log.ldf');
                    b),在命令提示行下用NET STOP MSSQLSERVER命令停止SQL Server例項;
                    c),物理移動檔案到我們定義的資料夾,比如上面所述D:\Database資料夾;
                    d),重啟SQL Server例項;
                    大功告成,然後在用上面的查詢來驗證更改,F5執行,顯示如圖:
                          move-system-database-pic-2    
            ii),由於硬體故障而需要移動系統資料庫 
                  對於由於硬體故障而需要移動系統資料庫,上面的方法就不行了,因為我們可能無法訪問伺服器來執行ALTER DATABASE命令。那我們就另外換一種解決方案!
                  a),如果SQL Server例項已經啟動,那麼停止該例項;
                  b),在命令提示行下,輸入下面的命令把SQL Server例項啟動到master-only恢復模式
                         NET START MSSQLSERVER /f /T3608
                  c),之後我們就能連結到伺服器了,接下來就和上面”移動一個沒有損壞的系統資料庫 ”的步驟就一樣了。
                注:如果直接用NET START MSSSQL SERVER命令來啟動SQL Server例項,會收到1814的錯誤提示。我們可以到“控制面板”-》“管理工具”-》“事件檢視器”中看一下具體的錯誤日誌。
     2),移動master資料庫
           移動master資料庫的位置和其他的系統資料庫不同是,只能用SQL Server 配置管理器來更改master的位置。
           首先開啟SQL Server配置管理器,右擊目標SQL Server例項,選擇屬性,然後點選高階標籤,如圖所示:
            move-system-database-pic-3
          在啟動引數中編輯各個引數的值來指向新的master資料庫資料檔案和日誌檔案的目錄位置,如下:
              -dD:\Database\master.mdf;
              -eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;
               -lD:\Database\mastlog.ldf
          然後停止SQL Server例項,把物理檔案移動到新的資料夾下,比如我移動到D:\Database\目錄下;
          最後啟動SQL Server例項,就大功告成了!如果要檢驗一下,就用上面所提到的檢驗語句,F5執行,如圖所示:
             move-system-database-pic-4

相關推薦

SQL Server:移動系統資料庫

說到這個問題,基本上有人就會想到三個問題: 1,什麼是系統資料? 2,為什麼要移動系統資料庫? 3,移動系統資料庫我們可以用附加和分離,為什麼還要單獨拿出來說呢? 對於這三個問題我一個一個講吧,也算是自己做個筆記。 1,什麼是系統資料? 所謂系統資料庫就是我們在裝SQL S

sql server重建系統資料庫

重建系統資料庫(1)備份所有系統資料庫 (2)停止SQL Server伺服器 (3)進入目錄C:\Program Files\Microsoft SQL Server\80\Tools\Binn (4)找到rebuildm.exe並雙擊執行 (5)在"瀏覽資料夾"對話方塊中,選擇 SQL&nb

SQL Server常用系統

data pro 根據 結果 同時 最大 sys 次數 max 1、查詢當前數據庫中的用戶表 select *from sysobjects where xtype=‘U‘; 2、獲取SQL Server允許同時用戶連接的最大數 SELECT @@MAX_CONNECTIO

MySQL、SQL server 、Oracle資料庫中查詢所有的資料庫,查詢指定資料庫所有表名,查詢所有的欄位的名字

MySQL中查詢所有資料庫名和表名 1.查詢所有資料庫 show databases; 2.查詢指定資料庫中所有表名 select table_name from information_schema.tables where table_schema='database_name' a

SQL Server入門(二) SQL Server 2017 express資料庫的安裝與SQL Server Management Studio管理資料庫

一、Sql Server 2017 express 安裝流程 https://jingyan.baidu.com/article/148a1921fe8f054d71c3b1cb.html 二、怎麼用SQL Server Management Studio管理資料庫 1、https://

常用傻瓜式SQL Server語句,優化資料庫

基本都是網路收集來的,有些挺好用,例如查詢是否缺索引的語句。   查找出什麼語句佔記憶體最高,針對佔記憶體高的語句進行優化 SELECT SS.SUM_EXECUTION_COUNT, T.TEXT, SS.SUM_TOTAL_ELAPSED_TIME, SS.SU

SQL Server語句建立資料庫和表——並設定主外來鍵關係

簡單的建立資料庫的 SQL 語句: 1 use master 2 go 3 4 if exists(select * from sysdatabases where name='Test') 5 begin 6 select '該資料庫已存在' 7

SQL SERVER 語句建立資料庫和表以及設定主外來鍵關係

簡單的建立資料庫的 SQL 語句: use master go if exists(select * from sysdatabases where name='Test') begin     select '該資料庫已存在'    

SQL Server中通用資料庫角色許可權的處理詳解

SQL Server中通用資料庫角色許可權的處理詳解 前言 安全性是所有資料庫管理系統的一個重要特徵。理解安全性問題是理解資料庫管理系統安全性機制的前提。 最近和同事在做資料庫許可權清理的事情,主要是刪除一些賬號;取消一些賬號的較大的許可權等,例如,有一些有db_owner許可權,我們取消賬號的資料庫角

SQL Server系統檢視sysobjects中type欄位的說明

物件型別:   AF = 聚合函式 (CLR)   C = CHECK 約束   D = DEFAULT(約束或獨立)   F = FOREIGN KEY 約束   FN = SQL 標量函式  

SQL Server系統視圖sysobjects中type字段的說明

highlight .com 程序 efault clr default 獨立 get 說明 對象類型: AF = 聚合函數 (CLR) C = CHECK 約束 D = DEFAULT(約束或獨立) F = FOREIGN KEY 約束 FN = SQ

SQL Server 2005 實現資料庫同步備份 過程--結果---分析

下載網站:www.SyncNavigator.CN   ---------------------------------------------------------- HKROnline SyncNavigator 8.4.1 非破解版 註冊機 授權啟用教程

SQL Server 2008 R2 資料庫之間的資料同步熱備份

下載網站:www.SyncNavigator.CN   ---------------------------------------------------------- HKROnline SyncNavigator 8.4.1 非破解版 註冊機 授權啟用教程

Hibernate 環境 配置 對映資料庫 SQL server ,Mysql 資料庫 ,測試無誤

最近要消化的知識有點多,多以特地將筆記寫道 部落格中,方便檢視 需要到的hibernate jar 包 ,大家可以自行到官網下載 Hibernate 中 配置 Sqlserver 資料庫 <?xml version="1.0" encoding=

sql server 壓縮備份資料庫

轉自 https://www.cnblogs.com/527289276qq/p/6273291.html 今天需要把一個省外專案的資料庫從伺服器上備份、拷貝到本機(跨地域傳輸資料庫備份檔案)。 連上VPN,通過遠端桌面連線,連線上伺服器,發現數據庫檔案已經有20G以上大小了。 檔案太大,公司

SQL Server學習_資料庫複製

資料庫複製 在網上看到一個數據庫複製,感覺挺有意思的 一般情況下最好定期備份,這只是練習 /** *複製表結構的通用儲存過程 */ -- Transfer物件的重要屬性 -- 1. 屬性 屬性名

Dapper操作Sql Server和MySql資料庫

1. 在配置檔案web.config中新增連線字串 <connectionStrings> <add name="sqlconnectionString" connectionString="server=127.0.0.1;database=MyDataBase;User=sa

SQL SERVER 自帶資料庫下載安裝

AdventureWorks sample databases 下載 需要上 github 網站,確保能翻牆 github上地址 原想選擇備份檔案來建立測試庫,但由於未知原因下載不下來,只好選擇原始碼

轉載:sql server完整複製資料庫

當需要完整的複製一個數據庫時,不清楚原理的時候往往會出現各種問題。下面講解一種簡單易操作的資料庫複製方法。步驟一:在Microsoft sql server Management studio中,將源資料庫進行備份,生成一個備份檔案dbname.bak;記住備份檔案存放的地址,或者

SQL server 2008 開啟資料庫的遠端連線

                SQL Server 2008 R2開啟資料庫的遠端連線 SQL Server 2008預設是不允許遠端連線的,如果想要在本地用SSMS連線遠端伺服器上的SQL Ser