解决sql脚本文件太大无法打开的问题
as we known,sql数据库高版本向低版本还原是不太可能但是又经常会碰到的事,今天实测了一种方法
步骤:任务—》生成脚本—》
下一步-》高级,选择数据库版本和编写脚本数据类型为架构和数据,可以保留数据。
继续下一步完成。
最终得到一个巨大的sql脚本文件
-》接下来首先要在低版本数据库中新建一个目标数据库,然后运行sql脚本文件即可
一般的sql文件我们都是直接在SqlServer的查询窗口直接执行的,但是这个巨大的sql文件实在是太大了,SqlServer甚至是记事本都无法打开。。。
于是就有了下面这个命令
sqlcmd -S .\SQL2008 -U sa -P sql2008 -d backAmsData_nd -r -i C:\Users\LYD\Documents\script.sql
命令执行之后就是漫长的等待了,毕竟1.5个G的文件。。。
注意,如果脚本太大,可以关闭stderr消息(不添加-r参数),以加快执行速度。
。。。。友情提示:这样导数据速度相当慢无比慢,最好还是尽量清除垃圾数据,减少数据量。。。如此一来也就不需要这个方法了。。。。。。。。。。。。。。。。。。。。。。
借别人的图说明一下
sqlcmd的命令参数如下:
1 [-U 登录 ID] [-P 密码]
2 [-S 服务器] [-H 主机名] [-E 可信连接]
3 [-d 使用数据库名称] [-l 登录超时值] [-t 查询超时值]
4 [-h 标题] [-s 列分隔符] [-w 列宽]
5 [-a 数据包大小] [-e 回显输入] [-I 允许带引号的标识符]
6 [-L 列出服务器] [-c 命令结束] [-D ODBC DSN 名称]
7 [-q "命令行查询"] [-Q "命令行查询" 并退出]
8 [-n 删除编号方式] [-m 错误级别]
9 [-r 发送到 stderr 的消息] [-V 严重级别]
10 [-i 输入文件] [-o 输出文件]
11 [-p 打印统计信息] [-b 出错时中止批处理]
12 [-X[1] 禁用命令,[退出的同时显示警告]]
13 [-O 使用旧 ISQL 行为禁用下列项]
14 <EOF> 批处理
15 自动调整控制台宽度
16 宽消息
17 默认错误级别为 -1 和 1
:On Error[ exit | ignore]
设置在脚本或批处理执行过程中发生错误时要执行的操作。
使用 exit 选项时,sqlcmd 退出,并显示相应的错误值。
使用 ignore 选项时,sqlcmd 会忽略错误,并继续执行批处理或脚本。默认情况下,会输出错误消息。
执行文件夹中多文件
@ECHO OFF
SET SQLCMD="SQLCMD"
SET SQLFILEPATH="C:\path\to\sql\files\"
SET SERVER="Server\Instance"
SET DB="Database"
SET LOGIN="sa"
SET PASSWORD="pass"
SET OUTPUT="C:\OutputLog.txt"
CD %SQLFILEPATH%
ECHO %date% %time% > %OUTPUT%
for %%f in (*.sql) do (
%SQLCMD% -S %SERVER% -d %DB% -U %LOGIN% -P %PASSWORD% -i %%~f >> %OUTPUT%
)