If you put three part naming, USE is not required.
> On Oct 31, 2019, at 12:34 PM, Koeller, Arne <[email protected]>
> wrote:
>
> Indeed, the PutDatabaseRecord processor will, in this instance, only work
> when specifying the DB name (called Catalog Name, I believe), schema name and
> table name.
>
> However, even when I specified the fully qualified name, the
> PutDatabaseRecord processor results in “USE Statement is not supported to
> switch between databases”.
> This has lead me to believe that NiFi, or one of the underlining libraries,
> sends a USE-SQL Query, such as
>
> USE <DBName>
>
> to the AzureSQL server.
> That would be totally fine if the SQL server was MySQL or MSSQL but because
> its AzureSQL, the USE-Query unfortunately fails since AzureSQL doesn’t
> support USE-Queries.
>
> Am I overlooking something? Or could this be an issue?
>
> Thank you!
>
>
> Von: Karteek Yadavilli <[email protected] <mailto:[email protected]>>
> Gesendet: Donnerstag, 31. Oktober 2019 17:08
> An: [email protected] <mailto:[email protected]>
> Betreff: [Spam:***** SpamScore] Re: Nifi Bug with AzureSQL
>
> How about the three part naming convention?
>
> <DBName>.<SchemaName>.<TableName>
>
>
>
> On Oct 31, 2019, at 12:06 PM, Koeller, Arne <[email protected]
> <mailto:[email protected]>> wrote:
>
> Hello there,
>
> I’m trying to Insert Avro Records into a AzureSQL database.
> The Flow is depicted below.
>
> Up until after the ExecuteSQL processor everything works fine. The output of
> the ExecuteSQL processor is as follows:
> <image004.png>
>
> Afterwards, this output is directed to the PutDatabaseRecord processor which
> has an AvroReader. The property configuration is as follows:
> <image006.png>
>
> If I leave the Catalog Name and/or the Schema Name blank, Nifi cant map the
> fields.
> <image007.png>
>
> If I however fill I Catalog Name and Schema Name, Nifi results in the Error
> “USE Statement is not supported to switch between databases”.
> Nifi apparently tries to use the “USE”-SQL Statement here. However, AzureSQL
> doesn’t support the “USE”-SQL Statement.
>
> A complete Stacktrace is added below.
>
> If you need additional information, I am happy to help.
> Thank you in advance.
>
> Kind regards,
>
> Arne
>
>
> Nifi Flow:
> <image012.jpg>
>
> Stracktrace:
> Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: USE statement is
> not supported to switch between databases. Use a new connection to connect to
> a different database.
> at
> com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262)
> at
> com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:283)
> at
> com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:129)
> at
> com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:37)
> at
> com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:26)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(SQLServerConnection.java:3019)
> at
> com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7194)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2979)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.connectionCommand(SQLServerConnection.java:3024)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.setCatalog(SQLServerConnection.java:3357)
> at
> com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData.switchCatalogs(SQLServerDatabaseMetaData.java:385)
> at
> com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData.getColumns(SQLServerDatabaseMetaData.java:614)
> at
> org.apache.commons.dbcp2.DelegatingDatabaseMetaData.getColumns(DelegatingDatabaseMetaData.java:227)
> at
> org.apache.commons.dbcp2.DelegatingDatabaseMetaData.getColumns(DelegatingDatabaseMetaData.java:227)
> at
> org.apache.nifi.processors.standard.PutDatabaseRecord$TableSchema.from(PutDatabaseRecord.java:1047)
> at
> org.apache.nifi.processors.standard.PutDatabaseRecord.lambda$executeDML$9(PutDatabaseRecord.java:603)
> ... 27 common frames omitted