SQL Server 2008利用osql/ocmd批处理批量执行sql文件



http://database.51cto.com/art/201108/287587.htm

SQL Server 2008利用osql/ocmd批处理批量执行sql文件

2011-08-29 10:08 jay.windows 博客园 字号: T | T
一键收藏,随时查看,分享好友!

本文我们主要介绍了SQL Server 2008利用osql/ocmd批处理批量执行sql文件的方法,并以截图的方式给出了osql的使用语法,希望能够对您有所帮助。

AD:2013云计算架构师峰会课程资料下载

SQL Server 2008利用osql/ocmd批处理批量执行sql文件的使用方法是本文我们主要要介绍的内容,接下来我们就开始介绍这部分内容,我们假设在测试环境建了几十张表,保存了.sql文件,准备在正式环境重建的时候懒得一个个打开建了,做一在网上搜寻了一下,果然有简单点的方法。

利用osql/ocmd批处理批量执行sql文件

SQL Server 2008利用osql/ocmd批处理批量执行sql文件

注意:在上图中我们可以看到osql 并不支持 SQL Server 2008的所有功能,如果需要使用SQL Server 2008的所有功能可以使用ocmd命令。

有了osql/ocmd命令要批量执行sql文件当然需要写一个批处理命令,例如我们执行上面sql文件就可以在txt中编写下面的语句:

1.osql -S"127.0.0.1"  -U"sa" -P"sa" -d"Northwind" -i"%CD%/1.sql"  

2.osql -S"127.0.0.1"  -U"sa" -P"sa" -d"Northwind" -i"%CD%/2.sql"

然后保存成sql.bat同上面的1.sql和2.sql放到同一个文件下,在执行时双击sql.bat就可以了。

以上就是SQL Server 2008利用osql/ocmd批处理批量执行sql文件的全部,本文就介绍到这里了,希望本次的介绍能够对您有所收获!



命令行下执行SQL语句 (ISQL或OSQL)


