Skip to content

Microsoft SQL Server Reader

Sun Jianbo edited this page Jul 4, 2017 · 12 revisions

Microsoft SQL Server Reader 是为了让logkit支持多种数据源支持而增加的一种输入模式,区别于普通的文件输入,Microsoft SQL Server Reader是从 Microsoft SQL Server 中读取数据。

Microsoft SQL Server Reader是以定时任务的形式去执行sql语句,将sql读取到的内容全部获取则任务结束,等到下一个定时任务的到来。

典型配置如下

    "reader":{
        "log_path":"server=<hostname or instance>;user id=<username>;password=<password>;port=<port>", // 等价于mssql_datasource
        "meta_path":"./meta",
        "mode":"mssql",
        "mssql_datasource":"server=<hostname or instance>;user id=<username>;password=<password>;port=<port>", // 该字段与"log_path"等价,两个都存在的情况下优先取mysql_datasource的值。
        "mssql_database":"<database>",
        "mssql_sql":"select * from xx;select x,y from xx@(YY)",
        "mssql_offset_key":"id",
        "mssql_limit_batch":"100",
        "mssql_cron":"00 00 04 * * *",
        "mssql_exec_onstart":"true"
    },
  • mssql reader输出的内容为json字符串,须使用json parser解析
  • mode : 使用mssql reader,必须模式为mssql
  • mssql_datasource: 该字段与"log_path"等价,两个都存在的情况下优先取datasource的值。需要按规则填写mssql数据源所需信息。
    • username: 用户名
    • password: 用户密码
    • hostname: mssql地址,实例
    • port: mssql端口,默认1433
    • 示例:一个填写完整的mssql_datasource字段类似于:"server=localhost\SQLExpress;user id=sa;password=PassWord;port=1433"
  • mssql_cron: 定时任务触发周期,支持两种写法。
    • crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行。
    • 描述式写法,类似于"@midnight", "@every 1h30m",必须@符合开头,目前支持@hourly,@weekly,@monthly,@yearly,@every <time duration>
  • mssql_database: 数据库名称。
  • mssql_sql: 填写要执行的sql语句,可以用@(var)使用魔法变量,用;分号隔开,多个语句按顺序执行,多条sql输出的内容格式schema必须相同,否则请使用多个配置文件构建多个runner解决。
  • mssql_offset_key: 指定一个mssql的列名,作为offset的记录,类型必须是整型。每次查询会指定这个key做where条件限制,避免单次查询性能消耗过大。
  • mssql_limit_batch: mssql_sql的语句,若数据量大,可以填写该字段,分批次查询。
    • mssql_offset_key存在,假设填写为100,则查询范式为select * from table where mssql_offset_key >= 0 and mssql_offset_key < 0 + 100;
    • 若没填写mssql_offset_key,则直接执行整个SQL select * from table,没有分页。
  • mssql_exec_onstart: true表示启动时执行一次,以后再按cron处理;false则表示到cron预设的时间才执行,默认为true。
  • 魔法变量: 目前支持,,,,,的魔法变量。
    • @(YYYY) 年份
    • @(YY) 年份后两位,如06。
    • @(MM): 月份,补齐两位,如02
    • @(M): 月份,不补齐
    • @(D): 日,不补齐
    • @(DD): 日,补齐两位,如05
    • @(hh): 小时,补齐两位
    • @(h): 小时
    • @(mm): 分钟,补齐两位
    • @(m): 分钟
    • @(ss): 秒,补齐两位
    • @(s): 秒

已知问题

对于 SQL Server 2008 和 2008 R2 引擎使用登录报错的情况,需要安装一下补丁。

  • SQL Server 2008 R2 用户安装 SQL Server 2008 R2 Service Pack 2
  • SQL Server 2008 用户,则需要安装 Microsoft SQL Server 2008 Service Pack 3 并更新。

详见官方链接

SQL Server 2008 and 2008 R2 engine cannot handle login records when SSL encryption is not disabled. To fix SQL Server 2008 R2 issue, install SQL Server 2008 R2 Service Pack 2. To fix SQL Server 2008 issue, install Microsoft SQL Server 2008 Service Pack 3 and Cumulative update package 3 for SQL Server 2008 SP3. More information: http://support.microsoft.com/kb/2653857

SQL Server 2008 R2 Service Pack 2 下载链接

Clone this wiki locally