--批量执行sql脚本
--批量执行文件夹下面的所有sql脚本
create procedure exeSqlFileBatch
(
@returnCode int=0 output, --返回错误数
@returnSucceed int=0 output, --成功执行文件数量
@serverName varchar(1000), --服务器名称
@dataBase varchar(500), --数据库名称
@uid varchar(50), --用户名
@pwd varchar(50), --密码
@filePath varchar(5000) --文件路径
)
with encryption as
declare @strsql varchar(6000)
set @strsql=' dir '+@filePath+'\*.sql'
--创建临时表
create table #tmptb(fileDes varchar(5000))
--将文件夹信息插入临时表
insert into #tmptb
exec master.dbo.xp_cmdshell @strsql
if @@error <> 0
begin
set @returnCode=1
return @returnCode
end
--从临时表中提取有用的记录
select dbo.f_split(fileDes,' ')as fileDes
into #tmepUse from #tmptb
where fileDes like '%.sql'
--定义游标
declare fetFileName cursor
for select fileDes from #tmepUse
declare @strFileName varchar(2000)
declare @reExe int
--定义错误信息表
create table #errorTable(errorFileName varchar(1000))
--打开游标并历遍进行取值
open fetFileName
fetch next from fetFileName into @strFileName
while @@FETCH_STATUS = 0
begin
--执行该数据脚本文件
set @strsql='osql -S '+@serverName
+' -U '+@uid +' -P '+@pwd +' -d '+@dataBase +' -i '
+@filePath +'\'+@strFileName
exec @reExe=master.dbo.xp_cmdShell @strsql
--统计执行错误数执行成功数
if @reExe=0
set @returnSucceed=@returnSucceed+1
else
begin
--没办法,xp_cmdShell 总返回零。可能无法获取osql所发生的错误
insert #errorTable values(@strFileName)
set @returnCode=@returnCode+1
end
fetch next from fetFileName into @strFileName
end
close fetFileName
deallocate fetFileName
--返回错误错误信息
select *from #errorTable
return
--测试
declare @returnCode int
declare @returnSucceed int
set @returnCode=0
set @returnSucceed=0
exec exeSqlFileBatch @returnCode output,@returnSucceed output,'服务器名(或服务器IP)','数据库名','登录名','密码','sql文件路径(如:c:/)'
print @returnCode
print @returnSucceed
--测试前请先创建函数
/*-------------------
--实现split功能 的函数
--yangys 2005/07/04
--只返回最后的一串
*/
create function f_split(
@SourceSql varchar(8000),--字符串
@StrSeprate varchar(10)--分隔符
)
returns varchar(1000)
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i> =1
begin
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
return @SourceSql
end
-- 允许配置高级选项
EXEC sp_configure 'show advanced options', 1
GO
-- 重新配置
RECONFIGURE
GO
-- 启用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
--重新配置
RECONFIGURE
GO
--执行想要的xp_cmdshell语句
Exec xp_cmdshell 'query user'
GO
--用完后,要记得将xp_cmdshell禁用(出于安全考虑)
-- 允许配置高级选项
EXEC sp_configure 'show advanced options', 1
GO
-- 重新配置
RECONFIGURE
GO
-- 禁用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 0
GO
--重新配置
RECONFIGURE
GO
分享到:
相关推荐
批量执行SQL脚本的解决方案应运而生,它能够有效地自动化这个过程,提高工作效率,确保数据操作的一致性和准确性。下面,我们将深入探讨批量执行SQL脚本的核心知识点及其应用场景。 批量执行SQL脚本通常涉及到以下...
批量执行SQL脚本的能力对于开发者和DBA(数据库管理员)来说至关重要,尤其是在处理大量数据更新、表结构修改或数据迁移时。本文将深入探讨批量执行SQL脚本的原理以及提供的源码实现。 首先,批量执行SQL脚本通常...
因此,出现了批量执行Sql脚本的工具,如我们这里提到的"批量执行Sql脚本工具",它能有效提升工作效率,确保数据操作的一致性和准确性。该工具由作者自行编写,并提供了源码,这为用户提供了更多的定制化可能。 批量...
1、批量执行SQL脚本文件; 2、文件拷贝操作。 其中,App.config为工具配置文件, ;DataBase = master;User ID=sa; password="/> 上述 ;DataBase = master;User ID=sa; password="/>中,value的值为数据库...
这时,批量执行SQL脚本的能力就显得尤为重要。本文将详细探讨如何进行SQL脚本的批处理执行,并提供相关策略和工具。 首先,了解批处理的基本概念。批处理是指将一系列命令或操作组合在一起,一次性执行,以提高工作...
批量执行SQL脚本是数据库管理员、开发人员和数据分析师经常遇到的需求,这涉及到大量SQL命令的自动化处理,以提高效率并减少手动操作的错误。"SqlScriptHelper"是一个专门为此目的设计的小型工具,它允许用户方便地...
批量执行sql脚本的web工程,通过myeclipse导入工程即可,经过测试可以批量导入oracle与sql server2005的脚本,而且是web页面的向导式执行*.sql脚本文件 支持事务,任何执行过程出现异常,均会提示并且回滚操作,页面...
首先,让我们详细了解一下批量执行SQL脚本的重要性。在数据库维护或更新过程中,经常需要运行一系列SQL命令来创建表、索引、视图、存储过程等,或者执行数据迁移和更新操作。手动逐一执行这些脚本不仅耗时,还容易...
此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。并且生成日志文件,可查看执行过的所有脚本名称和错误信息。 注意: (1) 使用前需确保已将sqlcmd加入到系统环境变量中。 (2...
本主题将聚焦于如何使用PowerShell来批量执行SQL脚本,这对于数据库的自动化维护和更新非常有用。PowerShell是一种命令行外壳程序和脚本语言,它为系统管理员提供了更高级别的控制和自动化能力。 在"批量执行SQL...
在SQL Server环境中,批量执行SQL脚本文件是数据库管理员和开发者日常工作中常见的一项任务。本文将深入探讨如何在.NET环境中高效地实现这一功能,并对比使用sqlcmd工具的方法。以下是一些关键知识点: 1. **SQL ...
自动读取指定目录sql文件,科批量执行SQL server 脚本,fw4.0
9. **批量执行SQL脚本**: 对于大量SQL命令,可以考虑使用SqlBulkCopy类进行批量插入,提高效率。但这不适用于DML(INSERT、UPDATE、DELETE)以外的操作,如DDL(CREATE、ALTER、DROP)。 10. **异步执行**: C#...
Mysql和Oracle按照指定顺序批量执行SQL脚本小程序
Python脚本,批量执行数据库脚本,适用于SQL Server数据库,后续会上传MySQL的批量执行sql脚本
SQLBatch Runner是面向SQL Server设计的SQL脚本批量执行工具,通过简单的点击鼠标,即可方便的在多个SQL Server实例上运行多个脚本,并且记录详细的执行日志,提供事务保护,将多脚本执行任务变得高效、可控、易于...
本文将详细介绍如何在Oracle与SQL Server中批量执行SQL脚本,以提高数据库管理和维护的效率。 一、Oracle批量执行SQL脚本 1. **SQL*Plus工具**: Oracle提供了SQL*Plus,一个命令行工具,可以用于执行SQL语句和PL/...
TSQL_Express是一款专为数据库管理员和开发人员设计的工具,它允许用户批量执行SQL脚本,极大地提高了工作效率。批量执行SQL是数据库管理中的一个常见需求,特别是在数据迁移、更新或维护时。本文将深入探讨批量执行...