osql   实用工具  
  osql   实用工具使您得以输入   Transact-SQL   语句、系统过程和脚本文件。该实用工具通过   ODBC   与服务器通讯。  
   
  语法  
  osql  
          [-?]   |  
          [-L]   |  
          [  
                  {  
                          {-U   login_id   [-P   password]}  
                          |   -E  
                  }  
                  [-S   server_name[\instance_name]]   [-H   wksta_name]   [-d   db_name]  
                  [-l   time_out]   [-t   time_out]   [-h   headers]  
                  [-s   col_separator]   [-w   column_width]   [-a   packet_size]  
                  [-e]   [-I]   [-D   data_source_name]  
                  [-c   cmd_end]   [-q   "query"]   [-Q   "query"]  
                  [-n]   [-m   error_level]   [-r   {0   |   1}]  
                  [-i   input_file]   [-o   output_file]   [-p]  
                  [-b]   [-u]   [-R]   [-O]  
          ]  
   
  参数-?  
   
  显示   osql   开关的语法摘要。  
   
  -L  
   
  列出在本地配置的服务器和在网络上广播的服务器的名称。  
   
  -U   login_id  
   
  用户登录   ID。登录   ID   区分大小写。  
   
  -P   password  
   
  是用户指定的密码。如果未使用   -P   选项,osql   将提示输入密码。如果在命令提示符的末尾使用   -P   选项而不带密码,osql   使用默认密码   (NULL)。密码区分大小写。  
   
  OSQLPASSWORD   环境变量使您得以为当前会话设置默认密码。因此,不需要通过硬编码来在批处理文件中设置密码。  
   
  如果没有为   -P   选项指定密码,osql   首先检查   OSQLPASSWORD   变量。如果未设置值,osql   使用默认密码   (NULL)。以下示例在命令提示符处设置   OSQLPASSWORD   变量,然后访问   osql   实用工具:  
   
  C:\>SET   OSQLPASSWORD=abracadabra  
  C:\>osql    
   
  -E  
   
  使用信任连接而不请求密码。  
   
  -S   server_name[\instance_name]  
   
  指定要连接的   Microsoft®   SQL   Server™   2000   实例。在该服务器上指定   server_name   以连接到   SQL   Server   的默认实例。在该服务器上指定   server_name\instance_name   以连接到一个已命名的   SQL   Server   2000   的实例。如果未指定服务器,osql   将连接到本地计算机上的   SQL   Server   默认实例。从网络上的远程计算机执行   osql   时,此选项是必需的。  
   
  -H   wksta_name  
   
  是工作站名称。工作站名称存储在   sysprocesses.hostname   中并由   sp_who   显示。如果未指定此选项,则采用当前计算机名称。  
   
  -d   db_name  
   
  启动   osql   时发出一个   USE   db_name   语句。  
   
  -l   time_out  
   
  指定   osql   登录超时之前的秒数。登录到   osql   的默认超时为   8   秒。  
   
  -t   time_out  
   
  指定命令超时之前的秒数。如果未指定   time_out   值,则命令不会超时。  
   
  -h   headers  
   
  指定要在列标题之间打印的行数。默认为每一查询结果集打印一次标题。用   –1   指定不打印标题。如果使用   -1,则在参数和设置之间一定不能有空格(可以是   -h-1,不能是   -h   –1)。  
   
  -s   col_separator  
   
  指定列分隔符字符,其默认为空格。若要使用对操作系统有特殊含义的字符(例如   |   ;   &   <   >),请将该字符用双引号   (")   引起来。  
   
  -w   column_width  
   
  允许用户设置屏幕输出的宽度。默认为   80   个字符。当输出行达到其最大屏幕宽度时,会拆分为多个行。  
   
  -a   packet_size  
   
  使您得以请求不同大小的数据包。packet_size   的有效值在   512   到   65535   之间。osql   的默认值为服务器的默认值。数据包大小的增加可以提高较大脚本执行的性能,在这种执行中   GO   命令之间   SQL   语句的数量很重要。Microsoft   的测试表明   8192   是大容量复制操作典型的最快设置。可以请求更大的数据包大小,但如果请求不能得到批准,则   osql   默认为服务器的默认值。  
   
  -e  
   
  回显输入。  
   
  -I  
   
  设置   QUOTED_IDENTIFIER   连接选项为开启。  
   
  -D   data_source_name  
   
  连接到用   Microsoft   SQL   Server   的   ODBC   驱动程序定义的   ODBC   数据源。osql   连接使用该数据源中指定的选项。  
   
   
   
  说明     该选项不适用于其它驱动程序定义的数据源。  
   
   
  -c   cmd_end  
   
  指定命令终止符。默认情况下,通过单独在一行中输入   GO   来终止命令并将其发送到   SQL   Server   2000。在重置命令终止符时,不要使用对操作系统有特殊含义的   Transact-SQL   保留字或字符,无论其前面是否有反斜杠。  
   
  -q   "query"  
   
  启动   osql   时执行查询,但是在查询完成时不退出   osql。(注意查询语句不应包含   GO)。如果从批处理文件中发出查询,请使用   %variables   或环境   %variables%。例如:  
   
  SET   table   =   sysobjects  
  osql   /q   "Select   *   from   %table%"  
   
  将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。  
   
  -Q   "query"  
   
  执行查询并立即退出   osql。将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。  
   
  -n  
   
  从输入行中删除编号和提示符号   (>)。  
   
  -m   error_level  
   
  自定义错误信息的显示。显示指定的或更高严重级别错误的消息数、状态和错误级别。不显示严重级别低于指定级别的错误的任何信息。用   -1   指定与消息一起返回所有标题,即使是信息类的消息。如果用   –1,则在参数和设置之间不能有空格(可以是   -m-1,不能是   -m   -1)。  
   
  -r   {0   |   1}  
   
  将消息输出重定向到屏幕   (stderr)。如果未指定参数,或指定参数为   0,则仅重定向严重级别为   17   或更高的错误信息。如果指定参数为   1,则将重定向所有消息输出(包括   "print")。  
   
  -i   input_file  
   
  标识包含一批   SQL   语句或存储过程的文件。小于   (<)   比较运算符可以用来代替   –i。  
   
  -o   output_file  
   
  标识从   osql   接收输出的文件。大于   (>)   比较运算符可以用来代替   –o。  
   
  如果   input_file   不是   Unicode   并且没有指定   -u,则   output_file   将存储为   OEM   格式。如果   input_file   是   Unicode   或者指定了   -u,则   output_file   将存储为   Unicode   格式。  
   
  -p  
   
  打印性能统计。  
   
  -b  
   
  指定发生错误时   osql   退出并返回一个   DOS   ERRORLEVEL   值。当   SQL   Server   错误信息的严重级别为   10   或更高时,返回给   DOS   ERRORLEVEL   变量的值为   1;否则返回   0。Microsoft   MS-DOS&reg;   批处理文件可以测试   DOS   ERRORLEVEL   的值并适当处理错误。  
   
  -u  
   
  指定   output_file   存储为   Unicode   格式,而不管   input_file   为何种格式。  
   
  -R  
   
  指定在将货币、日期和时间数据转换为字符数据时   SQL   Server   ODBC   驱动程序使用客户端设置。  
   
  -O  
   
  为与   isql   的早期版本行为匹配,指定停用某些   osql   功能。下列功能停用:    
   
  EOF   批处理  
   
   
  控制台宽度自动调整  
   
   
  宽信息    
  同时还将   DOS   ERRORLEVEL   的默认值设置为   –1。  
   
  注释  
  osql   实用工具从操作系统直接启动,并且使用本文中列出的区分大小写的选项。启动后,osql   接受   SQL   语句并将它们交互地发送到   SQL   Server。结果被格式化并显示在屏幕上   (stdout)。可使用   QUIT   或   EXIT   退出   osql。  
   
  如果启动   osql   时未指定用户名,SQL   Server   2000   将检查环境变量并使用它们,例如   osqluser=(user)   或   osqlserver=(server)。如果未设置环境变量,则使用工作站用户名。如果未指定服务器,则使用工作站名称。  
   
  如果   -U   或   -P   选项都没有使用,则   SQL   Server   2000   将尝试使用   Windows   身份验证模式进行连接。身份验证基于运行   osql   的   Microsoft   Windows   NT&reg;   用户帐户。交互性使用   osql  
  若要交互性使用   osql,请在命令提示符处键入   osql   命令(以及任何选项)。  
   
  可以通过键入类似下行的命令,在包含由   osql   执行的查询的文件(例如   Stores.qry)中进行读取:  
   
  osql   /U   alma   /P   /i   stores.qry  
   
  该文件必须包含命令终止符。    
   
  可以通过键入类似下行的命令,在包含查询的文件(例如   Titles.qry)中进行读取并将结果导向另一文件:  
   
  osql   /U   alma   /P   /i   titles.qry   /o   titles.res  
   
  交互性使用   osql   时,为把操作系统文件读入到命令缓冲区,可使用:r   file_name。不要在文件中包含命令终止符;在完成编辑后交互输入终止符。  
   

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaolu666/archive/2010/05/02/5549706.aspx


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值