zwjcool opened a new issue, #10323:
URL: https://github.com/apache/seatunnel/issues/10323

   ### Search before asking
   
   - [x] I had searched in the 
[issues](https://github.com/apache/seatunnel/issues?q=is%3Aissue+label%3A%22bug%22)
 and found no similar issues.
   
   
   ### What happened
   
   **Issue Description:** 
   When the SQL Server database name contains a hyphen - (e.g., gssd-gsp_mes), 
the following error occurs: Incorrect syntax near '-'.
   
   **Root Cause Analysis:** The issue likely originates from the handling of 
databaseName in SqlServerCatalog.java, where the square bracket delimiters [] 
are missing. Specifically, in the following method:
   
   ```
   protected String getListTableSql(String databaseName) {
       return "SELECT TABLE_SCHEMA, TABLE_NAME FROM " + databaseName + 
".INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'";
   }
   ```
   
   
   
   ### SeaTunnel Version
   
   2.3.12
   
   ### SeaTunnel Config
   
   ```conf
   N/A
   ```
   
   ### Running Command
   
   ```shell
   ../bin/seatunnel.sh --config ./test_a.conf
   
   source {
     SqlServer-CDC {
       plugin_output = "aesg_phoenix"
       username = "xx"
       password = "xx"
       startup.mode = "initial"
       database-names = ["gssd-gsp_mes"]
      
       table-names = [
       "gssd-gsp_mes.dbo.repair_detail"
       ]
       url = 
"jdbc:sqlserver://10.x.x.x:3000;encrypt=false;trustServerCertificate=true;databaseName=gssd-gsp_mes"
     }
   }
   ```
   
   ### Error Exception
   
   ```log
   Exception in thread "main" 
org.apache.seatunnel.core.starter.exception.CommandExecuteException: SeaTunnel 
job executed failed
           at 
org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:228)
           at org.apache.seatunnel.core.starter.SeaTunnel.run(SeaTunnel.java:40)
           at 
org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient.main(SeaTunnelClient.java:40)
   Caused by: org.apache.seatunnel.api.table.factory.FactoryException: 
ErrorCode:[API-06], ErrorDescription:[Factory initialize failed] - Unable to 
create a source for identifier 'SqlServer-CDC'.
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.restoreAndPrepareSource(FactoryUtil.java:168)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSource(FactoryUtil.java:86)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parseSource(MultipleTableJobConfigParser.java:394)
           at 
org.apache.seatunnel.engine.core.parse.MultipleTableJobConfigParser.parse(MultipleTableJobConfigParser.java:244)
           at 
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.getLogicalDag(ClientJobExecutionEnvironment.java:123)
           at 
org.apache.seatunnel.engine.client.job.ClientJobExecutionEnvironment.execute(ClientJobExecutionEnvironment.java:191)
           at 
org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:165)
           ... 2 more
   Caused by: org.apache.seatunnel.common.utils.SeaTunnelException: Failed to 
querySQLResult
           at 
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.AbstractJdbcCatalog.tableExists(AbstractJdbcCatalog.java:438)
           at 
java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
           at 
java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
           at 
java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1632)
           at 
java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:294)
           at 
java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206)
           at 
java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161)
           at 
java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300)
           at 
java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681)
           at 
org.apache.seatunnel.api.table.catalog.Catalog.buildCatalogTablesWithErrorCheck(Catalog.java:209)
           at 
org.apache.seatunnel.api.table.catalog.Catalog.getTables(Catalog.java:157)
           at 
org.apache.seatunnel.api.table.catalog.CatalogTableUtil.lambda$getCatalogTables$0(CatalogTableUtil.java:124)
           at java.base/java.util.Optional.map(Optional.java:265)
           at 
org.apache.seatunnel.api.table.catalog.CatalogTableUtil.getCatalogTables(CatalogTableUtil.java:118)
           at 
org.apache.seatunnel.api.table.catalog.CatalogTableUtil.getCatalogTables(CatalogTableUtil.java:98)
           at 
org.apache.seatunnel.connectors.seatunnel.cdc.sqlserver.source.SqlServerIncrementalSourceFactory.lambda$createSource$1(SqlServerIncrementalSourceFactory.java:116)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.createAndPrepareSource(FactoryUtil.java:180)
           at 
org.apache.seatunnel.api.table.factory.FactoryUtil.restoreAndPrepareSource(FactoryUtil.java:136)
           ... 8 more
   Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax 
near '-'.
           at 
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:265)
           at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1676)
           at 
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:615)
           at 
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:537)
           at 
com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7766)
           at 
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:3810)
           at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:268)
           at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:242)
           at 
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:456)
           at 
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.AbstractJdbcCatalog.querySQLResultExists(AbstractJdbcCatalog.java:657)
           at 
org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.AbstractJdbcCatalog.tableExists(AbstractJdbcCatalog.java:421)
           ... 25 more
   ```
   
   ### Zeta or Flink or Spark Version
   
   _No response_
   
   ### Java or Scala Version
   
   openjdk 11
   
   ### Screenshots
   
   _No response_
   
   ### Are you willing to submit PR?
   
   - [ ] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [x] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to