Sqlserver命令SQLCMD備份恢復資料庫
阿新 • • 發佈:2019-02-07
1,備份,建立指令碼bak.bat,內容
指令碼呼叫恢復的語句文字
說明:init代表覆蓋之前的檔案,如果noinit代表append to the most recent backup
2,還原,建立還原指令碼restore.bat,內容
3,批量生成備份庫sql
sqlcmd -i "f:\dbbak\bak.sql"
指令碼呼叫恢復的語句文字
:connect .
backup database db1 to disk = 'f:\dbbak\db1.bak' with init
go
說明:init代表覆蓋之前的檔案,如果noinit代表append to the most recent backup
2,還原,建立還原指令碼restore.bat,內容
sqlcmd -i "f:\dbbak\restore.sql"
pause
如果還原到指定庫,追加 -d dbname即可
如果還原後亂碼,可以指定-f 指定字符集,比如-f 65001 使用utf-8字符集
:connect . USE master GO ALTER DATABASE [db1] SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO --檢視是否還有使用者連線 --SELECT * FROM sys.[sysprocesses] WHERE DB_NAME([dbid])='db1' --GO ALTER DATABASE [db1] SET MULTI_USER GO RESTORE DATABASE [db1] FROM DISK = N'f:\dbbak\db1.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10 go
3,批量生成備份庫sql
SELECT
'backup database '+ name+' to disk = ''f:\dbbak\'+name+'.bak'' with init'
FROM Master..SysDatabases
where dbid>=7; -- 注意條件
4,其他
C:\Users\Administrator>sqlcmd -? Microsoft (R) SQL Server 命令列工具 版本 11.0.2100.60 NT x64 版權所有 (c) 2012 Microsoft。保留所有權利。 用法: Sqlcmd [-U 登入 ID] [-P 密碼] [-S 伺服器] [-H 主機名] [-E 可信連線] [-N 加密連線][-C 信任伺服器證書] [-d 使用資料庫名稱] [-l 登入超時值] [-t 查詢超時值] [-h 標題] [-s 列分隔符] [-w 螢幕寬度] [-a 資料包大小] [-e 回顯輸入] [-I 允許帶引號的識別符號] [-c 命令結束] [-L[c] 列出伺服器[清除輸出]] [-q "命令列查詢"] [-Q "命令列查詢" 並退出] [-m 錯誤級別] [-V 嚴重級別] [-W 刪除尾隨空格] [-u unicode 輸出] [-r[0|1] 傳送到 stderr 的訊息] [-i 輸入檔案] [-o 輸出檔案] [-z 新密碼] [-f <內碼表> | i:<內碼表>[,o:<內碼表>]] [-Z 新建密碼並退出] [-k[1|2] 刪除[替換]控制字元] [-y 可變長度型別顯示寬度] [-Y 固定長度型別顯示寬度] [-p[1] 列印統計資訊[冒號格式]] [-R 使用客戶端區域設定] [-K 應用程式意向] [-M 多子網故障轉移] [-b 出錯時中止批處理] [-v 變數 = "值"...] [-A 專用管理連線] [-X[1] 禁用命令、啟動指令碼、環境變數[並退出]] [-x 禁用變數替換] [-? 顯示語法摘要]
登入執行dml語句
C:\Users\Administrator>sqlcmd
1> use t
2> go
已將資料庫上下文更改為 't'。
1> create table t(id int);
2> go
1> insert into t values(1);
2> go
(1 行受影響)
1> select * from t;
2> go
id
-----------
1
(1 行受影響)
如果是遠端需要指定使用者名稱,密碼地址埠,-U sa -P 123456 -S 192.168.1.100,1433