摘自:http://blog.itpub.net/post/1626/15010
一、四個系統數據庫的介紹
二、三種備份和恢復
三、兩種數據導入導出方法
四、數據庫維護計劃和作業的應用(前提都是sqlserver agent服務要啟動)
五、安全性介紹
六、sql腳本的生成
七、事件探查器的應用
八、日志的截斷
一、四個系統數據庫的介紹
1、Master數據庫
Master數據庫記錄了Sqlserver所有的服務器級系統信息,所有的注冊帳戶和密碼,以及所有的系統設置信息,還記錄了所有用戶定義數據庫的存儲位置和初始化信息。
2、Tempdb數據庫
Tempdb記錄了所有的臨時表、臨時數據和臨時創建的存儲過程。Tempdb數據庫是一個全局資源,沒有專門的權限限制,允許所有可以連上Sqlserver服務器的用戶使用。
在Tempdb數據庫存放的所有數據信息都是臨時的。每當連接斷開時,所有的臨時表和臨時存儲過程都將自動丟棄。每次系統啟動時Sqlserver都會根據Model數據庫重新創建Tempdb數據庫。
3、Model數據庫
Model數據庫是用戶建立新數據庫的模板,它包含了將復制到每個用戶數據庫中去的系統表。每當創建數據庫的語句create database執行時,服務器總是通過復制model數據庫來建立新數據庫的前面部分,新數據庫的后面部分被初始化成空白的數據頁,以供用戶存放數據。
4、Msdb數據庫
Msdb數據庫主要被sqlserver agent用來進行復制、作業調度以及管理報警等活動。該數據庫常被用來通過調度任務排除故障。
5、說明:在具體應用中可以在企業管理器里將這四個系統數據庫隱藏起來,可以避免用戶誤操作,也可以起到讓用戶知道操作系統數據庫帶來的后果。
二、三種備份和恢復
1、通過企業管理器的備份和還原數據庫。
2、在查詢分析器里執行sp_detach_db 'dbname',true分離數據庫,將操作系統文件*.mdf(主數據文件)和*.ldf(日志文件)拷貝出來,當然你也可以通過停止sqlserver服務來拷貝操作系統文件。
通過sp_attach_db(兩個操作系統文件都完好)或sp_attach_single_file_db(主數據文件完好,日志文件破壞)來附加數據庫(如果在附加中有問題,執行下列步驟)。
mssql里附加數據庫出錯的解決方法在QA里執行sp_attach_db或者sp_attach_single_file_db,出現提示:錯誤1813:未能打開新數據庫'dbname',create database 將終止。設備激活錯誤。物理文件名'd:\sql server\mssql\data\dbname _log.ldf'可能有誤! 按下面的步驟處理:1.新建一個同名的數據庫2.再停掉sqlserver服務(注意不要分離數據庫)3.用原數據庫的數據文件覆蓋掉這個新建的數據庫4.再重啟sqlserver服務5.此時打開企業管理器時會出現置疑,先不管,執行下面的語句(注意修改其中的數據庫名)6.完成后一般就可以訪問數據庫中的數據了。這時,數據庫本身一般還有問題,解決辦法是:利用數據庫的腳本創建一個新的數據庫,然后通過DTS將數據導進去就行了use mastergosp_configure 'allow updates',1 reconfigure with overridegoupdate sysdatabases set status =32768 where name='置疑的數據庫名'gosp_dboption '置疑的數據庫名', 'single user', 'true'godbcc checkdb('置疑的數據庫名') goupdate sysdatabases set status =28 where name='置疑的數據庫名'gosp_configure 'allow updates', 0 reconfigure with overridego sp_dboption '置疑的數據庫名', 'single user', 'false'go 也可以通過企業管理器來附加數據庫。3、查詢分析器里執行backup database 'dbname' to disk='路徑'來備份數據庫,restore database 'dbname' from disk='路徑'來還原數據庫。(以上提到的sql語句里的符號如''等都應該是半角的。這里的操作實際上是上面1里對應的sql語句操作。)
三、兩種數據導入導出方法
1、通過DTS來做
2、bcp實用工具來做
例如(hostname表示機器名,user表示sqlserver登陸用戶名,resu表示對應的用戶登陸的密碼):
exec master..xp_cmdshell 'bcp dbname..table_name out d:\test.xls -c -Shostname -Uuser -Presu'
四、數據庫維護計劃和作業的應用(前提都是sqlserver agent服務要啟動)
1、數據庫維護計劃
2、作業
/*在遠程機器操作系統的計算機管理里建立一個用戶名為kyle的用戶,密碼為1234,同時在那臺機器的非系統盤里建一個名為backup的共享文件夾,為了安全另外設置這個文件夾只有這個kyle用戶可以訪問。*/
declare @sql varchar(500)
select @sql='\\10.2.0.12\backup\dbname'+'_db_'+convert(varchar(10),getdate(),112) +
substring(convert(varchar(10),getdate(),108),1,2) +'.bak'
exec master..xp_cmdshell 'net use \\10.2.0.12\backup 1234 /user:remotehost\kyle'
backup database dbname to disk=@sql --備份數據庫,這里的10.2.0.12為遠程機器的ip,remotehost為遠程機器的機器名,dbname為本地sqlserver服務器要備份的數據庫
go
declare @sql varchar(500)
select @sql='del '+'\\10.2.0.12\backup\dbname'+'_db_'+convert(varchar(10),dateadd(day,-7,getdate()),112) + substring(convert(varchar(10),dateadd(day,-7,getdate()),108),1,2) +'.bak'
exec master..xp_cmdshell @sql --刪除7天前的備份,也就是只保留7個最新備份
go
五、安全性介紹
1、兩種登陸方式:
標準登陸方式(sqlserver和windows),采用sqlserver提供的用戶名和密碼登陸連接,可用sp_denylogin 'builtin\administrators'拒絕操作系統管理員登陸連接(sp_grantlogin 'builtin\administrators'反轉),也稱非信任登陸機制;這種認證方式是兩種方式中最安全的。
集成登陸方式(僅windows),將windows的用戶和工作組映射為sqlserver的登陸方式,也稱信任機制。
2、一個特殊帳戶:sa,為系統默認帳戶,不能刪除,擁有最高的管理權限,可以執行sqlserver服務器范圍內的所有操作,所以一定要給sa加上密碼,密碼推薦不少于6位,最后是字母、數字和特殊符號的組合。
3、兩個特殊數據庫用戶:
dbo,數據庫的擁有者,在安裝sqlserver時,被設置到model數據庫中,不能被刪除,所以dbo在每個數據庫中都存在。dbo是數據庫的最高權力者,對應于創建該數據庫的登陸用戶,即所有的數據庫的dbo都對應于sa帳戶;
guest,這個用戶可以使任何已經登陸到sqlserver服務器的用戶都可以訪問數據庫,即使它還沒有成為本數據庫的用戶。所有的系統數據庫除model以外都有guest用戶。所有新建的數據庫都沒有這個用戶,如果油必要添加guest用戶,請用sp_grantdbaccess來明確建立這個用戶。
4、還原數據庫的時候之所以要刪除本數據庫的用戶如user,然后在安全性→登陸里重新建這個用戶和指定相應的訪問權限,是因為這個用戶在master里不存在。當然你也可以用sp_addlogin 'user','resu'來新建user用戶,sp_change_users_login 'update_one','user','user'來指定在master中的對應。
5、具有system administrators服務器角色的成員擁有與sa一樣的權限,具有db_owner數據庫角色的用戶具有對本數據庫的完全操作權限。
六、sql腳本的生成
說明:可以選擇生成某個具體數據庫對象的腳本,也可以生成整個數據庫對象的腳本。
七、事件探查器的應用
說明:追蹤對后臺數據庫的每一個請求,以此可以定位前臺頁面的哪個屬性對應后臺表的哪個字段。
八、日志的截斷
backup log dbname with no_log
dbcc shrinkdatabase('dbname')