This documentation supports the 11.3 version of BMC Discovery.

To view an earlier version of the product, select the version from the Product version menu.

SQL database discovery

Database integration is used when there is a single, centralized database to be accessed. Database discovery, on the other hand, is used to perform queries on databases that have been discovered running on discovery targets. It is analogous to running commands on discovered hosts. SQL discovery is specified with sql_discovery definitions. The definitions block must contain a group setting, which corresponds to a Database Credential in the user interface.

Like sql_integration definitions, the define blocks in sql_discovery ones require a query setting, which gives the SQL query to be used.

When calling an sql_discovery function, the target for the discovery must be specified via additional parameters. The functions take an endpoint parameter, which is a Host node or DDD node that identifies the target (like the target in built-in Discovery functions). Some database types require additional parameters to identify the target database, and most have a number of optional parameters. See the Driver Documentation for details. Additionally, databases might be listening only an a specific interface. The default behavior when a Host or DDD node is passed in the endpoint parameter is to attempt the connection on the IP currently used for discovery. If this is not the specific interface that the database is listening on, this connection will fail. To avoid this an additional address parameter can be passed. This should contain a string with the desired IP address, if this address is one of the current interfaces on the Host this will be used instead of the default behavior.

Here is a code snippet making a call into MySQL

// Use MySQL provider to get database info
  if mysql.bind_address then 
    all_dbs := MySQLDetails.showDatabases(
                endpoint := host,
                address  := mysql.bind_address,
                port     := port;
    all_dbs := MySQLDetails.showDatabases(
                endpoint := host,
                port     := port);
  end if;    

For more information, refer to the template_sql_deep_discovery pattern in Pattern templates.

Was this page helpful? Yes No Submitting... Thank you