Sql server Scriptella-SQLServerException:为更新生成了一个结果集
我是Scriptella的第一次用户,我真的很难开始使用它 我似乎在SQLServer2012和MySQL上都遇到了同样的问题。使用这两种方法,我可以创建表和插入记录,但在使用SELECT语句时会出现以下错误 SQL Server使用驱动程序mssql-jdbc-8.4.0.jre8.jar(和早期版本):Sql server Scriptella-SQLServerException:为更新生成了一个结果集,sql-server,exception,resultset,scriptella,Sql Server,Exception,Resultset,Scriptella,我是Scriptella的第一次用户,我真的很难开始使用它 我似乎在SQLServer2012和MySQL上都遇到了同样的问题。使用这两种方法,我可以创建表和插入记录,但在使用SELECT语句时会出现以下错误 SQL Server使用驱动程序mssql-jdbc-8.4.0.jre8.jar(和早期版本): 驱动程序异常:com.microsoft.sqlserver.jdbc.SQLServerException:已生成更新的结果集 使用驱动程序MYSQL-connector-java-5.1
驱动程序异常:com.microsoft.sqlserver.jdbc.SQLServerException:已生成更新的结果集 使用驱动程序MYSQL-connector-java-5.1.45.jar的MYSQL: 驱动程序异常:java.sql.SQLException:无法通过executeUpdate()或executeLargeUpdate()发出SELECT 我无法确定这是脚本的问题还是服务器配置问题。我尝试在sql server上打开和关闭nocount,但没有成功 我试过ScriptellaVersion1.1和Version1.2,但都有同样的问题 我被这个问题困扰了好几年,在关注stackoverflow.com之后,我终于在这里发布了我的第一个问题。我非常感谢任何帮助 请参阅下面我使用的脚本以及stacktrace。谢谢
<!DOCTYPE etl SYSTEM "http://scriptella.org/dtd/etl.dtd">
<etl>
<properties>
<include href="etl.properties"/> <!--Load from external properties file-->
</properties>
<!-- Connection declarations -->
<connection driver="$driver" url="$url" user="$user" password="$password" classpath="$classpath"/>
<!--ETL Queries and Scripts -->
<script>
<!-- CREATE TABLE WORKED!
create table TestDB.dbo.test (
id int
); -->
<!-- INSERT WORKED!
insert into TestDB.dbo.test (id) values (1);
-->
<!-- BELOW FAILS -->
select * from TestDB.dbo.GLAccounts
<script>
insert into TestDB.dbo.test (id) values (?1);
</script>
</script>
</etl>
从TestDB.dbo.GLAccounts中选择*
插入TestDB.dbo.test(id)值(?1);
etl scriptsS java-jar~/Downloads/scriptella/scriptella-1.1/scriptella.jar my-first-etl.xml
2020年8月12日上午8:11:33文件中的XML配置警告:/home/user1/workspace/etl scripts/my first etl.XML(28:14):元素类型“script”的内容必须匹配(包括|方言| onerror)。
2020年8月12日上午8:11:33执行进度。初始化属性:1%
2020年8月12日上午8:11:36 com.microsoft.sqlserver.jdbc.TDSChannel启用SSL
警告:TLSv1已协商。请更新服务器和客户端以至少使用TLSv1.2。
2020年8月12日上午8:11:36执行进度。初始化连接JdbcConnection{com.microsoft.sqlserver.jdbc.SQLServerConnection},方言{microsoft SQL Server 11.00.2218},属性{}:5%
2020年8月12日上午8:11:36执行进度。/etl/script[1]准备:10%
2020年8月12日上午8:11:36注册JMX mbean:scriptella:type=etl,url=“file:/home/user1/workspace/etl scripts/my first etl.xml”
2020年8月12日上午8:11:36 Script/home/user1/workspace/etl scripts/my-first-etl.xml执行失败。
位置:/etl/script[1]
JDBC提供程序异常:无法执行语句
错误声明:
从TestDB.dbo.GLAccounts中选择*
错误代码:[null,0]
驱动程序异常:com.microsoft.sqlserver.jdbc.SQLServerException:已生成更新的结果集。
etl scriptsS java-jar~/Downloads/scriptella/scriptella-1.1/scriptella.jar my-first-etl.xml
2020年8月12日上午8:20:19文件中的XML配置警告:/home/user1/workspace/etl scripts/my first etl.XML(28:14):元素类型“script”的内容必须匹配(包括|方言| onerror)。
2020年8月12日上午8:20:19执行进度。初始化属性:1%
2020年8月12日上午8:20:21 com.microsoft.sqlserver.jdbc.TDSChannel启用SSL
警告:TLSv1已协商。请更新服务器和客户端以至少使用TLSv1.2。
2020年8月12日上午8:20:22执行进度。初始化连接JdbcConnection{com.microsoft.sqlserver.jdbc.SQLServerConnection},方言{microsoft SQL Server 11.00.2218},属性{}:5%
2020年8月12日上午8:20:22执行进度。/etl/script[1]准备:10%
2020年8月12日上午8:20:22注册JMX mbean:scriptella:type=etl,url=“file:/home/user1/workspace/etl scripts/my first etl.xml”
2020年8月12日上午8:20:22 Script/home/user1/workspace/etl scripts/my-first-etl.xml执行失败。
位置:/etl/script[1]
JDBC提供程序异常:无法执行语句
错误声明:
从TestDB.dbo.GLAccounts中选择*
错误代码:[null,0]
驱动程序异常:com.microsoft.sqlserver.jdbc.SQLServerException:已生成更新的结果集。
etl scriptsS java-jar~/Downloads/scriptella/scriptella-1.1/scriptella.jar-debug my-first-etl.xml
2020年8月12日上午9:30:52文件中的XML配置警告:/home/user1/workspace/etl scripts/my first etl.XML(28:14):元素类型“script”的内容必须匹配(包括|方言| onerror)。
2020年8月12日上午9:30:52执行进度。初始化属性:1%
2020年8月12日上午9:30:53 registerDriver:SQLServerDriver:1
2020年8月12日上午9:30:53发现驱动程序类com.microsoft.sqlserver.jdbc.SQLServerDriver
2020年8月12日上午9:30:53 DriverManager.getConnection(“jdbc:sqlserver://XXX.XXX.XXX.XXX:12345")
2020年8月12日上午9:30:53尝试com.microsoft.sqlserver.jdbc.SQLServerDriver
2020年8月12日上午9:30:54 com.microsoft.sqlserver.jdbc.TDSChannel启用SSL
警告:TLSv1已协商。请更新服务器和客户端以至少使用TLSv1.2。
2020年8月12日上午9:30:54 SQLWarning:原因(TLSv1已协商。请更新服务器和客户端以至少使用TLSv1.2。)
2020年8月12日上午9:30:54 getConnection返回com.microsoft.sqlserver.jdbc.SQLServerDriver
2020年8月12日上午9:30:54 jdbc:sqlserver://XXX.XXX.XXX.XXX:12345: 已启用语句缓存(缓存大小64)。语句分隔符“;”。自动提交:错误。
2020年8月12日上午9:30:54执行进度。初始化连接JdbcConnection{com.microsoft.sqlserver.jdbc.SQLServerConnection},方言{microsoft SQL Server 11.00.2218},属性{}:5%
2020年8月12日上午9:30:54执行进度。/etl/script[1]准备:10%
2020年8月12日上午9:30:54注册JMX mbean:scriptella:type=etl,url=“file:/home/user1/workspace/etl scripts/my first etl.xml”
2020年8月12日上午9:30:54执行脚本/etl/script[1]
2020年8月12日上午9:30:55 SQLState(空)供应商代码(0)
2020年8月12日上午9:30:55回滚J
etl-scriptsS java -jar ~/Downloads/scriptella/scriptella-1.1/scriptella.jar my-first-etl.xml
Aug 12, 2020 8:11:33 AM <WARNING> XML configuration warning in file:/home/user1/workspace/etl-scripts/my-first-etl.xml(28:14): The content of element type "script" must match "(include|dialect|onerror)".
Aug 12, 2020 8:11:33 AM <INFO> Execution Progress.Initializing properties: 1%
Aug 12, 2020 8:11:36 AM com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
WARNING: TLSv1 was negotiated. Please update server and client to use TLSv1.2 at minimum.
Aug 12, 2020 8:11:36 AM <INFO> Execution Progress.Initialized connection JdbcConnection{com.microsoft.sqlserver.jdbc.SQLServerConnection}, Dialect{Microsoft SQL Server 11.00.2218}, properties {}: 5%
Aug 12, 2020 8:11:36 AM <INFO> Execution Progress./etl/script[1] prepared: 10%
Aug 12, 2020 8:11:36 AM <INFO> Registered JMX mbean: scriptella:type=etl,url="file:/home/user1/workspace/etl-scripts/my-first-etl.xml"
Aug 12, 2020 8:11:36 AM <SEVERE> Script /home/user1/workspace/etl-scripts/my-first-etl.xml execution failed.
Location: /etl/script[1]
JDBC provider exception: Unable to execute statement
Error statement:
select * from TestDB.dbo.GLAccounts
Error codes: [null, 0]
Driver exception: com.microsoft.sqlserver.jdbc.SQLServerException: A result set was generated for update.
etl-scriptsS java -jar ~/Downloads/scriptella/scriptella-1.1/scriptella.jar my-first-etl.xml
Aug 12, 2020 8:20:19 AM <WARNING> XML configuration warning in file:/home/user1/workspace/etl-scripts/my-first-etl.xml(28:14): The content of element type "script" must match "(include|dialect|onerror)".
Aug 12, 2020 8:20:19 AM <INFO> Execution Progress.Initializing properties: 1%
Aug 12, 2020 8:20:21 AM com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
WARNING: TLSv1 was negotiated. Please update server and client to use TLSv1.2 at minimum.
Aug 12, 2020 8:20:22 AM <INFO> Execution Progress.Initialized connection JdbcConnection{com.microsoft.sqlserver.jdbc.SQLServerConnection}, Dialect{Microsoft SQL Server 11.00.2218}, properties {}: 5%
Aug 12, 2020 8:20:22 AM <INFO> Execution Progress./etl/script[1] prepared: 10%
Aug 12, 2020 8:20:22 AM <INFO> Registered JMX mbean: scriptella:type=etl,url="file:/home/user1/workspace/etl-scripts/my-first-etl.xml"
Aug 12, 2020 8:20:22 AM <SEVERE> Script /home/user1/workspace/etl-scripts/my-first-etl.xml execution failed.
Location: /etl/script[1]
JDBC provider exception: Unable to execute statement
Error statement:
select * from TestDB.dbo.GLAccounts
Error codes: [null, 0]
Driver exception: com.microsoft.sqlserver.jdbc.SQLServerException: A result set was generated for update.
etl-scriptsS java -jar ~/Downloads/scriptella/scriptella-1.1/scriptella.jar -debug my-first-etl.xml
Aug 12, 2020 9:30:52 AM <WARNING> XML configuration warning in file:/home/user1/workspace/etl-scripts/my-first-etl.xml(28:14): The content of element type "script" must match "(include|dialect|onerror)".
Aug 12, 2020 9:30:52 AM <INFO> Execution Progress.Initializing properties: 1%
Aug 12, 2020 9:30:53 AM <FINE> registerDriver: SQLServerDriver:1
Aug 12, 2020 9:30:53 AM <FINE> Found driver class com.microsoft.sqlserver.jdbc.SQLServerDriver
Aug 12, 2020 9:30:53 AM <FINE> DriverManager.getConnection("jdbc:sqlserver://XXX.XXX.XXX.XXX:12345")
Aug 12, 2020 9:30:53 AM <FINE> trying com.microsoft.sqlserver.jdbc.SQLServerDriver
Aug 12, 2020 9:30:54 AM com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
WARNING: TLSv1 was negotiated. Please update server and client to use TLSv1.2 at minimum.
Aug 12, 2020 9:30:54 AM <FINE> SQLWarning: reason(TLSv1 was negotiated. Please update server and client to use TLSv1.2 at minimum.)
Aug 12, 2020 9:30:54 AM <FINE> getConnection returning com.microsoft.sqlserver.jdbc.SQLServerDriver
Aug 12, 2020 9:30:54 AM <FINE> jdbc:sqlserver://XXX.XXX.XXX.XXX:12345: Statement cache is enabled (cache size 64). Statement separator ';'. Autocommit: false.
Aug 12, 2020 9:30:54 AM <INFO> Execution Progress.Initialized connection JdbcConnection{com.microsoft.sqlserver.jdbc.SQLServerConnection}, Dialect{Microsoft SQL Server 11.00.2218}, properties {}: 5%
Aug 12, 2020 9:30:54 AM <INFO> Execution Progress./etl/script[1] prepared: 10%
Aug 12, 2020 9:30:54 AM <INFO> Registered JMX mbean: scriptella:type=etl,url="file:/home/user1/workspace/etl-scripts/my-first-etl.xml"
Aug 12, 2020 9:30:54 AM <FINE> Executing script /etl/script[1]
Aug 12, 2020 9:30:55 AM <FINE> SQLState(null) vendor code(0)
Aug 12, 2020 9:30:55 AM <FINE> Rolling back JdbcConnection{com.microsoft.sqlserver.jdbc.SQLServerConnection}
Aug 12, 2020 9:30:55 AM <FINE> Closing JdbcConnection{com.microsoft.sqlserver.jdbc.SQLServerConnection}
Aug 12, 2020 9:30:55 AM <SEVERE> Script /home/user1/workspace/etl-scripts/my-first-etl.xml execution failed.
Location: /etl/script[1]
JDBC provider exception: Unable to execute statement
Error statement:
select * from TestDB.dbo.GLAccounts
Error codes: [null, 0]
Driver exception: com.microsoft.sqlserver.jdbc.SQLServerException: A result set was generated for update.
---------------Debug Stack Trace-----------------
scriptella.core.ExceptionInterceptor$ExecutionException: /etl/script[1] failed: Unable to execute statement
at scriptella.core.ExceptionInterceptor.execute(ExceptionInterceptor.java:44)
at scriptella.core.Session.execute(Session.java:103)
at scriptella.execution.EtlExecutor.execute(EtlExecutor.java:227)
at scriptella.execution.EtlExecutor.execute(EtlExecutor.java:183)
at scriptella.tools.launcher.EtlLauncher.execute(EtlLauncher.java:276)
at scriptella.tools.launcher.EtlLauncher.launch(EtlLauncher.java:193)
at scriptella.tools.launcher.EtlLauncher.main(EtlLauncher.java:321)
Caused by: scriptella.jdbc.JdbcException: Unable to execute statement. Error statement:
select * from TestDB.dbo.GLAccounts. Error codes: [null, 0]
at scriptella.jdbc.SqlExecutor.statementParsed(SqlExecutor.java:140)
at scriptella.jdbc.SqlParserBase.handleStatement(SqlParserBase.java:129)
at scriptella.jdbc.SqlParserBase.parse(SqlParserBase.java:72)
at scriptella.jdbc.SqlExecutor.execute(SqlExecutor.java:85)
at scriptella.jdbc.SqlExecutor.execute(SqlExecutor.java:63)
at scriptella.jdbc.JdbcConnection.executeScript(JdbcConnection.java:211)
at scriptella.core.ScriptExecutor.execute(ScriptExecutor.java:49)
at scriptella.core.ContentExecutor.execute(ContentExecutor.java:73)
at scriptella.core.ElementInterceptor.executeNext(ElementInterceptor.java:56)
at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:41)
at scriptella.core.ElementInterceptor.executeNext(ElementInterceptor.java:56)
at scriptella.core.ExceptionInterceptor.execute(ExceptionInterceptor.java:39)
... 6 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: A result set was generated for update.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:886)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:767)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7375)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3200)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:247)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:222)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(SQLServerStatement.java:710)
at scriptella.jdbc.StatementWrapper$Simple.update(StatementWrapper.java:167)
at scriptella.jdbc.SqlExecutor.statementParsed(SqlExecutor.java:130)
... 17 more
<!DOCTYPE etl SYSTEM "http://scriptella.org/dtd/etl.dtd">
<etl>
<description>Scriptella ETL File Template.</description>
<properties>
<include href="etl.properties"/> <!--Load from external properties file-->
</properties>
<!-- Connection declarations -->
<connection driver="$driver" url="$url" user="$user" password="$password" classpath="$classpath"/>
<!--ETL Queries and Scripts -->
<query>
select * from TestDB.dbo.GLAccounts;
<script>
insert into TestDB.dbo.test (id) values (?1);
</script>
</query>
</etl>