/// <summary>
        /// Truncates the database and runs the SQL file at the provided path against the current database
        /// </summary>
        /// <param name="FileName">The file name to run</param>
        /// <param name="SplitOn">The batch delimeter, defaults to "GO"</param>
        public static async Task Restore(string FileName, string ConnectionString, int CommandTimeout = 300, string SplitOn = ScriptHelpers.DEFAULT_SPLIT, Encoding encoding = null)
        {
            encoding = encoding ?? Encoding.Default;

            TruncateDatabase(ConnectionString);
            await ScriptHelpers.RunSplitScript(FileName, ConnectionString, CommandTimeout, SplitOn, encoding);
        }
        /// <summary>
        /// Runs the SQL file at the provided path against the current database
        /// </summary>
        /// <param name="FileName">The file name to run</param>
        /// <param name="SplitOn">The batch delimeter, defaults to "GO"</param>
        /// <param name="encoding">The encoding to read the file with</param>
        /// <param name="detectEncodingFromByteOrderMarks">Try to automatically detect the file encoding</param>
        /// <param name="bufferSize">The buffer size for the stream reader</param>
        public async Task ExecuteScript(string FileName, string SplitOn = ScriptHelpers.DEFAULT_SPLIT, Encoding encoding = null, bool detectEncodingFromByteOrderMarks = true, int bufferSize = -1)
        {
            encoding = encoding ?? Encoding.Default;

            await ScriptHelpers.RunSplitScript(FileName, this.ConnectionString, this.CommandTimeout, SplitOn, encoding, detectEncodingFromByteOrderMarks, bufferSize);
        }