The mssql database driver can access Microsoft SQL (MSSQL) destinations. This driver has some special aspects that are important to note.
The date format used by the MSSQL database must be explicitly set in the /etc/locales.conf file of the syslog-ng server. For details, see the following example.
As certain database versions limit the maximum length of table names, macros in the table names should be used with care.
In the current version of syslog-ng OSE, the types of database columns must be explicitly set for the MSSQL destination.
|
Caution:
The following column types cannot be used in MSSQL destinations: nchar, nvarchar, ntext, and xml. |
The column used to store the text part of the syslog messages should be able to store messages as long as the longest message permitted by syslog-ng. The varchar column type can store maximum 4096 bytes-long messages. The maximum length of the messages can be set using the log-msg-size() option. For details, see the following example.
Remote access for SQL users must be explicitly enabled on the Microsoft Windows host running the Microsoft SQL Server. For details, see Configuring Microsoft SQL Server to accept logs from syslog-ng.
The following example sends the log messages into an MSSQL database running on the logserver host. The messages are inserted into the syslogng database, the name of the table includes the exact date when the messages were sent. The syslog-ng application automatically creates the required tables and columns, if the user account used to connect to the database has the required privileges.
destination d_mssql { sql(type(mssql) host("logserver") port("1433") username("syslogng") password("syslogng") database("syslogng") table("msgs_${R_YEAR}${R_MONTH}${R_DAY}")columns("datetime varchar(16)", "host varchar(32)", "program varchar(32)", "pid varchar(8)", "message varchar(4096)") values("${R_DATE}", "${HOST}", "${PROGRAM}", "${PID}", "${MSGONLY}") indexes("datetime", "host", "program", "pid")); };
The date format used by the MSSQL database must be explicitly set in the /etc/locales.conf file of the syslog-ng server. Edit or create this file as needed for your configuration. A sample is provided below.
[default] date = "%Y-%m-%d %H:%M:%S"
Create table:
If the given table does not exist, syslog-ng tries to create it with the given column types.
The syslog-ng OSE application automatically creates the required tables and columns, if the user account used to connect to the database has the required privileges.
If syslog-ng cannot create or alter a table, it tries to do it again when it reaches the next time-reopen().
Alter table:
If the table structure is different from given structure in an existing table, syslog-ng tries to add columns in this table but never will delete or modify an existing column.
If syslog-ng OSE cannot create or alter a table, it tries to do it again when reach the next time-reopen().
The syslog-ng OSE application requires read and write access to the SQL table, otherwise it cannot verify that the destination table exists.
Insert table:
Insert new records in a table.
Inserting the records into the database is performed by a separate thread.
The syslog-ng OSE application automatically performs the escaping required to insert the messages into the database.
If insert returns with error, syslog-ng tries to insert the message +two times by default, then drops it. Retrying time is the value of time-reopen().
The syslog-ng OSE application uses UTF-8 by default when writes logs into database.
Start:
The syslog-ng OSE application will connect to database automatically after starting regardless existing incoming messages.
Stop:
The syslog-ng OSE application will close the connection to database before shutting down.
Possibility of losing logs:
The syslog-ng OSE application cannot lose logs during shutting down if disk buffer was given and it is not full yet.
The syslog-ng OSE application cannot lose logs during shutting down if disk buffer was not given.
Reload:
The syslog-ng OSE application will close the connection to database if it received SIGHUP signal (reload).
It will reconnect to the database when it tries to send a new message to this database again.
The value of ${SEQNUM} macro will be overrided by sql driver regardless of local or relayed incoming message.
It will be grown continously.
To specify the socket to use, set and export the MYSQL_UNIX_PORT environment variable, for example MYSQL_UNIX_PORT=/var/lib/mysql/mysql.sock; export MYSQL_UNIX_PORT.
In SQL Server 2005 this restriction is lifted - kind of. The total length of all key columns in an index cannot exceed 900 bytes.
If you are using null() in your configuration, be sure that the columns allow NULL to insert. Give the column as the following example: "datetime varchar(16) NULL".
The date format used by the MSSQL database must be explicitly set in the /etc/locales.conf file of the syslog-ng server. [default] date = "%Y-%m-%d %H:%M:%S".
© ALL RIGHTS RESERVED. Conditions d’utilisation Confidentialité Cookie Preference Center