syslog-ng 忽略 MSSQL 数据库名称

syslog-ng 忽略 MSSQL 数据库名称

syslog-ng登录到 MSSQL 目标时忽略中定义的数据库syslog-ng.conf,而是使用用户的默认数据库。

destination d_mssql {
sql(type(mssql)
        host("myhost") username("myuser") password("mypass")
        database("syslogng")
        table("msgs_${R_YEAR}${R_MONTH}${R_DAY}")columns(
                "seqnum bigint",
                "datetime varchar(16)", "host varchar(32)",
                "program varchar(32)", "pid varchar(8)", "priority varchar(10)", "facility varchar(10)", "pri int",
                "message varchar(max)")
        values("$SEQNUM", "$R_DATE", "$HOST", "$PROGRAM", "$PID", "$PRIORITY", "$FACILITY", "$PRI", "$MSGONLY")
        indexes("datetime", "host", "program", "pid"));
};

正如您所看到的,我想使用“syslogng”作为我的数据库,但发生的情况是syslog-ng使用在 MS SQL Server 中为“myuser”配置的默认数据库(“master”)。

如果我将 SQL Server 中“myuser”的默认数据库更改为“syslogng”,那么它将写入“syslogng”数据库。但这不是我想要的。我希望能够在syslog-ng.conf.

有什么想法为什么会发生这种情况吗?

同样的问题在 BalaBit 社区网站上。

答案1

为了解决这个问题,我在 sql() 语句中设置了:

database("")

然后使用我想要创建/更新的表的完整路径:

table("syslogng.msgs_${R_YEAR}${R_MONTH}${R_DAY}")")

使用 DB 浏览器(例如 DBeaver)连接到 MSSQL 数据库并确定表的完整路径。

相关内容