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
"myuser"에 대해 MS SQL Server에 구성된 기본 데이터베이스("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 데이터베이스에 연결하고 테이블의 전체 경로를 확인합니다.