Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        /*
         * 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);
        }