原文:http://www.cnblogs.com/hai-ping/p/3939150.htmlhtml
最近遇到一个问题,在sqlserver的查询分析器里面执行一个超过100MB的数据库脚本,发现总是报“引起类型为“System.OutOfMemoryException”的异常”,上网查了一下,主要是由于.sql的脚本文件过大(通常都超过100M)形成内存没法处理这么多的数据。 sql
解决办法有各类各样,例如: 数据库
一、用记事本打开脚本文件,把文件依次剪切成10-15M左右的文本文件,而后再一个个执行; 工具
二、或者在脚本导出时,分表导出,这样导出的文本size也不会很大; sqlserver
以上问题虽然简便,可是步骤繁多,要是表和数据太多,着实是一种劳力折磨!另外若是表之间是有主外键关系的,分数据得当心谨慎,不然报错让你抓狂! 命令行
好!说了这么多,到底有什么解决方案了呢! server
解决方案就是使用cmd下的osql命令,脚本大不是问题,关键是你得有耐心,执行大脚本,是须要必定的时间的!实际上也是! htm
osql 是一个 Microsoft Windows 32 命令提示符工具,您可使用它运行 Transact-SQL 语句和脚本文件! blog
在开始->运行 中键入cmd,使用 "OSQL -?"命令,就能够显示osql命令行的帮助。
注意:osql 工具的选项列表是区分大小的,在使用时注意。 内存
注意:在上图中咱们能够看到osql 并不支持 SQL Server 2012的全部功能,若是须要使用SQL Server 2012的全部功能可使用ocmd命令。
一、使用osql执行单个 Transact-SQL 语句
在键入cmd与下面这一个相似的命令:
osql -E -q "Transact-SQL statement"
例如:sql -E -q "use myDB select * from myTable"
其中 -E 表示使用 Microsoft Windows NT 身份验证。
也可使用sa帐户,具体能够看看上面的命令!
而-q 表示运行 Transact-SQL 语句,可是在查询结束时不退出 osql。
如要运行 Transact-SQL 语句并退出 osql,请使用 -Q 参数来代替 -q。
一、使用osql执行一个大脚本文件
将该工具指向一个脚本文件,步骤:
a.建立一个包含一批 Transact-SQL 语句的脚本文件(如 myfile.sql)。
b.打开命令提示符,键入与下面相似的一个命令,而后按 ENTER 键:
osql -E -i input_file
其中input_file 是脚本文件及其完整路径。例如,若是脚本文件 myfile.sql 在 C:\users文件夹中,
请将参数 myfile 替换为 C:\users\myfile.sql。
该脚本文件的运行结果将出如今控制台窗口中。
若是您想将运行结果定向到一个文件,请向上述命令中添加 -o output_file 参数。例如:
osql -E -i input_file -o output_file
其中output_file 是输出文件及其完整路径。