当前位置: 代码迷 >> SQL >> sqlServer批处理SQL资料
  详细解决方案

sqlServer批处理SQL资料

热度:108   发布时间:2016-05-05 12:10:53.0
sqlServer批处理SQL文件

?

为了进一步简化在更新程序时对SQL脚本的执行操作,我们特别引用了批处理命令来自动执行指定的脚本,而无需在数据库的查询分析器中进行执行。那么什么是批处理文件呢?如何对批处理文件进行编写呢?编写和执行的过程中要注意什么问题呢?下面就这三个问题做具体的解释。
? 什么是批处理文件?
后缀是bat的文件就是批处理文件,是一种文本文件,是将DOS命令成批地写进一个文件中,运行时系统按顺序依次运行,效率较高。简单的说,它的作用就是自动的连续执行多条命令,批处理文件的内容就是一条一条的命令。

? 如何编写批处理文件?
在知道如何编写批处理文件之前,我们先要了解批处理文件的构成。
简单的说,批处理文件由OSQL参数,及其对应的参数值构成。常见的OSQL参数如下所示:
1 ?osql ? ? ? ? ? ? ? ? ? [-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
18 ? [-? 显示语法摘要]
? ?
下面具体讲述如何使用批处理文件执行SQL脚本。
在使用批处理文件执行SQL脚本时,我们只需要用到如下几个参数
序号 参数名 参数解释 示例
1 /u SQLServer用户名 /u sa
2 /p SQLServer密码 /p sa
3 -s 数据库IP -s 192.168.0.45
4 -d 数据库名 -d Northwind
5 -r 发送到 stderr 的消息 (后面不带参数值)
6 -i 输入文件 -i b.sql
7 -o 输出文件 -o a.txt
8 pause 命令暂停标识 (后面不带参数)

编写步骤:
在创建批处理文件之前,首先要创建好两个文件,即:1、要使用批处理文件执行的SQL脚本文件(后缀名为.sql的文件)。2、输出文件(即执行结果文件,后缀名为.txt文件)。
1、 新建批处理文件。先在指定的位置新建一个TXT文件,然后给该文件命名(如命名为aa),再将此文件的后缀名.txt修改成.bat。然后系统会给出如下提示,点击按钮【是】即可。

2、 编写批处理文件。把光标打在新建的批处理文件上,单击鼠标右键,选择以记事本的方式打开批处理文件,即可参照如下例子进行编写。
示例一:(数据库没密码的情况)
OSQL /U sa -S 192.168.0.153 -d NorthWind -r -i a.sql -o a.txt
Pause

示例二:(数据库有密码的情况)
OSQL /U sa /P sa -S 192.168.0.153 -d NorthWind -r -i b.sql -o a.txt
Pause

3、 保存批处理文件。在编写完批处理文件命令后,点击记事本上方工具栏的【文件】---【保存】,或者直接使用快捷键ctrl+s即可。
4、 执行批处理文件。双击批处理文件,点击Enter按钮即可。如果在一个批处理文件中含有多条命令,那么一直惦记Enter按钮,一直到DOS页面显示“按任意键继续...”即可。
5、 查看批处理文件执行结果。双击输出文件,即可看到批处理文件执行结果

?

?

--直接用命令创建2个bat文件,进行批处理

遍历目录中的Sql文件,逐个执行,无需指定具体文件。

创建2个bat文件,CREATE_ALL.bat和CREATE_ALL_File.bat文件。具体内容如下:

CREATE_ALL.bat
ECHO OFF
REM 请设定下面内容
REM SET Driver=D:
REM SET FilePath=D:\MyWork\SQL\
SET User_ID=andy
SET User_PWD=andy
SET ServerName=AndyServer
SET HostName=172.23.9.27
SET DBName=andy

SET Next=------------------------------------------
SET CommandStr=isql -U %User_ID%
SET CommandStr=%CommandStr% -P %User_PWD%
SET CommandStr=%CommandStr% -S %ServerName%
SET CommandStr=%CommandStr% -H %HostName%
SET CommandStr=%CommandStr% -d %DBName%
SET CommandStr=%CommandStr% -i %FilePath%

REM %Driver%
REM CD %FilePath%
REM 执行指定目录中的所有的sql文件
for %%i in (*.sql) do call CREATE_ALL_File.bat %%i
ECHO SQL文件执行完成,请确认上面的执行结果。
pause

  相关解决方案