2012-09-09 49 views
1

這裏是我的腳本:爲什麼NA​​nt以錯誤的順序執行我的sql腳本?

<?xml version="1.0"?> 
<project name="createAndPopulateDB" default="deploy"> 
    <property name="sql.connstring" value="Provider=SQLOLEDB;Server=G-PC\sqlexpress;Integrated Security=SSPI" /> 
    <property name="createDB" value="BuildTestDatabase.sql" /> 
    <property name="populateDB" value="CreateTables.sql"/> 
<target name="deploy"> 
    <echo message="* Connecting to ${sql.connstring}"/> 
    <foreach item="File" property="sql.script"> 
     <in> 
      <items> 
       <include name="${createDB}" /> 
       <include name="${populateDB}" /> 
      </items> 
     </in> 
     <do> 
      <echo message="* Executing ${path::get-file-name(sql.script)}"/> 
      <sql connstring="${sql.connstring}" delimiter="go" delimstyle="Line" batch="false" source="${sql.script}"/> 
     </do> 
    </foreach> 
</target> 
</project> 

的惡性腳本應該調用兩個TSQL程序。第一個tsql旨在丟棄數據庫(如果存在),如果不存在,則創建它。第二個檢查是否存在表格,如果存在,請刪除它。同樣,如果它不是,它用一個簡單的表填充創建的數據庫。

我的問題是爲什麼它先運行populateDB腳本?

回答

1

我發現確定運行tsql程序順序的最佳方法是通過依賴屬性附加到單獨的目標。這將按預定順序運行它們,並且如果NAnt腳本是存儲庫的一部分,則邏輯上非常容易。