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