`
Scliu123
  • 浏览: 41401 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

批量执行sql脚本

阅读更多

--批量执行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脚本通常涉及到以下...

    批量执行SQL脚本(附源码).zip

    批量执行SQL脚本的能力对于开发者和DBA(数据库管理员)来说至关重要,尤其是在处理大量数据更新、表结构修改或数据迁移时。本文将深入探讨批量执行SQL脚本的原理以及提供的源码实现。 首先,批量执行SQL脚本通常...

    批量执行Sql脚本工具(含代码)

    因此,出现了批量执行Sql脚本的工具,如我们这里提到的"批量执行Sql脚本工具",它能有效提升工作效率,确保数据操作的一致性和准确性。该工具由作者自行编写,并提供了源码,这为用户提供了更多的定制化可能。 批量...

    SQL小工具 批量执行SQL脚本文件(WinForm开发 .Net 2.0)

    1、批量执行SQL脚本文件; 2、文件拷贝操作。 其中,App.config为工具配置文件, ;DataBase = master;User ID=sa; password="/&gt; 上述 ;DataBase = master;User ID=sa; password="/&gt;中,value的值为数据库...

    SQL脚本批量执行,方便大量的SQL脚本执行。

    这时,批量执行SQL脚本的能力就显得尤为重要。本文将详细探讨如何进行SQL脚本的批处理执行,并提供相关策略和工具。 首先,了解批处理的基本概念。批处理是指将一系列命令或操作组合在一起,一次性执行,以提高工作...

    批量执行SQL脚本程序(SqlScriptHelper)

    批量执行SQL脚本是数据库管理员、开发人员和数据分析师经常遇到的需求,这涉及到大量SQL命令的自动化处理,以提高效率并减少手动操作的错误。"SqlScriptHelper"是一个专门为此目的设计的小型工具,它允许用户方便地...

    批量执行sql脚本文件,支持oracle、sql server2005

    批量执行sql脚本的web工程,通过myeclipse导入工程即可,经过测试可以批量导入oracle与sql server2005的脚本,而且是web页面的向导式执行*.sql脚本文件 支持事务,任何执行过程出现异常,均会提示并且回滚操作,页面...

    SQLServer脚本批量执行工具

    首先,让我们详细了解一下批量执行SQL脚本的重要性。在数据库维护或更新过程中,经常需要运行一系列SQL命令来创建表、索引、视图、存储过程等,或者执行数据迁移和更新操作。手动逐一执行这些脚本不仅耗时,还容易...

    SQL脚本批量执行脚本

    此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。并且生成日志文件,可查看执行过的所有脚本名称和错误信息。 注意: (1) 使用前需确保已将sqlcmd加入到系统环境变量中。 (2...

    批量执行SQL脚本工具-PowerShell.7z

    本主题将聚焦于如何使用PowerShell来批量执行SQL脚本,这对于数据库的自动化维护和更新非常有用。PowerShell是一种命令行外壳程序和脚本语言,它为系统管理员提供了更高级别的控制和自动化能力。 在"批量执行SQL...

    sqlserver批量执行脚本文件

    在SQL Server环境中,批量执行SQL脚本文件是数据库管理员和开发者日常工作中常见的一项任务。本文将深入探讨如何在.NET环境中高效地实现这一功能,并对比使用sqlcmd工具的方法。以下是一些关键知识点: 1. **SQL ...

    批量执行SQL server 脚本工具

    自动读取指定目录sql文件,科批量执行SQL server 脚本,fw4.0

    C# 执行SQL脚本

    9. **批量执行SQL脚本**: 对于大量SQL命令,可以考虑使用SqlBulkCopy类进行批量插入,提高效率。但这不适用于DML(INSERT、UPDATE、DELETE)以外的操作,如DDL(CREATE、ALTER、DROP)。 10. **异步执行**: C#...

    Mysql和Oracle按照指定顺序批量执行SQL脚本小程序

    Mysql和Oracle按照指定顺序批量执行SQL脚本小程序

    批量执行SQL SERVER脚本 Python脚本

    Python脚本,批量执行数据库脚本,适用于SQL Server数据库,后续会上传MySQL的批量执行sql脚本

    SQL Server批量脚本执行工具 SQLBatchRunnerSetup.zip

    SQLBatch Runner是面向SQL Server设计的SQL脚本批量执行工具,通过简单的点击鼠标,即可方便的在多个SQL Server实例上运行多个脚本,并且记录详细的执行日志,提供事务保护,将多脚本执行任务变得高效、可控、易于...

    Oracle & SQLServer 脚本批量执行方法

    本文将详细介绍如何在Oracle与SQL Server中批量执行SQL脚本,以提高数据库管理和维护的效率。 一、Oracle批量执行SQL脚本 1. **SQL*Plus工具**: Oracle提供了SQL*Plus,一个命令行工具,可以用于执行SQL语句和PL/...

    TSQL_Express【批量执行SQL】批量执行sql文件工具

    TSQL_Express是一款专为数据库管理员和开发人员设计的工具,它允许用户批量执行SQL脚本,极大地提高了工作效率。批量执行SQL是数据库管理中的一个常见需求,特别是在数据迁移、更新或维护时。本文将深入探讨批量执行...

Global site tag (gtag.js) - Google Analytics