Posted in Database

MSSQL 指令

MSSQL 指令 Posted on 2007 年 08 月 29 日Leave a comment

連線
osql -U sa

本機trusted連線
osql -E

更改sa 密碼
osql -E -Q "EXEC sp_password @new='123456', @loginame = 'sa'"

連線資料庫
osql -U sa -d 資料庫名稱

查詢
先登入
> SELECT TOP 1000 * FROM table名稱
> GO


osql -E -d 資料庫名稱 -q "SELECT TOP 1000 * FROM table名稱"

備份
osql -E -n -Q "BACKUP DATABASE 資料庫名稱 TO DISK = 'c:資料庫名稱.mssql'"

還原
osql -E -n -Q "RESTORE DATABASE 資料庫名稱 FROM DISK = 'c:資料庫名稱.mssql'"

-i : 輸入SQL指令檔
-o : 輸出訊息至檔案

ref: http://support.microsoft.com/default.aspx?scid=kb;EN-US;322336
ref: http://www.officemail.net.cn/article.asp?id=190
ref: http://www.officemail.net.cn/article.asp?id=189
http://technet.microsoft.com/zh-tw/library/ms187048.aspx
http://support.microsoft.com/kb/325003/zh-tw

問題 -2008/05/22 added

訊息 5133,層級 16,狀態 1,伺服器 MSSQL,行 1
檔案 "E:Microsoft SQL ServerMSSQL.1MSSQLDatacross.mdf" 的目錄查閱失敗,有作業系統錯誤
3(系統找不到指定的路徑。)。
訊息 3156,層級 16,狀態 3,伺服器 MSSQL,行 1
檔案 'cross' 無法還原到 'E:Microsoft SQL ServerMSSQL.1MSSQLDatacross.mdf'。請使用
WITH MOVE 來識別該檔案的有效位置。
訊息 5133,層級 16,狀態 1,伺服器 MSSQL,行 1
檔案 "E:Microsoft SQL ServerMSSQL.1MSSQLDatacross_log.LDF" 的目錄查閱失敗,有作業系統錯
3(系統找不到指定的路徑。)。
訊息 3156,層級 16,狀態 3,伺服器 MSSQL,行 1
檔案 'cross_log' 無法還原到 'E:Microsoft SQL
ServerMSSQL.1MSSQLDatacross_log.LDF'。請使用 WITH MOVE 來識別該檔案的有效位置。
訊息 3119,層級 16,狀態 1,伺服器 MSSQL,行 1
計劃 RESTORE 陳述式的時候識別出問題。先前的訊息可提供詳細資料。
訊息 3013,層級 16,狀態 1,伺服器 MSSQL,行 1
RESTORE DATABASE 正在異常結束。

解決: 這情況在不同一台主機底下其資料目錄不同的關系,所以還原時要定義指定目的目錄即可

restore database cross from disk = 'c:cross.bak'  with
   move 'cross' to 'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDatacross.mdf',
   move 'cross_log' to 'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDatacross_log.ldf'

   ps: 第一個 cross → 資料庫名稱
         cross.bak → 備份檔名稱
         第二個 cross → 邏輯名稱
         cross_log  → 邏輯名稱

   可以把 MDF、LDF 放在不同目錄裡,

restore database cross from disk = 'c:cross.bak'  with
   move 'cross' to 'C:cross.mdf',
   move 'cross_log' to 'C:cross_log.ldf'

完整性的備份流程

1.) 新增一個 cross_device 裝置,使用 disk 方式,備至 c:cross.bak

exec sp_addumpdevice 'disk' , 'cross_device' , 'c:cross.bak'

2.) 檢查資料庫 cross_db 的一致性

use cross_db
dbcc checkdb ('cross_db') with no_infomsgs

   ps: no_infomsgs = 只顯示重要的錯誤訊息

3.) 開始備份資料庫 cross_db 至 cross_device 裝置,也是就備至 c:cross.bak

backup database cross_db to cross_device with init

   ps: init – 覆寫原備份檔

秀出全部有那些資料庫 -add 2008/05/23
exec sp_helpdb

exec sp_databases  也可以,但資訊較少       added 2008/10/17

查出資料庫檔 MDF 放置點
exec sp_helpdb 資料庫名稱

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *