# OPCWorkerServer **Repository Path**: easonfeng029/opcworker-server ## Basic Information - **Project Name**: OPCWorkerServer - **Description**: OPC转发 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-15 - **Last Updated**: 2026-02-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: OPC转发数据库 ## README # OPC Worker Server 数据库部署说明 ## 概述 本文档描述了 OPC Worker Server 项目的数据库部署流程,包括所需的数据库脚本和执行步骤。 ## 部署结构 ``` Database/ ├── Deploy/ # 部署执行文件 │ └── RunAllScripts.bat # 一键执行所有脚本 ├── Scripts/ # SQL 脚本文件 │ ├── 01_CreateDatabase.sql # 创建数据库 │ ├── 02_CreateOpcFieldMappingsTable.sql # 创建字段映射表 │ ├── 03_CreateOpcDataTable.sql # 创建数据存储表 │ ├── 04_ConfigureOpcDataMappings.sql # 配置字段映射 │ ├── 05_CreateOpcDataPointsTable.sql # 创建数据点表 │ └── 06_DiagnoseAndConfigureMappings.sql # 诊断和验证 └── README.md # 部署说明文档 ``` ## 环境要求 - SQL Server 2012 或更高版本 - Windows 操作系统 - 具有 SQL Server 管理员权限的用户 - .NET 8.0 或更高版本 ## 部署步骤 ### 方法 1:一键执行(推荐) 1. 确保 SQL Server 服务正在运行 2. 打开 `Database\Deploy\RunAllScripts.bat` 文件 3. 双击运行该批处理文件 4. 等待所有脚本执行完成 ### 方法 2:手动执行 1. 打开 SQL Server Management Studio (SSMS) 2. 连接到 SQL Server 实例 `192.168.0.106` 3. 按以下顺序执行脚本: 1. `01_CreateDatabase.sql` - 创建数据库 2. `02_CreateOpcFieldMappingsTable.sql` - 创建字段映射表 3. `03_CreateOpcDataTable.sql` - 创建数据存储表 4. `04_ConfigureOpcDataMappings.sql` - 配置字段映射 5. `05_CreateOpcDataPointsTable.sql` - 创建数据点表 6. `06_DiagnoseAndConfigureMappings.sql` - 诊断和验证 ## 数据库结构 ### 1. OpcData 表 - **用途**:存储从 OPC 服务器采集的数据 - **关键字段**: - `Id` (UNIQUEIDENTIFIER) - 唯一标识 - `CounterValue` (INT) - 计数器值 - `Timestamp` (DATETIME) - OPC 时间戳 - `DbTimestamp` (DATETIME) - 数据库写入时间 - `Source` (VARCHAR(50)) - 数据源 - `Quality` (VARCHAR(50)) - 数据质量 - `DataType` (VARCHAR(50)) - 数据类型 ### 2. OpcFieldMappings 表 - **用途**:配置 OPC 节点到数据库字段的映射关系 - **关键字段**: - `Id` (INT) - 主键 - `NodeID` (NVARCHAR(255)) - OPC 节点 ID - `TargetTableName` (NVARCHAR(100)) - 目标表名 - `TargetFieldName` (NVARCHAR(100)) - 目标字段名 - `TargetDataType` (NVARCHAR(50)) - 目标数据类型 - `IsEnabled` (BIT) - 是否启用 - `Required` (BIT) - 是否必填 - `DefaultValue` (NVARCHAR(MAX)) - 默认值 ### 3. OpcDataPoints 表 - **用途**:存储 OPC 数据点的历史记录 - **关键字段**: - `Id` (INT) - 自增主键 - `NodeId` (NVARCHAR(255)) - OPC 节点 ID - `Value` (NVARCHAR(MAX)) - 节点值 - `DataType` (NVARCHAR(50)) - 数据类型 - `Timestamp` (DATETIME2) - 时间戳 - `Quality` (NVARCHAR(50)) - 数据质量 ## 配置说明 ### OPC 节点配置 - 默认配置的 OPC 节点:`ns=5;s=Counter1` - 如需修改 OPC 节点,可在 `04_ConfigureOpcDataMappings.sql` 文件中更新 `NodeID` 和 `DataSource` 字段 ### 服务器配置 - 默认 SQL Server 地址:`192.168.0.106` - 如需修改服务器地址,可在 `RunAllScripts.bat` 文件中更新 `-S` 参数 ### 业务模式表配置 - **配置优先级**: 1. 首先从 `appsettings.json` 中的 `DataStorage:BusinessModeTables` 配置读取 2. 如果未配置,则从 `OpcFieldMappings` 表中自动获取启用的表名 3. 如果数据库中也未配置,则使用默认值 `"OpcData"` - **配置示例**(appsettings.json): ```json "DataStorage": { "EnableGeneralMode": true, "EnableBusinessMode": true, "BusinessModeTables": ["OpcData", "OtherDataTable"] } ``` ## 代码优化说明 ### 1. 表名获取优化 - **实现**:`OpcWorker.cs` 中的 `LoadStorageModeConfigAsync()` 方法 - **功能**:支持从配置文件或数据库动态获取业务模式目标表名 - **优势**:提高了系统的灵活性和可配置性 ### 2. 数据库服务优化 - **实现**:`DbService.cs` 使用 `FieldMappingService` 的缓存机制 - **功能**:启动时加载所有字段映射到内存缓存 - **优势**:减少数据库查询,提高数据处理效率 ### 3. 异步处理优化 - **实现**:将配置加载移至 `ExecuteAsync` 方法 - **优势**:避免了构造函数中的异步调用问题,提高了代码的可维护性 ## 故障排除 ### 常见问题 1. **连接失败**:检查 SQL Server 服务是否运行,网络连接是否正常 2. **权限不足**:确保使用具有管理员权限的用户执行脚本 3. **脚本执行错误**:检查 SQL Server 版本是否符合要求,查看错误信息并针对性解决 ### 验证部署 部署完成后,可以通过以下方式验证: 1. 在 SSMS 中检查是否创建了 `OpcWorkerServer` 数据库 2. 检查 `OpcData`、`OpcFieldMappings` 和 `OpcDataPoints` 表是否存在 3. 检查 `OpcFieldMappings` 表中是否有正确的字段映射配置 ## 维护建议 - 定期备份数据库 - 监控数据库性能,根据需要调整索引 - 定期清理历史数据,保持数据库大小合理 - 定期更新配置文件和数据库映射,确保与最新业务需求一致