6

Liquibase を使用してデータベースの変更をデプロイしようとしていますが、ストアド プロシージャ コードの 1 つで以下のエラーが発生します。

SET NOCOUNT ON: Incorrect syntax near 'ON'.
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:62)
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:104)
    at liquibase.database.AbstractDatabase.execute(AbstractDatabase.java:1075)
    at liquibase.database.AbstractDatabase.executeStatements(AbstractDatabase.java:1059)
    at liquibase.changelog.ChangeSet.execute(ChangeSet.java:317)
    ... 5 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'ON'.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:775)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:676)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.execute(SQLServerStatement.java:649)
    at liquibase.executor.jvm.JdbcExecutor$1ExecuteStatementCallback.doInStatement(JdbcExecutor.java:92)
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)

sp は次のようになります。

    CREATE PROCEDURE [dbo].[TestSP] 
    AS
    BEGIN

        SET NOCOUNT ON;


        SELECT Col1, Col2
        FROM dbo.[Table1] 

    END
    GO
GRANT EXECUTE ON [dbo].[testsp] TO [SomeRole]
GO

変更セットは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog          http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">

  <changeSet id="6a07201a-133e-4613-b4cf-15becbf53baf" author="Nadeem">

    <sqlFile path="./Creation Scripts/Stored Procedures/testsp.sql" />
    <rollback>
      <sqlFile path="./Update Scripts/Stored Procedures/testsp.Rollback.sql" />
    </rollback>
  </changeSet>
</databaseChangeLog>
4

1 に答える 1

7

<sql>または<sqlFile>リファクタリングタグを使用しているようです。クエリを;とに自動的に分割しますGO。この場合、それはあなたが望むものではありません。

代わりに、属性splitStatementsをに設定するか、リファクタリングタグをfalse使用することができます。<createProcedure>

于 2013-02-12T13:57:47.570 に答える