ant sql任务问题

时间:2011-01-11 11:21:07

标签: sql ant task

我有这个应该创建表客户的ant脚本。我看到消息“正在更新数据库......”所以我知道它正在被调用,但是当它遇到sql任务时,没有任何东西被输出,所以我很难理解出了什么问题。 “升级完成”。消息永远不会显示,所以我认为某处有致命的错误。

我将sqljdbc4.jar驱动程序与%ANT_HOME%/ lib中的其他库放在一起,这些驱动程序没有问题。如果我知道哪里出了问题,我至少可以找到一个解决方案,但就目前而言,我会受到任何有类似问题的人的摆布。当然,这是一个我无法发现的明显问题。任何意见都将不胜感激。

该任务的代码如下:

<!-- ================================= 
          target: execute-script        
         ================================= -->      
<target name="execute-script">
        <echo message="Updating database..." />
        <sql print="true" failOnConnectionError="true"
              driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
              url="jdbc:sqlserver://localhost:1433;DatabaseName=database;selectmethod=cursor"
              userid="ctsql"
              password="ctsqlone">
           <transaction>
              CREATE TABLE customer
                 (First_Name char(50),
                 Last_Name char(50),
                 Address char(50),
                 City char(50),
                 Country char(25),
                 Birth_Date datetime);              
           </transaction>
        </sql>
        <echo message="Upgrade complete." />
</target>

2 个答案:

答案 0 :(得分:0)

您通常不会在事务中发出DDL语句(create table等)。你能尝试删除封闭的交易吗?

例如,Sybase不允许此类语句引发错误:

The 'CREATE TABLE' command is not allowed within a multi-statement transaction in the 'xxxxx' database.

我没有可以使用的SQL Server实例,但预计会有类似的行为。

答案 1 :(得分:0)

我已经回答了我自己的问题。我从我自己的自定义任务中调用了目标,并且捕获了异常,并且构建继续正常,没有显示任何错误消息。我目前还有其他问题,但我想我现在可以开始工作,因为我看到了我得到的错误。

再次道歉。