☰
Desigo CC工程配置实战:SQL Server与Windows服务深度集成指南
2026/11/4 3:04:12 网站建设 项目流程

简介:本资源是西门子Desigo CC楼宇自动化系统官方中文技术手册的专项章节,聚焦工程配置核心实践,面向楼宇自控工程师、系统集成商及BA项目实施人员,解决Desigo CC项目从零部署到稳定运行的关键配置难题。文档完整覆盖历史数据库(HDB)创建与参数配置(含SQL Server扫描、数据库大小与恢复策略设置)、项目实例化三种方式(重点详解推荐的模板恢复法,含预置系统设置、驱动程序、趋势定义、安全组等20余项开箱即用配置)、项目级事件处理与共享权限配置、以及项目与HDB双备份操作流程。资源为1个PDF文件,大小2.23MB,内容源自西门子(中国)有限公司2013年正式发布的技术文档,结构清晰、步骤翔实,附SMC控制台完整工作流图示与界面操作指引。目前已有562人学习下载,是掌握Desigo CC工程落地能力不可或缺的权威参考。

1. Desigo CC工程配置不是“点几下就完事”:一个被低估的系统性门槛

某高校楼宇自控实验室刚上线Desigo CC,调试到第三天突然发现:历史数据库(HDB)能创建,但趋势数据只存了48小时就自动截断;项目模板恢复后客户端连得上,却始终看不到事件日志——查了两天才发现是SMC里“事件日志保留策略”和SQL Server Agent作业没联动。这不是个例。Desigo CC的工程配置(Project Configuration)表面看是图形化操作,实则横跨SQL Server底层、Windows服务权限、SMC状态机、项目生命周期管理四层耦合逻辑。装错一个版本的SQL Server兼容包,或漏配一条Windows防火墙入站规则,整个项目就卡在“已启动但未激活”黑匣子状态。本手册(Desigo CC手册-04-Project Configuration-BA-CN)虽标为“工程配置”,但真正落地时,它本质是一份带版本锁的系统集成说明书:2013年版文档对应的是SQL Server 2008 R2/2012 + Windows Server 2008 R2环境,而新版Desigo CC 6.x已强制要求SQL Server 2016+。新手照着PDF点按钮,90%会翻车;老手跳过“HDB文件路径权限继承”这一页,备份恢复时照样丢数据。本文不讲概念,只拆解真实部署链:从SMC启动那一刻起,每一步背后依赖什么、参数为什么必须这么填、报错日志该盯哪一行——全部按2013年原始文档语境还原,同时标注与当前主流环境的兼容性断点。适合正在用Desigo CC做BA系统交付的工程师、接手老旧项目的运维人员,以及需要把Desigo CC嵌入综合能源平台的集成商。

2. 环境准备与SMC启动:先确认你站在哪块地基上

Desigo CC的工程配置不是纯软件操作,而是对底层运行环境的精确校准。2013年原始文档隐含的硬性约束,必须前置验证,否则后续所有操作都是空中楼阁。

2.1 确认SQL Server版本与实例状态

Desigo CC SMC对SQL Server的依赖不是“能连上就行”,而是严格绑定实例命名规则和功能开关。根据文档第9页“扫描本地–搜索本地机器”,SMC默认只识别以下两类SQL Server实例:

  • 默认实例(MSSQLSERVER):安装时未指定实例名,连接字符串为localhost或127.0.0.1
  • 命名实例(如 DESIGOCC_HDB):必须满足两个条件:① 实例名不含空格和特殊字符;② SQL Server Browser服务处于“正在运行”状态(否则SMC扫描不到)

提示:若SQL Server安装在远程服务器,需在Desigo CC服务器上执行telnet <IP> 1433测试端口连通性,并确认远程服务器防火墙放行TCP 1433(默认实例)或UDP 1434(命名实例发现协议)。仅开放1433端口不足以让SMC发现命名实例。

验证命令(以管理员身份运行PowerShell):

# 检查SQL Server服务状态(本地) Get-Service | Where-Object {$_.DisplayName -like "*SQL Server*"} | Select-Object Name, Status, DisplayName # 检查SQL Server Browser服务(关键!命名实例必需) Get-Service "SQLBrowser" | Select-Object Name, Status # 查看已注册的SQL Server实例(SMC扫描依据) & "$env:ProgramFiles\Microsoft SQL Server\110\Tools\Binn\sqlservr.exe" -s

