2010-01-25 188 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