西門子Wincc的歸檔數(shù)據(jù)批量導出
1.?Linked Server
1).?登錄Sql Server Management Studio
2).?添加Linked Server
2.?存儲過程
1).?修改SQL腳本
2).?運行SQL腳本
3).?測試存儲過程
(a).?存儲過程說明
(b).?存儲過程調(diào)用
(c).?檢查調(diào)用結果
3.?代理任務
1).?設置SQL Server Agent服務
2).?添加代理任務
4.?導出舊數(shù)據(jù)
1).?存儲過程調(diào)用
2).?結果檢查
?
?
Linked Server
1).?登錄Sql Server Management Studio
在開始菜單中搜索ssms,在搜索結果中打開Sql Server Management Studio
?
在SQL SERVER Management Studio登錄窗口中,確認Server?Type是否為Database Engine,Server Name確認是否為HostName\WinCC(如無內(nèi)容,可輸入.\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歸檔數(shù)據(jù)庫,所以需輸入.\WinCC。
Catalog中輸入當前WinCC項目的運行數(shù)據(jù)庫名稱。每臺計算機的WinCC項目名稱不一樣,請確認WinCC運行數(shù)據(jù)庫名稱。
?
確認輸入信息無誤后,點擊OK按鈕,即可在Linked Server下看到添加的名為WINCCOLEDB的Linked Server。
?
存儲過程
1).?修改SQL腳本
點擊SQL Server Management Studio的“項目”菜單,選擇“OPEN“菜單,點擊”File“子菜單。
?
在文件瀏覽窗口中導航到SQL腳本文件所在文件夾,選擇SQL腳本文件TagLoggingExport.sql,點擊“Open“按鈕。
?
在SQL腳本編輯窗口,將數(shù)據(jù)庫名稱更換為WinCC項目運行數(shù)據(jù)庫名稱。
?
使用工具欄按鈕保存修改后的SQL腳本。
?
2).?運行SQL腳本
運行SQL腳本需確保WinCC項目已打開,如未打開WinCC項目,則數(shù)據(jù)庫中無WinCC項目運行數(shù)據(jù)庫。
在打開SQL腳本的狀態(tài)下,點擊工具欄?中的“Execute“按鈕運行存儲過程。
?
運行SQL腳本后,可在Message窗口中查看SQL腳本運行結果。
?
成功運行后,可以在WinCC項目運行數(shù)據(jù)庫中找到該存儲過程。
?
?
3).?測試存儲過程
(a).?存儲過程說明
WinCC TagLogging歸檔數(shù)據(jù)屬于加密方式存儲,使用普通的SQL語句無法直接查詢歸檔數(shù)據(jù)。該存儲過程使用WinCC OLEDB讀取前一天或者指定某一天的歸檔數(shù)據(jù),并明文存儲在新數(shù)據(jù)庫中。讀取前一天歸檔數(shù)據(jù)的模式,每天備份一個數(shù)據(jù)庫文件,數(shù)據(jù)庫備份文件名會增加前一日時間戳,例如TagLoggingBackup20211027。讀取指定某一天歸檔數(shù)據(jù)的模式,將以參數(shù)中的查詢?nèi)掌谠黾拥綌?shù)據(jù)庫備份文件中,例如TagLoggingBackup20210911。
該存儲過程具有6個參數(shù)。
?
@TableName:明文數(shù)據(jù)庫中用于存儲歸檔數(shù)據(jù)的表名。
@DatabaseName:明文數(shù)據(jù)庫名稱
@DatabasePath:明文數(shù)據(jù)庫文件存儲路徑,路徑必須存在,且末尾不用加\
@BackupName:數(shù)據(jù)庫備份bak文件名稱
@BackupPath:數(shù)據(jù)庫備份bak文件存儲路徑,路徑必須存在,且末尾不用加\
@SelectDate:查詢?nèi)掌?。如為NULL,則讀取前一天歸檔數(shù)據(jù)。如為指定日期,如2021-11-19,則讀取指定日期歸檔數(shù)據(jù)。如為0000-00-00,則用于測試,讀取前10分鐘歸檔數(shù)據(jù)
@ArchiveTagName:所需查詢的歸檔變量的名稱。如為ValueID,則數(shù)量不能超過20,如”103;104;105;106;107“。如需根據(jù)歸檔名稱ValueName查詢,則不長度不能超過128,且不能包含中文,如”Energy/tag1;Energy/Tag2;Energy/Tag3“。所需查詢所有歸檔變量,則設置為”ALL”
參數(shù)示例如下:
示例1:查詢所有歸檔變量數(shù)據(jù),存儲在名為TagLoggingDecode的明文數(shù)據(jù)庫中的data表中,該明文數(shù)據(jù)庫存儲路徑為c:\temp\database文件夾,備份數(shù)據(jù)庫文件名為TagLoggingBackup20211022.bak(時間戳為存儲過程中備份時自動增加),備份文件存儲路徑為c:\temp\database\backup文件夾。歸檔名以及歸檔變量名稱可在變量記錄中查詢。
?
EXEC sp_TagLoggingExportDay 'data','TagLoggingDecode','c:\temp\database','ALL',null,'TagLogging','c:\temp\database\backup'
示例2:查詢所有歸檔變量數(shù)據(jù),存儲在名為TagLoggingDecode的明文數(shù)據(jù)庫中的data表中,該明文數(shù)據(jù)庫存儲路徑為c:\temp\database文件夾,備份數(shù)據(jù)庫文件名為TagLoggingBackup20211011.bak(時間戳由SelectDate參數(shù)確定),備份文件存儲路徑為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 的歸檔數(shù)據(jù)查詢后,名為TagLoggingDecode的明文數(shù)據(jù)庫中的Data表中,該明文數(shù)據(jù)庫存儲路徑為c:\temp\database文件夾,備份數(shù)據(jù)庫文件名為TagLoggingBackup20211022.bak(時間為存儲過程中備份時自動增加),備份文件存儲路徑為c:\temp\database\backup文件夾。歸檔變量ID可于WinCC項目運行數(shù)據(jù)庫中的Archive表中查詢。
?
EXEC sp_TagLoggingExportDay 'data','TagLoggingDecode','c:\temp\database','893;894;895;896;897',null,'TagLogging','c:\temp\database\backup'
(b).?存儲過程調(diào)用
點擊工具欄中“New Query”按鈕,打開SQL腳本編輯窗口。
?
在SQL腳本編輯窗口輸入以下內(nèi)容。
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”按鈕即可執(zhí)行。
?
(c).?檢查調(diào)用結果
查看“Message”窗口,確認存儲過程運行是否有錯誤。
?
查看“Object Explorer”窗口,確認“Databases”下是否有新數(shù)據(jù)庫生成,如無需手動刷新。
?????????????
查看數(shù)據(jù)庫TagLoggingDecode下是否有創(chuàng)建data表。
?
查看data表中是否有前一天明文歸檔數(shù)據(jù),需注意,數(shù)據(jù)的時間戳均為UTC時間,右下角有總條數(shù),可在WinCCOnlineTableControl中查詢指定時間數(shù)據(jù),核對數(shù)據(jù)。
?
檢查路徑C:\Temp\database文件夾中是否存在TagLoggingDecode數(shù)據(jù)庫文件
?
檢查路徑C:\Temp\database\backup文件夾中是否存在TagLoggingBackup????????.bak的數(shù)據(jù)庫備份文件
?
代理任務
存儲過程測試正確之后,需配置自動運行任務,需使用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運行數(shù)據(jù)庫,將測試時的存儲過程代碼輸入到”Command“中。
?
點擊“OK”按鈕后,可在”New Job“窗口中看到新增加的步驟。由于所有內(nèi)容均在存儲過程中執(zhí)行,所以只需一個步驟即可。
?
在”New Job“窗口中,選擇“Schedules”屬性,點擊“New…”按鈕,設置作業(yè)自動執(zhí)行的時間。
?
在“New Job Sechedule”窗口中,輸入計劃名稱“ExportDatabaseBakDaily”,選擇計劃類型為“Recurring”,勾選“Enable”,頻率設置為每天,每日頻率設置為每天凌晨00:00:05,在執(zhí)行時間段中設定計劃作業(yè)開始時間,選擇”No End Date“。
?
點擊“OK“按鈕后,可在“Schedule”屬性中查看剛添加的計劃時間。
?
在“New Job“窗口中點擊”O(jiān)K“按鈕后,可在”O(jiān)bject Explorer“窗口中查看新增的計劃任務。
?
在“Object Explorer“窗口中,雙擊打開”Job Activity Monitor“可查看計劃任務運行狀態(tài)。
?
導出舊數(shù)據(jù)
1).?存儲過程調(diào)用
點擊工具欄?中的“New Query”按鈕。
?
--示例4:導出2021年10月11日的所有歸檔數(shù)據(jù),存儲在c:\temp\database數(shù)據(jù)庫TagLoggingDecode中的data表中,并備份到C:\temp\database\backup文件夾
--EXEC sp_TagLoggingExportDay 'data','TagLoggingDecode','c:\temp\database','ALL','2021-10-11','TagLogging','c:\temp\database\backup'
在編輯窗口中輸入調(diào)用的存儲過程腳本,下方圖中為導出2021-10-10日所有歸檔數(shù)據(jù)。
?
點擊工具欄中的“Execute”按鈕。
?
在Message窗口中檢查存儲過程執(zhí)行是否有報錯。
?
如需導出其它日期的歷史數(shù)據(jù),請修改存儲過程參數(shù)中的SelectDate參數(shù)后,按照以上流程操作。
2).?結果檢查
檢查當前查詢結果
查詢TagLoggingDecode數(shù)據(jù)庫中的data表中的數(shù)據(jù),確認數(shù)據(jù)是否為所查詢?nèi)掌谄陂g的數(shù)據(jù)。需注意,查詢的結果為UTC時間。
?
檢查數(shù)據(jù)庫備份結果
檢查C:\temp\database\backup文件夾中是否有新的數(shù)據(jù)庫文件存在。
?
鏈接:https://www.dianjilingqu.com/628028.html