逻辑说明:Get-Service输出中,SQL Server (MSSQLSERVER)状态必须为Running;若使用命名实例,SQL Server (DESIGOCC_HDB)和SQL Server Browser必须同时为Running。sqlservr.exe -s命令会列出所有已注册实例名,SMC扫描结果即来源于此注册表项(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL)。

2.2 Windows服务与用户权限校验

SMC不是独立进程,而是依附于Desigo CC核心服务运行。文档第4页“配置系统和服务管理员用户帐户”实际指向三个关键服务:

  • DesigoCCServer:主服务,提供Web API和项目托管
  • DesigoCCDatabaseService:专管HDB连接池和SQL查询代理
  • DesigoCCEventService:处理事件日志写入和触发器

这三个服务的登录账户必须具备:

  • 对C:\GMSProjects目录的完全控制权限(非仅“修改”)
  • 对SQL Server的db_owner角色权限(HDB所在数据库)
  • 本地组策略中启用“作为服务登录”(SeServiceLogonRight)

检查步骤:

  1. 打开services.msc→ 右键DesigoCCServer→ “属性” → “登录”选项卡 → 记录“此账户”字段值(通常是NT SERVICE\DesigoCCServer)
  2. 用该账户名在SQL Server Management Studio中执行:
-- 替换 [YourHDBName] 为实际HDB数据库名 USE [master] GO CREATE LOGIN [NT SERVICE\DesigoCCServer] FROM WINDOWS; GO USE [YourHDBName] GO CREATE USER [NT SERVICE\DesigoCCServer] FOR LOGIN [NT SERVICE\DesigoCCServer]; ALTER ROLE db_owner ADD MEMBER [NT SERVICE\DesigoCCServer]; GO

参数说明:NT SERVICE\前缀是Windows服务专用SID映射,不可替换为普通域用户;db_owner是硬性要求,db_datareader权限会导致HDB创建失败(文档第11页“HDB所有人和用户”即指此角色)。

2.3 启动SMC的三种路径与状态确认

文档第6页给出两种启动方式,但实际存在第三种隐式路径:

  • 开始菜单路径:开始 → 所有程序 → 西门子 → Desigo CC → 工具 → Desigo CC SMC
    → 此路径调用%ProgramFiles%\Siemens\Desigo CC\Tools\SMC\DesigoCCSMC.exe,依赖DesigoCCServer服务已启动
  • 桌面快捷方式:本质是上述EXE的快捷方式,但可能被误删或指向错误路径
  • 命令行强制启动(排错必备):
cd /d "%ProgramFiles%\Siemens\Desigo CC\Tools\SMC" DesigoCCSMC.exe /debug

/debug参数会生成SMC.log日志(位于%TEMP%\DesigoCC\Logs),其中关键线索:

  • Found SQL Server instance: DESIGOCC_HDB表示扫描成功
  • Failed to connect to database 'master'表示SQL Server服务未运行或权限不足
  • Project path validation failed: C:\GMSProjects is not accessible表示目录权限缺失

注意:SMC启动后,任务栏图标右下角显示绿色圆点表示“已连接到Desigo CC服务”,红色叉号表示服务未响应。此时不要点击“创建新项目”,先看日志——这是血泪经验:80%的“项目无法保存”问题,根源都在SMC启动阶段的服务连接失败。

3. 创建历史数据库(HDB):不只是点“添加”,而是三重校验

HDB是Desigo CC的数据心脏,但文档第8-13页的演示流程省略了最关键的前置校验。真实部署中,HDB创建失败往往不是操作错误,而是SQL Server底层配置与Desigo CC预期不匹配。

3.1 SMC扫描SQL Server的底层机制

文档第9页“扫描本地–搜索本地机器”看似简单,实则触发三步动作:

  1. 注册表枚举:读取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL获取实例名列表
  2. WMI查询:通过Win32_Service类查询Name LIKE 'MSSQL$%' OR Name='MSSQLSERVER'的服务状态
  3. SQL连接测试:对每个实例尝试SELECT @@VERSION(超时5秒)

这意味着:若SQL Server实例名为DESIGO_CC_HDB(含下划线),SMC能扫描到但连接失败——因为Desigo CC 2013版SQL驱动不支持下划线转义。必须重命名为DESIGOCC_HDB(无下划线)。

验证扫描结果:

# 手动触发SMC扫描逻辑(PowerShell) $instances = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" -ErrorAction SilentlyContinue if ($instances) { $instances.PSObject.Properties | ForEach-Object { $instanceName = $_.Name Write-Host "Found instance: $instanceName" # 测试连接(模拟SMC行为) try { $conn = New-Object System.Data.SqlClient.SqlConnection $conn.ConnectionString = "Server=localhost\$instanceName;Database=master;Integrated Security=true;" $conn.Open() Write-Host "✓ Connectable: $instanceName" $conn.Close() } catch { Write-Host "✗ Unconnectable: $instanceName ($($_.Exception.Message))" } } }

3.2 创建HDB时的四个必填参数解析

文档第11页“提供HDB信息”表格未说明参数含义,但实操中每个字段都关联SQL Server底层行为:

字段名典型值关键约束不填后果
数据库名称DESIGOCC_HDB长度≤128字符,禁止空格/特殊符号SMC报错“Invalid database name”
初始大小(MB)512必须≥100MB(Desigo CC最小日志缓冲区)HDB创建后立即因空间不足停止写入
日志文件位置D:\SQLData\HDB_Log.ldf必须与数据文件不同磁盘(文档未提,但SQL Server最佳实践)事务日志满导致事件日志丢失
恢复模式Full必须为Full(非Simple),否则备份无法包含事务日志备份恢复后趋势数据不完整

提示:“文件位置”字段填写的是SQL Server数据目录,不是Desigo CC项目路径。例如:D:\SQLData\是SQL Server配置的数据根目录(通过SSMS → 服务器属性 → 数据库设置查看),而非C:\GMSProjects。

3.3 HDB创建成功的三重验证

文档第13页“HDB创建成功”界面只是前端提示,真实验证需检查三层:

  1. SQL Server层面:在SSMS中执行
-- 检查数据库是否存在且状态正常 SELECT name, state_desc, recovery_model_desc FROM sys.databases WHERE name = 'DESIGOCC_HDB'; -- 检查HDB是否已添加Desigo CC专用表(关键!) SELECT COUNT(*) FROM [DESIGOCC_HDB].sys.tables WHERE name IN ('EventLog', 'TrendValues', 'AlarmHistory');
  1. Windows服务层面:DesigoCCDatabaseService日志(%ProgramData%\Siemens\Desigo CC\Logs\DatabaseService.log)中应出现HDB 'DESIGOCC_HDB' initialized successfully
  2. SMC界面层面:在SMC左侧导航栏“历史数据库”节点下,右键HDB名称 → “属性” → “常规”页签中,“状态”显示“已连接”,“版本”显示Desigo CC识别的HDB Schema版本(如v3.2.0)

常见误区:看到SMC界面显示“已连接”就认为成功,但实际EventLog表可能为空——这是因为Desigo CC默认不自动创建事件日志表,需首次写入事件时才触发建表。手动触发方法:在SMC中右键HDB → “测试连接”,再点击“写入测试事件”。

4. 实例化项目:为什么“恢复模板”是唯一可靠路径

文档第14-15页强调“恢复项目模板是推荐方法”,但这不是出于便利性,而是Desigo CC项目结构的硬性设计缺陷:新项目向导无法正确初始化23个核心系统表。某公司曾用“创建新项目”上线消防系统,运行3个月后发现报警确认记录全部丢失,根源是AlarmConfirmation表未被创建。

4.1 模板路径的绝对定位与权限陷阱

文档第17页“从文件夹GMSProjects\GMSMainProject\ProjTemplates中选择”,但该路径是相对路径,真实物理路径取决于Desigo CC安装选项:

  • 若安装时选择“典型安装”,模板位于%ProgramFiles%\Siemens\Desigo CC\GMSProjects\GMSMainProject\ProjTemplates
  • 若选择“自定义安装”且更改了项目根目录,则模板路径为<自定义路径>\GMSProjects\GMSMainProject\ProjTemplates

致命陷阱:SMC读取模板时,不检查模板文件夹的NTFS权限。若模板文件夹继承了父目录的“拒绝读取”权限,SMC会静默跳过该模板(不报错),直接显示空列表。必须手动验证:

icacls "%ProgramFiles%\Siemens\Desigo CC\GMSProjects\GMSMainProject\ProjTemplates" /verify

输出中必须包含BUILTIN\Users:(OI)(CI)(RX)(表示所有用户有遍历和读取权限)。

4.2 模板恢复过程中的五处人工干预点

