C# – Datei nach ASCII konvertieren

Mit diesem kleinen Skript konvertieren ich mir Dateien nach ASCII.

        static void Main(string[] args)
        {

            string file = @"e:\Temp\file_with_utf8bom";

            Console.WriteLine(GetFileEncoding(file).ToString());
            Console.ReadKey();

            if (GetFileEncoding(file).ToString() != "System.Text.ASCIIEncoding")
            {
                StreamReader sr = new StreamReader(file);
                StreamWriter sw = new StreamWriter(file + "_new", false, Encoding.Default);

                sw.WriteLine(sr.ReadToEnd());
                sw.Close();
                sr.Close();

            }
        }

        public static Encoding GetFileEncoding(string filename)
        {
            // Read the BOM
            var bom = new byte[4];
            using (var file = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                file.Read(bom, 0, 4);
            }

            // Analyze the BOM
            if (bom[0] == 0x2b && bom[1] == 0x2f && bom[2] == 0x76)
            {
                return Encoding.UTF7;
            }

            else if (bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf)
            {
                return Encoding.UTF8;
            }
            else if (bom[0] == 0x42 && bom[1] == 0x50 && bom[2] == 0x30)
            {
                return Encoding.UTF8;
            }

            else if (bom[0] == 0xff && bom[1] == 0xfe)
            {
                return Encoding.Unicode;
            }

            else if (bom[0] == 0xfe && bom[1] == 0xff)
            {
                return Encoding.BigEndianUnicode;
            }

            else if (bom[0] == 0 && bom[1] == 0 && bom[2] == 0xfe && bom[3] == 0xff)
            {
                return Encoding.UTF32;
            }
            else
                return Encoding.ASCII;
        }

SQL-Server – Festplattenkapazität selektieren

Ein kurzes aber ziemlich wichtiges Statement, wenn die Kapazitäten von einem oder mehreren SQL-Servern beobachtet werden soll. In meinem Fall läuft täglich ein Job, welcher diverse Parameter prüft und aus den gesammelten Daten eine Staus-E-Mail erzeugt. Neben einer Auflistung der SQL-Agents (aktiv, erfolgreich, fehlerhaft) führe ich mir jetzt endlich auch den freien Speicherplatz auf.

;WITH bytes
AS (
 SELECT DISTINCT s.volume_mount_point
 ,cast(s.available_bytes / 1048576.0 AS DECIMAL(20, 2)) AS verfuegbar
 ,cast(s.total_bytes / 1048576.0 AS DECIMAL(20, 2)) AS total
 FROM sys.master_files f
 CROSS APPLY sys.dm_os_volume_stats(f.database_id, f.file_id) s
 )
SELECT volume_mount_point
 ,verfuegbar
 ,total
 ,cast((verfuegbar / total) * 100 AS DECIMAL(20, 2)) as prozent
FROM bytes
ORDER BY volume_mount_point

Die Ausgabe könnte dann z.B. so aussehen:

volume_mount_point	verfuegbar	total		prozent
C:\			8257.02		40857.00	20.21
D:\			32284.75	48073.00	67.16