西门子Wincc的归档数据批量导出1

目录

1. Linked Server

1). 登录Sql Server Management Studio

2). 添加Linked Server

2. 存储过程

1). 修改SQL脚本

2). 运行SQL脚本

3). 测试存储过程

(a). 存储过程说明

(b). 存储过程调用

(c). 检查调用结果

3. 代理任务

1). 设置SQL Server Agent服务

2). 添加代理任务

4. 导出旧数据

1). 存储过程调用

2). 结果检查

 

 

  1. Linked Server

1). 登录Sql Server Management Studio

在开始菜单中搜索ssms,在搜索结果中打开Sql Server Management Studio

 

SQL SERVER Management Studio登录窗口中,确认Server Type是否为Database EngineServer Name确认是否为HostName\WinCC(如无内容,可输入.\WinCC)Authentication是否为Windows Authentication。

 

2). 添加Linked Server

Object Explorer窗口中,展开Server Object,在Linked Servers上右键,弹出菜单中选择New Linked Server。

 

New Linked Server窗口中,输入Linked Server的名称WINCCOLEDB,此名称在后面的存储过程中使用,请输入WINCCOLEDB。

Provider需选择WinCC OLEDB Provider for Archives。

Data Source为为本机的WinCC归档数据库,所以需输入.\WinCC。

Catalog中输入当前WinCC项目的运行数据库名称。每台计算机的WinCC项目名称不一样,请确认WinCC运行数据库名称。

 

确认输入信息无误后,点击OK按钮,即可在Linked Server下看到添加的名为WINCCOLEDBLinked Server。

 

  1. 存储过程

1). 修改SQL脚本

点击SQL Server Management Studio“项目”菜单,选择“OPEN“菜单,点击”File“子菜单。

 

在文件浏览窗口中导航到SQL脚本文件所在文件夹,选择SQL脚本文件TagLoggingExport.sql,点击“Open“按钮。

 

SQL脚本编辑窗口,将数据库名称更换为WinCC项目运行数据库名称。

 

使用工具栏按钮保存修改后的SQL脚本。

 

2). 运行SQL脚本

运行SQL脚本需确保WinCC项目已打开,如未打开WinCC项目,则数据库中无WinCC项目运行数据库。

在打开SQL脚本的状态下,点击工具栏 中的Execute“按钮运行存储过程。

 

运行SQL脚本后,可在Message窗口中查看SQL脚本运行结果。

 

成功运行后,可以在WinCC项目运行数据库中找到该存储过程。

 

 

3). 测试存储过程

(a). 存储过程说明

WinCC TagLogging归档数据属于加密方式存储,使用普通的SQL语句无法直接查询归档数据。该存储过程使用WinCC OLEDB读取前一天或者指定某一天的归档数据,并明文存储在新数据库中。读取前一天归档数据的模式,每天备份一个数据库文件,数据库备份文件名会增加前一日时间戳,例如TagLoggingBackup20211027。读取指定某一天归档数据的模式,将以参数中的查询日期增加到数据库备份文件中,例如TagLoggingBackup20210911。

该存储过程具有6个参数。

 

  • @TableName:明文数据库中用于存储归档数据的表名。
  • @DatabaseName:明文数据库名称
  • @DatabasePath:明文数据库文件存储路径,路径必须存在,且末尾不用加\
  • @BackupName:数据库备份bak文件名称
  • @BackupPath:数据库备份bak文件存储路径,路径必须存在,且末尾不用加\
  • @SelectDate:查询日期。如为NULL,则读取前一天归档数据。如为指定日期,如2021-11-19,则读取指定日期归档数据。如为0000-00-00,则用于测试,读取前10分钟归档数据
  • @ArchiveTagName:所需查询的归档变量的名称。如为ValueID,则数量不能超过20,如”103;104;105;106;107“。如需根据归档名称ValueName查询,则不长度不能超过128,且不能包含中文,如”Energy/tag1;Energy/Tag2;Energy/Tag3“。所需查询所有归档变量,则设置为”ALL”

参数示例如下:

  • 示例1:查询所有归档变量数据,存储在名为TagLoggingDecode的明文数据库中的data表中,该明文数据库存储路径为c:\temp\database文件夹,备份数据库文件名为TagLoggingBackup20211022.bak(时间戳为存储过程中备份时自动增加),备份文件存储路径为c:\temp\database\backup文件夹。归档名以及归档变量名称可在变量记录中查询。

 

EXEC sp_TagLoggingExportDay 'data','TagLoggingDecode','c:\temp\database','ALL',null,'TagLogging','c:\temp\database\backup'

  • 示例2:查询所有归档变量数据,存储在名为TagLoggingDecode的明文数据库中的data表中,该明文数据库存储路径为c:\temp\database文件夹,备份数据库文件名为TagLoggingBackup20211011.bak(时间戳由SelectDate参数确定),备份文件存储路径为c:\temp\database\backup文件夹。