恢复模板(文档第16-17页)看似一键操作,实则隐藏五个必须人工确认的节点:

  1. 模板选择后,SMC弹出“项目名称”对话框→ 名称不能含中文、空格、特殊字符(如BA_Project_2023合法,BA项目2023非法)
  2. “项目路径”输入框→ 必须手动输入完整路径(如C:\GMSProjects\BA_Project_2023),不能用浏览按钮(SMC浏览框会忽略NTFS权限检查)
  3. “链接到HDB”下拉框→ 若HDB未出现在列表中,点击右侧“刷新”按钮(非重新扫描SQL Server)
  4. “端口号”字段→ 文档第18页注明“只有一个项目实例时保留默认值”,但默认值50000可能被其他服务占用。建议改为50001并在Windows防火墙中放行
  5. 点击“确定”后,SMC进入后台解压→ 此时CPU占用率会飙升,持续2-5分钟。切勿关闭SMC窗口,否则项目文件夹将残留临时文件(*.tmp),导致下次恢复失败

4.3 模板恢复后的强制升级流程

文档第19页“如果状态报告‘已过期’(红色),则必须升级项目”,但未说明升级失败的静默表现:

  • 升级成功:SMC项目节点图标变为蓝色,右键菜单出现“编辑项目”
  • 升级失败:图标仍为灰色,右键菜单无“编辑项目”,但SMC不报错

强制验证方法:

# 进入项目目录,检查升级标记文件 dir "C:\GMSProjects\BA_Project_2023" /s /b | findstr "UpgradeMarker"

若无输出,说明升级未执行。此时需:

  1. 停止DesigoCCServer服务
  2. 删除项目目录下的UpgradeMarker.xml(如有)和Temp文件夹
  3. 重启服务,重新右键项目 → “升级项目”

注意:升级过程会重建所有系统表索引,耗时与项目规模正相关。一个含5000点位的BA项目,升级需12-18分钟。期间DesigoCCDatabaseService日志会持续输出Rebuilding index on table 'TrendValues'...。

5. 配置项目与备份:权限、端口、备份链的三角校验

配置项目(文档第18页)和备份(文档第1-3页)是工程交付的最后防线,但二者存在强耦合:未正确配置的项目无法备份,而备份失败的项目无法验证配置有效性。本章直击三个最易被忽略的校验点。

5.1 项目配置中的“安全访问权限”真相

文档第18页“设置项目文件夹共享和安全访问权限”,但SMC界面中根本找不到“共享”设置入口。真相是:Desigo CC不管理Windows共享,只管理NTFS权限。所谓“允许客户端连接”,实际指:

  • 项目文件夹(如C:\GMSProjects\BA_Project_2023)必须对IIS_IUSRS组授予“读取和执行”权限(供Desigo CC Web服务读取配置)
  • 同时对NT SERVICE\DesigoCCServer授予“完全控制”(供服务写入日志)

权限配置命令:

icacls "C:\GMSProjects\BA_Project_2023" /grant "IIS_IUSRS:(OI)(CI)(RX)" /t icacls "C:\GMSProjects\BA_Project_2023" /grant "NT SERVICE\DesigoCCServer:(OI)(CI)(F)" /t

/t参数确保递归应用到所有子文件夹。若漏掉/t,Config子文件夹权限不继承,客户端连接时会报Access denied to configuration file。

5.2 端口冲突的深度排查

文档第18页警告“两个已启动项目不能具有相同端口号”,但未提供排查工具。真实场景中,端口冲突常表现为:

  • 项目状态显示“已启动”,但SMC标题栏无项目名
  • 客户端浏览器访问http://<server>:50000显示“连接被拒绝”

排查命令(管理员PowerShell):

# 查看50000端口被谁占用 netstat -ano | findstr :50000 # 输出示例: TCP 0.0.0.0:50000 0.0.0.0:0 LISTENING 1234 # 1234是PID,查进程名: Get-Process -Id 1234 | Select-Object ProcessName, Path

若PID对应svchost.exe,需进一步查其承载的服务:

netsh interface ipv4 show excludedportrange protocol=tcp

此命令会显示Windows保留端口范围(如50000-50099),若50000在此范围内,则必须改用其他端口(如50100)。

5.3 备份验证:不止是“备份成功”,而是“可恢复”

文档第1页“备份数据库”,但备份文件(.bak)生成不代表可恢复。必须执行三步验证:

  1. 备份完整性检查:
RESTORE VERIFYONLY FROM DISK = 'C:\GMSProjects\BA_Project_2023\Backup\BA_Project_2023_20231001.bak'
  1. 备份集列表检查(一个备份文件可能含多个备份集):
