2010-01-25 115 views
0

我只是想知道是否可以从一个startup.sql脚本调用多个SQL脚本。从sql脚本调用SQL脚本!

StartUp.sql电话:

CreateDatabase.sql CreateStoreProcedureFirst.sql CreateStoreProcedureSecond.sql InsertDummyValues.sql otherscripts.sql ...等

在我的那一刻一次加载和运行一个文件..还有更多的脚本也运行,有时会错过脚本或按错误顺序执行!

希望这meakes感觉

感谢

+0

忘记补充说我正在使用SQL Server Management Studio Express创建和运行脚本。 – Belliez 2010-01-25 16:41:00

回答

2

是的 - 您可以使用SQLCMD(SQL Server 2005或更高版本)使T-SQL脚本更加灵活一些,使用等效的包含和基本变量。

的SQLCMD命令包括为,R为:

:r c:\someFolder\script1.sql 
:r c:\someFolder\script2.sql 

http://www.mssqltips.com/tip.asp?tip=1543

+0

完美工作,谢谢 – Belliez 2010-01-26 15:21:26

0

Oracle和MySQL的有命令行工具和经验,我知道你可以这样运行它们

mysql database_name <yoursql.sql> output.tab 

但是这意味着从CLI运行而不是从原始SQL语句运行,因此可能不是你在找什么。我不相信你可以从MySQL

拨打电话到系统
0

mcintyre321的链接看起来得心应手......

我用PowerShell中做同样的事情。我会按照他们需要编译的顺序,用前缀和1.x命名我的所有设置脚本。

然后我以正确的顺序将所有拆卸脚本命名为3.x。

在cmd窗口的命令:

PS builddir:\> .\buildsql.ps1 -currentbuilddir "C:\Documents and Settings\SGreene\My Documents\svn\Ticketing" -buildfile "sqlbuild.sql" -teardownfile 
"teardown.sql" 

PowerShell脚本(buildsql.ps1)

param($currentbuilddir,$buildfile1,$teardownfile) 

new-psdrive -name builddir -PSProvider filesystem -Root (resolve-path $currentbuilddir) 

cd builddir: 

rm $buildfile1 
rm $teardownfile 


Get-item COM_ENCRYPT_1* | ForEAch-object {cat $_ >> $buildfile1; "GO --SYSTEM INSERTED GO--------------" >> $buildfile1} 

Get-item COM_ENCRYPT_3* | ForEAch-object {cat $_ >> $teardownfile; "GO --SYSTEM INSERTED GO------------" >> $teardownfile} 

我第一次这样做,但它似乎工作确定。

0

你用过或听过的动态SQL?我就是这样做的...

DECLARE @ SQL1PROCEDURE为nvarchar(4000) DECLARE @ SQL2PROCEDURE为nvarchar(4000)

SET @ SQL1Procedure = 'CREATE PROC SP1 AS BEGIN 等等等等等等 END '

SET @ SQL2Procedure = 'INSERT DUMMY TABLE(FIELD1,FIELD2)VALUES(VALUE 1,VALUE2)'

EXEC @ SQL1Proc edure EXEC @ SQL2Procedure