EXEC sp_TagLoggingExportDay 'data','TagLoggingDecode','c:\temp\database','ALL','2021-10-11','TagLogging','c:\temp\database\backup'

  • 示例3:将MyArchive归档中的归档变量ID为893,894,895,896,897 的归档数据查询后,名为TagLoggingDecode的明文数据库中的Data表中,该明文数据库存储路径为c:\temp\database文件夹,备份数据库文件名为TagLoggingBackup20211022.bak(时间为存储过程中备份时自动增加),备份文件存储路径为c:\temp\database\backup文件夹。归档变量ID可于WinCC项目运行数据库中的Archive表中查询。

 

EXEC sp_TagLoggingExportDay 'data','TagLoggingDecode','c:\temp\database','893;894;895;896;897',null,'TagLogging','c:\temp\database\backup'

(b). 存储过程调用

点击工具栏中“New Query”按钮,打开SQL脚本编辑窗口。

 

SQL脚本编辑窗口输入以下内容。

USE [CC_oval_21_10_27_09_20_33R]

EXEC sp_TagLoggingExportDay 'data',

'TagLoggingDecode',

'c:\temp\database',

'TagLogging',

'c:\temp\database\backup',

'2021-10-27',

'ALL'

点击工具栏中的Execute”按钮即可执行。

 

(c). 检查调用结果

  • 查看“Message”窗口,确认存储过程运行是否有错误。

 

  • 查看Object Explorer”窗口,确认“Databases”下是否有新数据库生成,如无需手动刷新。

             

  • 查看数据库TagLoggingDecode下是否有创建data表。

 

  • 查看data表中是否有前一天明文归档数据,需注意,数据的时间戳均为UTC时间,右下角有总条数,可在WinCCOnlineTableControl中查询指定时间数据,核对数据。

 

  • 检查路径C:\Temp\database文件夹中是否存在TagLoggingDecode数据库文件

 

  • 检查路径C:\Temp\database\backup文件夹中是否存在TagLoggingBackup????????.bak的数据库备份文件

 

  1. 代理任务

存储过程测试正确之后,需配置自动运行任务,需使用SQL Server Agent服务。

1). 设置SQL Server Agent服务

Win+R组合键,打开运行窗口,输入Services.msc,打开“服务”。

 

找到“服务”中的“SQL Server Agent(WinCC)”服务。

 

启动“SQL Server Agent(WINCC)”服务,并且将该服务设置为“自动”模式。

 

2). 添加代理任务

展开Object Explorer”窗口中的SQL Server Agent,在”Jobs“上右键,在弹出菜单中选择子菜单”New Job…“

 

“New Job“窗口中,选择”General“属性,输入任务名称”ExportTagLogging”。

 

New Job“窗口中,选择”Steps“属性,点击按钮”New…”

 

在”New Job Step“窗口中,在”Step Name“中输入步的名称,如”ExportDatabaseBak”,在“Type”中选择“Transact-SQL script (T-SQL),在”Database”中选择WinCC运行数据库,将测试时的存储过程代码输入到”Command“中。

 

点击“OK”按钮后,可在”New Job“窗口中看到新增加的步骤。由于所有内容均在存储过程中执行,所以只需一个步骤即可。

 

在”New Job“窗口中,选择“Schedules”属性,点击“New…”按钮,设置作业自动执行的时间。

 

New Job Sechedule”窗口中,输入计划名称“ExportDatabaseBakDaily”,选择计划类型为“Recurring”,勾选“Enable”,频率设置为每天,每日频率设置为每天凌晨00:00:05,在执行时间段中设定计划作业开始时间,选择”No End Date“。

 

点击“OK“按钮后,可在“Schedule”属性中查看刚添加的计划时间。

 

“New Job“窗口中点击”OK“按钮后,可在”Object Explorer“窗口中查看新增的计划任务。

 

Object Explorer“窗口中,双击打开”Job Activity Monitor“可查看计划任务运行状态。

 

  1. 导出旧数据

1). 存储过程调用

点击工具栏 中的“New Query”按钮。

 

--示例4:导出20211011日的所有归档数据,存储在c:\temp\database数据库TagLoggingDecode中的data表中,并备份到C:\temp\database\backup文件夹

--EXEC sp_TagLoggingExportDay 'data','TagLoggingDecode','c:\temp\database','ALL','2021-10-11','TagLogging','c:\temp\database\backup'

在编辑窗口中输入调用的存储过程脚本,下方图中为导出2021-10-10日所有归档数据。

 

点击工具栏中的“Execute”按钮。

 

Message窗口中检查存储过程执行是否有报错。

 

如需导出其它日期的历史数据,请修改存储过程参数中的SelectDate参数后,按照以上流程操作。

2). 结果检查

  • 检查当前查询结果

查询TagLoggingDecode数据库中的data表中的数据,确认数据是否为所查询日期期间的数据。需注意,查询的结果为UTC时间。

 

  • 检查数据库备份结果

检查C:\temp\database\backup文件夹中是否有新的数据库文件存在。

 

posted @ 2022-12-03 21:05  Caesar_the_great  阅读(585)  评论(0编辑  收藏  举报