为什么NA​​nt以错误的顺序执行我的sql脚本?

时间:2012-09-09 14:15:11

标签: tsql nant

这是我的剧本:

<?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>

NAnt脚本应该调用两个tsql程序。第一个tsql用于删除数据库(如果存在),如果不存在,则创建它。第二个检查表是否存在表,如果存在,则删除它。同样,如果不是,则使用简单表填充创建的数据库。

我的问题是为什么它首先运行populateDB脚本?

1 个答案:

答案 0 :(得分:1)

我发现确定tsql程序运行顺序的最佳方法是通过附加到不同目标的depends属性。这将以预定的顺序运行它们,并且如果NAnt脚本是存储库的一部分,则非常容易逻辑地遵循。