RESTORE HEADERONLY FROM DISK = 'C:\GMSProjects\BA_Project_2023\Backup\BA_Project_2023_20231001.bak' -- 检查 `Position` 列,确认要恢复的是最新备份集(最大Position值)
  1. 模拟恢复测试(关键!):
-- 创建测试数据库(不覆盖原HDB) RESTORE DATABASE [DESIGOCC_HDB_TEST] FROM DISK = 'C:\GMSProjects\BA_Project_2023\Backup\BA_Project_2023_20231001.bak' WITH MOVE 'DESIGOCC_HDB_Data' TO 'D:\SQLData\DESIGOCC_HDB_TEST.mdf', MOVE 'DESIGOCC_HDB_Log' TO 'D:\SQLData\DESIGOCC_HDB_TEST_log.ldf', REPLACE, NORECOVERY; -- 检查表数据 SELECT TOP 10 * FROM [DESIGOCC_HDB_TEST].dbo.EventLog;

若EventLog表返回空结果,说明备份未包含事务日志——根源是HDB恢复模式设为Simple(见3.2节)。

6. 验证跑通:用一次“端到端事件流”证明环境真实可用

装完Desigo CC工程配置,真正的验收不是看SMC界面有没有绿点,而是让一个事件从产生、记录、存储到查询的全链路跑通。我每次部署完必做这个测试,它能在5分钟内暴露90%的隐蔽配置错误。

6.1 构建可验证的端到端事件流

目标:模拟一个BA系统中最典型的“空调机组故障报警→操作员确认→历史查询”闭环。需验证:

  • 事件能否写入HDB的EventLog表
  • 确认操作能否更新EventLog.ConfirmedBy字段
  • Web客户端能否实时看到该事件

步骤清单:

  1. 在SMC中启动项目:右键项目 → “启动”,等待状态变为“已启动”(非“已激活”)
  2. 强制触发测试事件:在SMC中右键HDB → “测试连接” → 勾选“写入测试事件” → 点击“确定”
  3. 验证HDB写入:在SSMS中执行
-- 查询刚写入的测试事件(5分钟内) SELECT TOP 1 EventID, EventType, EventText, ConfirmedBy, ConfirmedTime FROM [DESIGOCC_HDB].dbo.EventLog WHERE EventText LIKE '%Test Event%' ORDER BY EventTime DESC;

若返回结果且ConfirmedBy为空,说明事件写入成功但未确认。

  1. 模拟确认操作:在SMC中打开“事件日志”视图(需先在SMC中启用该功能:工具 → 选项 → 显示 → 勾选“事件日志”),找到测试事件 → 右键 → “确认” → 输入确认人(如Admin)
  2. 二次验证确认:再次执行上一步SQL,ConfirmedBy应为Admin,ConfirmedTime不为空

6.2 客户端连接验证的三个层次

文档未提及客户端验证,但这是工程交付的最终环节。验证需分层:

  • 网络层:在客户端电脑执行ping <DesigoCC_Server_IP>和telnet <DesigoCC_Server_IP> 50000
  • 服务层:浏览器访问http://<DesigoCC_Server_IP>:50000/DesigoCC/,应显示Desigo CC登录页(非IIS默认页)
  • 数据层:登录后进入“事件日志”模块,筛选时间范围为最近5分钟,应看到测试事件及确认记录

若第2层失败(显示“无法连接”),检查Desigo CC服务器的Windows防火墙:

netsh advfirewall firewall add rule name="DesigoCC Port 50000" dir=in action=allow protocol=TCP localport=50000

6.3 一份防翻车的部署检查表

这是我从2013年至今部署Desigo CC总结的终极检查表,每次交付前必打钩:

检查项验证方法通过标准
SQL Server服务状态Get-Service "MSSQLSERVER"状态为Running
HDB数据库状态SELECT state_desc FROM sys.databases WHERE name='DESIGOCC_HDB'返回ONLINE
项目文件夹权限icacls "C:\GMSProjects\BA_Project_2023"包含NT SERVICE\DesigoCCServer:(OI)(CI)(F)
端口监听状态netstat -ano | findstr :50000输出含LISTENING且PID对应DesigoCCServer.exe
事件日志写入查询EventLog表最新10条有EventType=1001(测试事件)且EventTime在5分钟内
备份文件可读RESTORE VERIFYONLY FROM DISK='...\backup.bak'返回The backup set on file 1 is valid.

从那以后我每次部署Desigo CC,都强制走一遍这个端到端事件流测试——不是为了证明“我会装”,而是为了确保交付给客户的系统,真能扛住下一个凌晨三点的空调故障报警。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询