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 数据库并确定表的完整路径。