DBMS Environment Reports (FireDAC)

From RAD Studio
Jump to: navigation, search

Go Up to Debugging and Support (FireDAC)

This topic guides you through different FireDAC checking and reporting options in a Database Management System (DBMS). These FireDAC reports provide the methods to report all the necessary details about the user environment, which drastically reduces the amount of time the customer, the developer, and the customer support professional spend in order to identify and solve a problem.

Things you can do with FireDac:

  • Using the FDExplorer or FDAdministrator---get the report of your persistent connection definition.
  • Using the TFDConnection Design Time Editor--get the detailed report about a connection definition.
  • By code--use Delphi code to integrate reporting capabilities into your application.

In general, a DBMS application may fail due to:

  • Missing DBMS client libraries.
  • Incorrect version of the DBMS client, server, or both.
  • Incorrect connection definition setup.
  • Compatibility issues like Unicode support.

The FireDAC checking and reporting options help you identify the source of the problem in a timely manner.

Using FDExplorer

The FDExplorer utility is the main tool to maintain the centralized persistent connection definitions.

To get a detailed report for your persistent connection definition, run FDExplorer. Choose a connection definition in the tree on the left. To get the detailed environment report for the connection, click the Info page on the right side.

The report includes the sections:

  • Connection definition parameters--complete set of connection definition parameters.
  • FireDAC info--details about your FireDAC build.
  • Client info--information about the DBMS client software, if it is properly installed so that FireDAC can load it successfully. Otherwise you get a failure error message.
  • Session info--information about the DBMS server and the user session, if FireDAC can successfully open the connection. Otherwise you get a failure error message.

The following image shows the report for a SQLite connection definition. In this case, the DBMS client software was loaded and the connection was activated.


Reports1.png


Using the TFDConnection Design Time Editor

The TFDConnection component's design-time editor is the environment to maintain temporary connection parameters. Double-click any TFDConnection component at design time. The FireDAC package will display the Connection Editor dialog.

To get a detailed report for your connection definition, as previously described, click the Info page.

Note: If a TFDConnection component is not connected, then the dialog tries to establish a temporary connection to a DBMS to fetch the server data.

The following image shows the resulting report.

Reports2.png

Using Delphi Code

You can start the DBMS report directly by calling the TFDConnection.GetInfoReport method:

procedure TMainForm.Button1Click(Sender: TObject);
begin
  FDConnection1.GetInfoReport(mmInfo.Lines);
end;

This method is declared as:

procedure GetInfoReport(AList: TStrings; AItems: TFDInfoReportItems);

The AItems flag's values are:

  • riConnDef--include connection definition parameters into a report.
  • riFireDAC--include FireDAC build info into a report.
  • riClientLog--include DBMS client loading log.
  • riClient--include DBMS client info into a report.
  • riSessionHints--include potential incompatibilities of FireDAC, DBMS client, and server.
  • riSession--include a DBMS session info into a report.
  • riTryConnect--try to connect to a DBMS, if not already connected.
  • riKeepConnected--when the method established a connection, keep it active.
  • AList--target string list to append the report.

See the <FireDAC>\Samples\Comp Layer\TFDConnection\InfoReport demo project.

Getting the FireDAC Build Number

If you want to display the FireDAC build number (for example, in the About box), then just refer to the CONST C_FD_Version in the FireDAC.Stan.Const unit. Example:

 C_FD_Version = '8.0.5 (Build 3365)';

Getting the DBMS version

To get a DBMS client and/or server version number (for example, to switch on or off a feature in your application), use the TFDConnection component and open the connection. Then use the following code sample, which shows how to access the physical metadata:

 
procedure TMainForm.Button2Click(Sender: TObject);
var
  oMetaIntf: IFDPhysConnectionMetadata;
begin
  // Get client and server versions
  oMetaIntf := FDConnection1.ConnectionMetaDataIntf;
  try
    ShowMessage(Format('Client version: %.10d; Server version: %.10d',
      [oMetaIntf.ClientVersion, oMetaIntf.ServerVersion]));
  finally
    oMetaIntf:= nil; // always release the interface before you close the connection
  end;
end;

You can find many predefined DBMS version numbers in the FireDAC.Stan.Const unit:

  • cvOracleXXX--for Oracle
  • mvMySQLXXX--for MySQL
  • svMSSQLXXX--for MSSQL
  • svSQLiteXXX--for SQLite
  • svPGSQLXXX--for PostgreSQL
  • ivIBXXX--for InterBase
  • ivFBXXX--for Firebird

The DBMS version is represented in FireDAC by a LongWord value consisting of 5 groups of digits, where each group has 2 digits (the leftmost group may have only one digit).

For example, mvMySQL032321 = 0323210000 corresponds to 3.23.21.0.0. This allows direct comparison of a client or server version with a constant:

if oMetaIntf.ServerVersion >= mvMySQL050000 then begin
  // execute MySQL 5.0 or higher specific SQL
end
else begin
  // execute pre-MySQL 5.0 SQL
end;

See Also

Example

  • <FireDAC>\Samples\Comp Layer\TFDConnection\InfoReport