/// <summary>
 /// Reads the script from disk
 /// </summary>
 /// <param name="script">
 /// The script. 
 /// </param>
 /// <returns>
 /// The script split into an array of strings. 
 /// </returns>
 private static string[] ReadScript(SqlWorkflowInstanceStoreScript script)
 {
     return SqlReqex.Split(File.ReadAllText(GetScriptPath(script)));
 }
 /// <summary>
 /// Gets the path to the SQL Script
 /// </summary>
 /// <param name="script">
 /// The script type. 
 /// </param>
 /// <returns>
 /// The script path. 
 /// </returns>
 private static string GetScriptPath(SqlWorkflowInstanceStoreScript script)
 {
     return Path.Combine(
         RuntimeEnvironment.GetRuntimeDirectory(), string.Format(SqlWorkflowInstanceStoreSql, script));
 }
 private static void InvokeScript(
     SqlWorkflowInstanceStoreScript script, string databaseName, string connectionString)
 {
     using (var sqlConnection = new SqlConnection(ConfigureConnection(connectionString, databaseName)))
     using (var command = sqlConnection.CreateCommand())
     {
         sqlConnection.Open();
         foreach (var sqlStatement in GetScript(script).Where(sqlStatement => sqlStatement.Length > 0))
         {
             command.CommandText = sqlStatement;
             command.ExecuteNonQuery();
         }
     }
 }
        /// <summary>
        /// Caches and returns a script loaded from file
        /// </summary>
        /// <param name="script">
        /// The script. 
        /// </param>
        /// <returns>
        /// The get script. 
        /// </returns>
        private static IEnumerable<string> GetScript(SqlWorkflowInstanceStoreScript script)
        {
            switch (script)
            {
                case SqlWorkflowInstanceStoreScript.Logic:
                    return logicScript
                           ??
                           (logicScript = ReadScript(SqlWorkflowInstanceStoreScript.Logic));

                case SqlWorkflowInstanceStoreScript.Schema:
                    return schemaScript
                           ??
                           (schemaScript = ReadScript(SqlWorkflowInstanceStoreScript.Schema));
            }

            return null;
        }