SQL Server中使用外部命令执行sql脚本

原创 2004年09月30日 13:50:00

Author:David Euler
Date: 2004/09/28
Email:de_euler-david@yahoo.com.cn

有任何问题,请与我联系:)

   有时候我们需要多次运行一个文件夹下所有的sql脚本(可能时txt或者sql等文本文件)来更新Schema,文件多的时候需要多次执行,那么可以使用多条语句来执行sql脚本。
--下面的查询语句在SQL Query中运行,将执行d:/vss下面的指定sql脚本,这些脚本的后缀都是txt
exec master..xp_cmdshell 'isql  -U  sa  -P  123  -i  d:/vss/MSSchema.txt '
exec master..xp_cmdshell 'isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030311.txt '
exec master..xp_cmdshell 'isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030416.txt'
exec master..xp_cmdshell 'isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030417.txt'
exec master..xp_cmdshell 'isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030513.txt'
exec master..xp_cmdshell 'isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030613.txt'
exec master..xp_cmdshell 'isql  -U  sa  -P  123  -i  d:/vss/MSSchema_031010.txt'
exec master..xp_cmdshell 'isql  -U  sa  -P  123  -i  d:/vss/MSSchema_050810.txt'
 
exec master..xp_cmdshell 'isql  -U  sa  -P  123  -i  d:/vss/TaxInvoice.sql'
 
当然,我们完全可以不使用存储过程,而只是在一个批处理文件updateschema.cmd中执行这些命令,下面是updateschema.cmd的内容:
;下面的命令将执行d:/vss下面的指定sql脚本:
isql  -U  sa  -P  123  -i  d:/vss/MSSchema.txt 
isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030311.txt
isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030416.txt
isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030417.txt
isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030513.txt
isql  -U  sa  -P  123  -i  d:/vss/MSSchema_030613.txt
isql  -U  sa  -P  123  -i  d:/vss/MSSchema_031010.txt
isql  -U  sa  -P  123  -i  d:/vss/MSSchema_050810.txt
 
注:
1.exec语句用来执行存储过程,xp_cmdshell是master数据库中的一个扩展存储过程,可以用来执行系统命令的字符串
  比如exec master..xp_cmdshell 'dir *.exe'查看当前目录下所有的exe文件。 
 
2.isql是sql server的一个实用工具,可以理解程一个外部程序,如果sql使用的默认安装,可以在C:/Program Files/Microsoft SQL Server/80/Tools/Binn目录中找到这个isql.exe文件,isql可以用来执行Transact-SQL语句,存储过程,以及脚本文件,
参数-U用来指定登陆服务器的用户名,-P用来指定密码,
参数-i用来指定读取执行的脚本文件,
参数-o用来指定保存输出结果的文件名。
 
3.其他Oracle,DB2,MySQL,PostgreSQL等几个常用数据库中也有相应的工具也可以实现类似的功能。

解决 SqlServer执行脚本,文件过大,内存溢出问题

执行.sql脚本文件,如果文件较大时,执行会出现内存溢出问题,可用命令替代 CMD中输入 osql -S localhost -U sa -P a -i D:\1.sql ,-S 服务器名 -U 用户...
  • u012339998
  • u012339998
  • 2016年12月21日 15:33
  • 1517

SQL server如何定时执行SQl脚本(函数)

SQL server如何定时执行一些脚本 具体步骤: 1. SQL企业管理器 2.启动SQL SERVER代理 3.右键作业 4.新建作业 5.选择"常规"项中输入作业名称 6.选择"步骤"项——点击...
  • yfz19890410
  • yfz19890410
  • 2012年01月17日 10:28
  • 3276

c# vs2013+sql2008r2 直接执行.sql脚本文件

c# vs2013+sql2008r2 直接执行.sql脚本文件怎样把.sql脚本文件能想在SSM中执行的脚本一样,这样我们就可以在程序中调用不同脚本执行后续的需求就不需要改动代码,同时也可以给非程序...
  • huanghw22
  • huanghw22
  • 2017年02月22日 13:45
  • 1067

一个用于远程执行SQL脚本的函数

一个用于远程执行SQL脚本的函数 当后台使用SQL Server数据库时,我们不可避免的需要在里面创建视图、存储过程等,但老从企业管理器里面去处理又不太方便,这里提供了一个用于远程连接SQL Se...
  • ANLJF
  • ANLJF
  • 2011年08月02日 12:38
  • 1241

批量执行SQL脚本

回头想想来这公司有大半年了,用SQL写了不少东西,现在把它发表出来。我首先感谢CSDN上的网友,在你们的帮助下我才能有韧有余地处理了N多有难度的东西。特别地感谢邹建,他热心的帮忙和他经典的书。/*--...
  • yangys
  • yangys
  • 2006年03月31日 18:48
  • 4958

mysql 和 sql server 的执行脚本对比

今天正在对mysql cluster 的部分测试,测试过程当中我对两个系统的同样结构的表格进行了查询,结果出人意料。脚本如下:DROP TABLE IF EXISTS urllog;CREATE TA...
  • bayaci
  • bayaci
  • 2007年09月07日 20:42
  • 1185

自动生成批量执行SQL脚本的批处理

场景: DBA那边给我导出了所有的存储、函数等等对象的创建脚本,有上千个文件. 现在需要将这些对象创建脚本导入到另外一个库,如何解决呢? 手动一个个执行显然不太现实. 于是手动写了一个批处理,...
  • edcvf3
  • edcvf3
  • 2013年04月15日 12:59
  • 4709

SQL Server 11_编写脚本和批处理

《SQL Server 2012 编程入门经典》 [美]Paul Atkinson, Robert Vieira著; 王军, 牛志玲 译 第11章 编写脚本和批处理   本章内容简...
  • ChristopherChen
  • ChristopherChen
  • 2016年07月08日 09:36
  • 2766

自动执行sql server脚本

有时我们需要自动执行一些sql server的语句,可以这样做:1)在sql server代理中新建一个作业a;2)在选择作业a,在作业a的属性中新建一个作业步骤:  步骤名中写入步骤的名称,类型中选...
  • caizisy
  • caizisy
  • 2006年05月11日 08:04
  • 1756

ADO执行SQL脚本文件

BOOL CADODatabase::Open(LPCTSTR lpstrConnection, LPCTSTR lpstrUserID, LPCTSTR lpstrPassword){ HRESUL...
  • hottomson
  • hottomson
  • 2004年09月20日 14:45
  • 1931
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL Server中使用外部命令执行sql脚本
举报原因:
原因补充:

(最多只允许输入30个字)