syslog-ng는 MSSQL 데이터베이스 이름을 무시합니다.

syslog-ng는 MSSQL 데이터베이스 이름을 무시합니다.

syslog-ngMSSQL 대상에 로그인하면 에 정의된 데이터베이스가 무시되고 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 데이터베이스에 연결하고 테이블의 전체 경로를 확인합니다.

관련 정보