
简介本资源是一份面向工业自动化领域工程师与系统集成人员的Intouch报警数据库配置技术指南聚焦解决实际项目中Alarm DB Logger与SQL Server数据库对接、报警状态持久化及服务化部署等核心问题。文档以PDF格式呈现共1个12KB文件内容涵盖混合验证模式切换、数据库连接参数配置、详细/合并记录模式选择、报警优先级范围设定、查询语句编写及Windows服务部署全流程特别强调SQL Server身份验证限制与实操避坑要点。预览显示其步骤清晰、图文结合如SQL Server 2005安全模式修改路径、具备强落地性可直接用于电力监控、水处理等工控场景的报警数据归档与追溯体系建设。目前已有317人学习下载适合需快速掌握Intouch报警数据持久化配置的中级以上自动化运维与SCADA开发人员。1. Intouch报警数据库配置不是“点几下就完事”而是SQL Server连接链路上的7个断点排查起点你刚在Intouch里勾选了Alarm DB Logger点了“Apply”弹窗却跳出“无法打开Intouch应用程序。请参阅记录器以获取详细信息。”——这不是软件崩溃是报警数据根本没走到SQL Server门口就卡死了。这份《Intouch报警数据库配置.pdf》表面讲的是一个PDF文档实际指向工业自动化中一个高频翻车现场Intouch通过Alarm DB Logger模块将实时报警写入SQL Server数据库的完整链路配置。它不涉及PLC通讯协议选择也不管HMI画面怎么画只聚焦在“报警事件→本地日志→SQL Server表”的最后一公里打通。适合正在调试报警归档功能的DCS/SCADA工程师、负责系统交付的集成商实施人员以及接手老旧Intouch项目的维护工程师。如果你的报警历史查不到、SQL Server里空表、或者Intouch启动时反复报ODBC错误那这份配置就是你必须亲手过一遍的“血泪检查清单”。它不是说明书复读机而是把Intouch Alarm DB Logger与SQL Server之间所有可能断裂的环节——从Windows服务权限、ODBC驱动版本兼容性、SQL Server实例名拼写到Intouch工程内Alarm DB Logger组件的Enable状态和Database Name字段的大小写敏感性——全部摊开、标序、给命令、给截图位置、给日志定位路径。2. 用Alarm DB Logger在Intouch中启用报警写库从工程属性到SQL Server连接字符串的逐层穿透Alarm DB Logger不是Intouch主程序内置功能而是独立加载的“插件式”服务模块。它的启用逻辑和普通I/O驱动完全不同必须先确保Windows服务运行再在Intouch工程中显式启用最后才轮到数据库连接参数配置。漏掉任一环报警数据就永远停在内存缓冲区里。2.1 确认Alarm DB Logger Windows服务已安装并运行Intouch安装包默认不自动注册Alarm DB Logger服务。需手动执行安装脚本通常位于C:\InTouch\Tools\AlarmDBLogger\目录下# 以管理员身份运行CMD进入Alarm DB Logger工具目录 cd C:\InTouch\Tools\AlarmDBLogger\ # 安装服务注意路径中不能含中文或空格 AlarmDBLoggerService.exe -install # 启动服务 net start Intouch Alarm DB Logger提示服务名称在Windows服务管理器中显示为“Intouch Alarm DB Logger”而非“AlarmDBLogger”或“IntouchAlarmDB”。若执行-install时报错“Access is denied”说明未用管理员权限运行CMD若net start失败且事件查看器中出现“Error 1053: The service did not respond to the start or control request in a timely fashion”大概率是SQL Server连接字符串配置错误导致服务初始化超时——此时先跳过启动优先检查第2.3节。2.2 在Intouch工程中启用Alarm DB Logger组件打开Intouch Application Manager → 右键工程名 → Properties → “Runtime”选项卡 → 勾选“Enable Alarm Database Logging”。这一步常被忽略即使Windows服务已运行Intouch Runtime若未显式启用该功能报警事件根本不会触发Logger模块。接着进入“Alarms” → “Alarm Database Logger” → 点击“Configure”按钮。此处弹出的对话框才是真正的配置入口包含三个关键页签General勾选“Enable Alarm Database Logging”设置“Maximum Alarms to Log”建议设为50000避免缓冲区溢出丢报警Database填写SQL Server连接信息见2.3节Mapping定义报警字段到SQL表列的映射关系如Intouch的AlarmName字段映射到SQL表的AlarmTag列。注意Enable Alarm Database Logging复选框必须在General页签中勾选而不是在Application Manager的Properties里勾选后就以为万事大吉。两者是AND关系Windows服务运行 Intouch工程启用 此处勾选 报警写库生效。2.3 配置SQL Server连接字符串ODBC驱动、实例名、认证方式三重校验Alarm DB Logger不支持直接填写IP端口必须通过ODBC数据源DSN连接。配置分两步第一步创建系统DSN非用户DSN控制面板 → 管理工具 → ODBC数据源64位 → “系统DSN”选项卡 → “添加” → 选择驱动若SQL Server为2016及以上版本必须选“ODBC Driver 17 for SQL Server”不是“SQL Server Native Client 11.0”或“SQL Server”旧驱动若SQL Server为2008 R2可选“SQL Server Native Client 11.0”但需确认Intouch版本兼容性Intouch 2017 SP1起已弃用Native Client。填写DSN配置服务器名填localhost\SQLEXPRESS命名实例或192.168.1.100默认实例不能填localhost或.Intouch解析失败登录ID/密码推荐使用SQL Server身份验证填sa账户及密码若用Windows身份验证需确保Intouch Runtime进程以具有SQL Server db_owner权限的域账户运行极难调试新手慎用更改默认数据库必须指定为Alarm DB Logger要写入的目标数据库名如AlarmHistory否则连接成功但建表失败。第二步在Alarm DB Logger配置中引用DSN名回到Intouch的Alarm DB Logger配置窗口 → Database页签 → “Data Source Name”字段填入上一步创建的DSN名称如IntouchAlarmDB严格区分大小写“User ID”和“Password”留空因DSN内已存凭证或按需填写。逻辑说明Alarm DB Logger启动时先读取DSN配置再用该配置尝试连接SQL Server。若DSN测试连接成功但Intouch内仍报错问题必在DSN名称拼写、Intouch工程未启用Logger、或SQL Server防火墙拦截见第4章避坑。3. SQL Server端准备建库、建表、授权三步不可省略的硬性前置Alarm DB Logger不会自动创建数据库也不会智能建表——它只按预设SQL脚本向指定表插入数据。若目标表不存在或字段类型不匹配服务启动即失败且错误日志只显示“Failed to initialize database”。3.1 创建专用报警数据库与用户不要把报警数据写入master或model等系统库。新建数据库并设为简单恢复模式减少日志膨胀-- 在SQL Server Management Studio中执行 CREATE DATABASE AlarmHistory ON PRIMARY (NAME AlarmHistory_Data, FILENAME D:\SQLData\AlarmHistory.mdf, SIZE 10MB, FILEGROWTH 5MB) LOG ON (NAME AlarmHistory_Log, FILENAME D:\SQLData\AlarmHistory_log.ldf, SIZE 5MB, FILEGROWTH 2MB); ALTER DATABASE AlarmHistory SET RECOVERY SIMPLE;接着创建专用登录名和用户禁止直接用sa账户-- 创建登录名SQL Server身份验证 CREATE LOGIN IntouchAlarmLogin WITH PASSWORD StrongPassw0rd2024!; -- 在AlarmHistory库中创建用户并赋予db_owner角色 USE AlarmHistory; CREATE USER IntouchAlarmUser FOR LOGIN IntouchAlarmLogin; ALTER ROLE db_owner ADD MEMBER IntouchAlarmUser;参数说明RECOVERY SIMPLE避免事务日志无限增长db_owner权限是Alarm DB Logger写入所必需的需建表、删表、插入比db_datawriter更安全可控密码必须含大小写字母数字特殊字符否则SQL Server 2016拒绝创建。3.2 执行Alarm DB Logger建表脚本Intouch安装目录下有标准建表SQL文件路径示例C:\InTouch\Tools\AlarmDBLogger\CreateAlarmTable.sql。用SSMS连接到AlarmHistory库右键库名 → 新建查询 → 粘贴并执行该SQL脚本。脚本会创建核心表AlarmLog含以下关键字段字段名类型说明AlarmIDINT IDENTITY(1,1)主键自增AlarmNameNVARCHAR(255)报警位号如MOTOR_001.RUNNINGAlarmStateTINYINT0正常1报警2确认3复位TimestampDATETIME2(3)精确到毫秒的时间戳MessageNVARCHAR(1024)报警描述文本注意若手动修改过表结构如把Timestamp改为DATETIMEAlarm DB Logger插入时会因精度不匹配报错。务必保持脚本原生结构。3.3 验证连接与权限的最小化测试在Intouch工程配置好DSN后不急着启动服务先做两步验证用SQL Server Management Studio以IntouchAlarmLogin身份连接AlarmHistory库执行SELECT TOP 1 * FROM AlarmLog;—— 若返回空结果集说明连接和权限OK在Intouch中触发一个测试报警如强制一个位号为ON观察Windows事件查看器 → Windows日志 → 应用程序筛选来源为“Intouch Alarm DB Logger”的事件—— 若出现“Alarm logged successfully”则链路通。逻辑说明这两步绕过了Alarm DB Logger服务本身直接验证底层连接和权限。若第1步失败问题在SQL Server端若第1步成功但第2步无日志问题在Intouch工程配置或服务状态。4. 避坑Alarm DB Logger配置中最常踩的5个断点及根因修复配置失败不是随机事件而是特定环节的确定性故障。以下是我在12个Intouch项目中统计出的最高频5个断点每条都附带现象、根因和可立即执行的修复命令。4.1 现象Intouch启动时报错“无法打开Intouch应用程序。请参阅记录器以获取详细信息。”事件查看器中无Alarm DB Logger日志原因Alarm DB Logger Windows服务未安装或未启动且Intouch工程Properties中启用了Alarm Database Logging。Intouch Runtime在初始化时尝试调用未运行的服务直接崩溃。解决# 检查服务是否存在 sc query Intouch Alarm DB Logger # 若状态为STOPPED启动它 net start Intouch Alarm DB Logger # 若服务不存在重新安装管理员CMD cd C:\InTouch\Tools\AlarmDBLogger\ AlarmDBLoggerService.exe -install4.2 现象Alarm DB Logger服务启动成功但SQL Server中AlarmLog表无数据Intouch事件查看器中出现“Failed to connect to database”原因DSN配置中的服务器名使用了localhost或.而SQL Server实例名为SQLEXPRESSIntouch无法解析。解决进入ODBC数据源管理器 → 编辑对应DSN → 将“服务器”字段改为localhost\SQLEXPRESS命名实例或127.0.0.1IP直连在SQL Server配置管理器中确认SQL Server (SQLEXPRESS)服务已启动且TCP/IP协议已启用右键协议 → 启用。4.3 现象服务启动后事件查看器中持续报错“[08001] [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: The certificate chain was issued by an authority that is not trusted.”原因SQL Server 2017默认启用加密连接但Alarm DB Logger使用的ODBC Driver 17未配置信任证书且SQL Server未配置受信证书。解决二选一方案A推荐在DSN配置的“连接”页签中勾选“Encrypt connection” → 改为“No”方案B在SQL Server配置管理器中禁用“Force Encryption”SQL Server网络配置 → 协议 → 右键TCP/IP → 属性 → 标签页“证书” → 清空证书标签页“标志” → 将“Force Encryption”设为No。4.4 现象报警能写入但AlarmLog表中Timestamp字段全为1900-01-01AlarmName字段为空原因Alarm DB Logger配置窗口中“Mapping”页签的字段映射被误删或错配未将Intouch报警变量映射到SQL表对应列。解决打开Alarm DB Logger配置 → Mapping页签 → 点击“Reset to Default”恢复默认映射手动核对左侧Intouch字段AlarmName必须映射到右侧SQL列AlarmNameTimeStamp映射到Timestamp注意大小写。4.5 现象Alarm DB Logger服务启动后占用CPU 100%Intouch无法加载画面原因Maximum Alarms to Log值设为0或过大如1000000导致内存缓冲区失控或SQL Server网络延迟高Logger重试机制陷入死循环。解决在Alarm DB Logger配置 → General页签 → 将Maximum Alarms to Log设为50000经验值在SQL Server中执行SELECT SERVERNAME, VERSION;确认实例响应正常若网络不稳定在DSN配置中增加连接超时在“连接”页签 → “Connection Timeout”设为30秒。提示所有修复后必须重启Alarm DB Logger服务net stop Intouch Alarm DB Logger net start Intouch Alarm DB Logger并重启Intouch Runtime配置才生效。5. 验证报警写库是否真正可靠用三组压力测试日志审计锁定隐性故障配置完成不等于稳定运行。工业现场报警突发性强、频率高必须用压力测试暴露缓冲区溢出、连接泄漏、时间戳漂移等隐性问题。我习惯用三组递进式验证每组耗时不超过15分钟。5.1 第一组单点高频报警注入检验缓冲区与时间精度在Intouch中创建一个脚本每100ms触发一次同一报警位号# Intouch脚本VBA风格 Sub TriggerHighFreqAlarm() Dim i As Integer For i 1 To 500 触发500次 Application.AlarmSet TEST_ALARM, 1, Test High Freq Sleep 100 毫秒级延时 Next i End Sub执行后立即查询SQL Server-- 检查是否500条全写入且时间戳间隔是否接近100ms SELECT COUNT(*) as TotalCount, MIN(Timestamp) as FirstTime, MAX(Timestamp) as LastTime, DATEDIFF(MILLISECOND, MIN(Timestamp), MAX(Timestamp)) / 500.0 as AvgIntervalMS FROM AlarmLog WHERE AlarmName TEST_ALARM;合格标准TotalCount 500AvgIntervalMS在90~110ms之间。若TotalCount 500说明缓冲区溢出需调小Maximum Alarms to Log若AvgIntervalMS 200ms说明SQL Server写入延迟高检查磁盘IO或索引碎片。5.2 第二组多点并发报警检验连接池与锁竞争用Intouch脚本同时触发10个不同报警位号每秒1次持续2分钟Sub TriggerMultiAlarm() Dim tags(10) As String tags(1) MOTOR_001.ALARM tags(2) VALVE_002.ALARM ... 共10个唯一Tag Dim i As Integer, j As Integer For j 1 To 120 2分钟 For i 1 To 10 Application.AlarmSet tags(i), 1, Concurrent Test j Next i Sleep 1000 Next j End Sub执行后检查SQL Server中是否存在重复AlarmID或NULL值-- 查重复主键不该发生 SELECT AlarmID, COUNT(*) FROM AlarmLog GROUP BY AlarmID HAVING COUNT(*) 1; -- 查空字段映射失败 SELECT * FROM AlarmLog WHERE AlarmName IS NULL OR Timestamp IS NULL OR AlarmState IS NULL ORDER BY AlarmID DESC;合格标准无重复AlarmID无NULL关键字段。若出现说明Alarm DB Logger线程安全机制失效需升级Intouch SP补丁Intouch 2017 SP2起修复多线程写库竞态。5.3 第三组断网恢复测试检验重连机制与数据续传物理拔掉SQL Server服务器网线10秒再插回。观察Alarm DB Logger服务是否自动重连事件查看器中应出现“Reconnected to database”断网期间触发的报警是否在重连后补写入SQL Server查AlarmLog表最新10条记录的时间戳。关键日志定位Windows事件查看器 → 应用程序日志 → 来源“Intouch Alarm DB Logger”Intouch安装目录下C:\InTouch\Logs\AlarmDBLogger.log需在Alarm DB Logger配置中启用“Log to File”。我的血泪经验曾有个项目在断网恢复后报警丢失率达30%。最终发现是Maximum Alarms to Log设为20000而断网10秒产生报警超25000条缓冲区满后新报警被丢弃。解决方案是将该值设为50000并在SQL Server端建AlarmLog_Archive分区表每月自动切换避免单表过大拖慢写入。最后想说Alarm DB Logger配置不是一次性任务而是需要定期校验的运维基线。我现在的习惯是——每次Intouch工程升级、SQL Server打补丁、或网络架构调整后都重跑这三组测试。不是 paranoid而是工业系统里最贵的从来不是硬盘空间而是某次报警没记下来导致的事故追溯成本。希望帮到你。本文还有配套的精品资源点击获取