The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends September 15. Request your voucher.
A lakehouse supports the definition of stored procedures and user defined scalar/tabular functions.
A connection is established using the SQL Server JDBC driver to the end point.
Neither DatabaseMetadata.getProcedures or DatabaseMetadata.getFunctions returns any metadata.
A similar request while referencing a Fabric Warehouse will.
Does not appear to be any documentation stating that this is a limitation (by design).
Hence, unclear if this a defect or not.
System.out.println("Get metadata");
int i = 0;
try (ResultSet rsFunctions = dbMeta.getProcedures("xxyyzz", "dbo", "%");) {
while (rsFunctions.next()) {
System.out.println(rsFunctions.getString(1) + "." + rsFunctions.getString(2) + "."
+ rsFunctions.getString(3));
++i;
}
}
System.out.println("Objects found " + i);
Hi @n_campbell,
Thanks for reaching out to the Microsoft fabric community forum. This is a current limitation of the Lakehouse SQL endpoint, procedure/function metadata isn’t surfaced through the "JDBC DatabaseMetaData" APIs yet. That’s why your Warehouse call works but the Lakehouse one doesn’t. As @Vinodh247 responded to your query and explained in detail why lakehouse SQL endpoint doesn't expose the metadata through the JDBC driver. Kindly go through his response and check if it answers your query.
I would also take a moment to thank @Vinodh247, for actively participating in the community forum and for the solutions you’ve been sharing in the community forum. Your contributions make a real difference.
If I misunderstand your needs or you still have problems on it, please feel free to let us know.
Best Regards,
Hammad.
Hi @n_campbell,
As we haven’t heard back from you, so just following up to our previous message. I'd like to confirm if you've successfully resolved this issue or if you need further help.
If yes, you are welcome to share your workaround so that other users can benefit as well. And if you're still looking for guidance, feel free to give us an update, we’re here for you.
Best Regards,
Hammad.
A fabric dwh is designed to behave like a full-fledged SQL db with full metadata support. That is why calls like DatabaseMetadata.getProcedures or getFunctions return metadata properly. A Lakehouse SQL endpoint, while it supports the definition and execution of scalar/tabular functions and stored procedures, does not currently expose the metadata through the JDBC driver. This is not clearly documented, but it is consistent with the current state of the Lakehouse endpoint, which is optimized for querying Delta tables and less for providing metadata introspection.
It appears to be either a limitation of the Lakehouse JDBC metadata support or an incomplete implementation. There is no official public documentation stating this explicitly, but Microsoft Fabric’s engineering notes indicate that metadata enumeration is fully implemented for Warehouses but partially implemented for Lakehouses.
Possible workarounds:
Please 'Kudos' and 'Accept as Solution' if this answered your query.
User | Count |
---|---|
16 | |
14 | |
8 | |
7 | |
5 |
User | Count |
---|---|
32 | |
31 | |
23 | |
15 | |
11 |