Generic ODBC Backend ==================== * Native: Yes * Master: Yes * Slave: Yes * Superslave: Yes * Case: All lower * DNSSEC: Yes * Disabled data: Yes * Comments: Yes * Zone caching: Yes * Module name: godbc * Launch name: ``godbc`` The Generic ODBC Backend (godbc) is a child of the Generic SQL (gsql) backend, similar to the gmysql and gpgsql backends. It uses `UnixODBC `__ and installed drivers to connect to the databases supported by said drivers. .. warning:: When there is a more specific generic sql backend (like gmysql or gsqlite3), it is highly recommended to use that backend instead! Enabling the backend -------------------- When building PowerDNS yourself, append ``godbc`` to ``--with-modules`` or ``--with-dynmodules``. It is expected that most pre-built packages contain this backend or be separately installable. Configuration Parameters ------------------------ This section only details the configuration of PowerDNS for use with ODBC. For ODBC related configuration, please see UnixODBC website/documentation and the documentation for the driver you intend to use. .. _setting-godbc-datasource: ``godbc-datasource`` ^^^^^^^^^^^^^^^^^^^^ - String - Default: PowerDNS The datasource (DSN) to use. This must be configured in the ``odbc.ini`` file, usually found in ``/etc/``, but this depends your local setup. .. _setting-godbc-username: ``godbc-username`` ^^^^^^^^^^^^^^^^^^ - String - Default: powerdns The user to connect to the datasource. .. _setting-godbc-password: ``godbc-password`` ^^^^^^^^^^^^^^^^^^ - String - Default is empty The password to connect with the datasource. Connecting to Microsoft SQL Server ---------------------------------- .. note:: In order to connect to Microsoft SQL Server, you will need at least version 3.2.0 of UnixODBC. FreeDTS has been tested with versions 0.91 and 0.95. Install the `FreeTDS `__ driver for UnixODBC, either by compiling or getting it from our distribution's repository and configure your ``/etc/odbcinst.ini`` with the driver, e.g.: .. code-block:: ini [FreeTDS] Description=v0.95.8 with protocol v7.1 Driver=/usr/local/lib/libtdsodbc.so UsageCount=1 And add the datasource to your ``/etc/odbc.ini``, e.g: .. code-block:: ini [pdns1] Driver=FreeTDS Trace=No Server=server.example.net Port=1433 Database=pdns-1 TDS_Version=7.1 (For our tests, we add ``ClientCharset=UTF-8`` as well. YMMV.) You can now test the connection with ``isql pdns1 USERNAME PASSWORD``. Loading the schema into the database ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ For convenience, a schema for MS SQL Server has been created: (Note: This schema can also be found in the PowerDNS source as ``modules/godbcbackend/schema.mssql.sql``). This is the schema for 4.3. The `4.2 schema `_ and `the 4.1 schema `_ is available on GitHub. .. literalinclude:: ../../modules/godbcbackend/schema.mssql.sql :language: SQL Load this into the database as follows: .. code-block:: bash cat schema.mssql.sql | tr '\n' ' ' | isql pdns1 USERNAME PASSWORD -b. Loading records into the database ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Loading records is the same as with any SQL backend, just add them using SQL-queries. Should you want to use :ref:`zone2sql `, use the ``--sqlite`` option for correctly formatted SQL. Configuring PowerDNS ^^^^^^^^^^^^^^^^^^^^ Add the options required to your ``pdns.conf``: .. code-block:: ini launch=godbc godbc-datasource=pdns1 godbc-username=USERNAME godbc-password=PASSWORD Now restart PowerDNS and you're done. Just don't forget to add zones and records to the database. Possible issues ^^^^^^^^^^^^^^^ It might be that you need to compile FreeTDS with the ``--tds-version=7.1`` to connect to SQL Server. When connecting to a database hosted with Microsoft Azure, FreeTDS must be compiled with OpenSSL, use the ``--with-openssl`` configure flag.