public CollectorLogger(string SourceServerInstance, Guid CollectionSetUid, int ItemId) { prefix = CollectorUtils.getCacheFilePrefix(SourceServerInstance, CollectionSetUid, ItemId); prefix += "_" + DateTime.Now.ToString("yyyyMMdd"); outputFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); outputFolder = Path.Combine(outputFolder, "Logs"); outputFile = Path.Combine(outputFolder, prefix + "_Collector.log"); System.IO.DirectoryInfo targetFolder = new System.IO.DirectoryInfo(outputFolder); if (!targetFolder.Exists) { targetFolder.Create(); } }
/* * Execute the data upload process */ public void UploadData() { logger = new CollectorLogger(SourceServerInstance, CollectionSetUid, ItemId); String displayName; String[] names = this.GetType().Namespace.Split('.'); displayName = names[names.Length - 1]; if (verbose) { logger.logMessage("--------------------------------"); } if (verbose) { logger.logMessage(" " + displayName); } if (verbose) { logger.logMessage("--------------------------------"); } if (verbose) { logger.logMessage("Copyright© sqlconsulting.it 2014"); } if (verbose) { logger.logMessage("-"); } if (verbose) { logger.logMessage("Loading configuration"); } // // Load Configuration // CollectorConfig cfg = null; Guid CollectorTypeUid = new Guid("00000000-0000-0000-0000-000000000000"); if (this.GetType().Namespace.Equals("Sqlconsulting.DataCollector.ExtendedXEReaderUploader")) { cfg = new XEReaderCollectorConfig(); CollectorTypeUid = XEReaderCollectionItemConfig.CollectorTypeUid; } else if (this.GetType().Namespace.Equals("Sqlconsulting.DataCollector.ExtendedTSQLUploader")) { cfg = new TSQLCollectorConfig(); CollectorTypeUid = TSQLCollectionItemConfig.CollectorTypeUid; } cfg.readFromDatabase(SourceServerInstance, CollectionSetUid, ItemId); //String collectorId = CollectionSetUid + "_" + ItemId.ToString(); if (verbose) { logger.logMessage("Updating source info"); } // // Update Source Info // int source_id = updateDataSource(cfg.MDWInstance, cfg.MDWDatabase, CollectionSetUid, cfg.MachineName, cfg.InstanceName, cfg.DaysUntilExpiration); int snapshot_id = -1; foreach (CollectionItemConfig item in cfg.collectionItems) { String collectorId = CollectorUtils.getCacheFilePrefix(SourceServerInstance, CollectionSetUid, ItemId) + "_" + item.Index; // // Create the target table // String targetTable = createTargetTable(cfg, item); Boolean tableCreated = (targetTable != null); foreach (String fileName in System.IO.Directory.GetFiles(cfg.CacheDirectory)) { System.IO.FileInfo destFile = new System.IO.FileInfo(fileName); //if (verbose) logger.logMessage("Processing " + destFile.FullName); //if (verbose) logger.logMessage("Searching " + collectorId); if (destFile.Name.Contains(collectorId + "_") && destFile.Extension.ToLowerInvariant().Equals(".cache")) { if (verbose) { logger.logMessage("Uploading " + destFile.FullName); } DataTable collectedData = null; System.Runtime.Serialization.Formatters.Binary.BinaryFormatter fm = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); // // Deserialize from the binary file // using (System.IO.FileStream fs = new System.IO.FileStream(destFile.FullName, System.IO.FileMode.Open)) { collectedData = (DataTable)fm.Deserialize(fs); fs.Close(); } // // Load the snapshot_id // if (snapshot_id < 0) { if (verbose) { logger.logMessage("Creating snapshot"); } snapshot_id = createSnapshot(cfg.MDWInstance, cfg.MDWDatabase, CollectionSetUid, CollectorTypeUid, cfg.MachineName, cfg.InstanceName, LogId); } // // Add the snapshot_id column to the DataTable // DataColumn cl_sn = new DataColumn("snapshot_id", typeof(Int32)); cl_sn.DefaultValue = snapshot_id; collectedData.Columns.Add(cl_sn); // // Check again if table needs to be created // if (!tableCreated) { targetTable = createTargetTable(cfg, item, collectedData); tableCreated = true; } if (verbose) { logger.logMessage("Writing to server... " + targetTable); } CollectorUtils.WriteDataTable(cfg.MDWInstance, cfg.MDWDatabase, targetTable, collectedData); if (verbose) { logger.logMessage("Deleting file"); } destFile.Delete(); } } } logger.cleanupLogFiles(cfg.DaysUntilExpiration); }