[SQL Server]一次执行资料夹内的.sql 指令码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[SQL Server]一次执行资料夹内的.sql 指令码相关的知识,希望对你有一定的参考价值。

原文:[SQL Server]一次执行资料夹内的.sql 指令码

初始资料库时,我们Developers们会准备很多.sql指令码来建立资料表、检视甚至初始资料,那麽要怎麽一次执行资料夹内的*.sql或是指定的几个.sql指令码?

来节省一点点初始化资料库的作业时间。

 

好在我们有MSDN使用sqlcmd 执行指令码的范例:

sqlcmd -S myServer\instanceName -i C:\myScript.sql

如果只有几个,串成bat档或是powershell也很方便,但如果很多个,

一来要重复写很多次,二来也没办法Handle到指定资料夹内的.sql都要执行的需求

 

很快的从网路找到答案,然後我们改写了语法,并且把执行的log写到指定的Log档名中。

1.执行指定资料夹内的.sql

@echo off
rem 资料库IP\资料库执行个体名称
set dbIp=stanley\SQL2014
rem 资料库名称
set dbName=TSQL2014
rem 登入帐号
set dbUsrAcc=ImDeveloper
rem 使用者密码
set dbUsrPwd=Passw0rd
rem 整理完毕的SQL指令集资料夹位置
set batchFilePath="C:\TestDB\db_script\folder"

rem 程式开始执行
cd %batchFilePath%

FOR /f %%i IN (‘DIR *.Sql /B‘) do call :RunScript %%i
GOTO :END

:RunScript
Echo Executing %1
sqlcmd -S %dbIp% -d %dbName% -U %dbUsrAcc% -P %dbUsrPwd% -i %1 >>view.log
Echo Completed %1

:END

2.透过清单.sql档案执行

list.sql 清单(sql01~06和bat档同目录)

:r .\sql01.sql 
:r .\sql02.sql 
:r .\sql03.sql 
:r .\sql04.sql 
:r .\sql05.sql 
:r C:\testDB\db_script\sql06.sql

批次档内容

@echo off
rem 资料库IP\资料库执行个体名称
set dbIp=stanley\SQL2014
rem 资料库名称
set dbName=TSQL2014
rem 登入帐号
set dbUsrAcc=ImDeveloper
rem 使用者密码
set dbUsrPwd=Passw0rd
rem 清单.SQL档放置路径
set dbSqlFilePath="C:\test\db_script\list.sql"


rem 程式开始执行
cd %batchFilePath%
sqlcmd -S %dbIp% -d %dbName% -U %dbUsrAcc% -P %dbUsrPwd% -i %dbSqlFilePath% >view.log
PAUSE

@echo on

 

今天同事来问,一整个忘记当初怎麽串的,快笔记下来。

 

参考:

使用 sqlcmd 连接至 Database Engine

使用 sqlcmd 执行 Transact-SQL 指令码档案

Run all SQL files in a directory

SQL Server – Executing Multiple Script Files Using SQLCMD

 

以上是关于[SQL Server]一次执行资料夹内的.sql 指令码的主要内容,如果未能解决你的问题,请参考以下文章

使用SQL Server 2005作业设置定时任务

SQL Server2005数据库中有一个员工信息表employees,要查看该表中工资料(salary)等于5000的员工,应执行()

急急急!应用程序在sql server2005里执行的sql语句怎样查看!

sql server执行几十万条sql很慢,怎么办?

SQL Server存储过程的初步认知

为什么Sql Server的查询有时候第一次执行很慢,第二次,第三次执行就变快了