Whilst building an 'custom action' to install a database, I encountered a SqlException ("Incorrect syntax near...") when calling ExecuteNonQuery(). To solve the problem process sql commands separately (using 'GO' as a delimiter). Thankfully parsing the ".sql" file into commands is fairly straight forward:
string[] commands = sql.Split( new string[]{"GO\r\n", "GO ", "GO\t"}, StringSplitOptions.RemoveEmptyEntries ); foreach (string c in commands) { command = new SqlCommand(c, masterConnection); command.ExecuteNonQuery(); } } catch (Exception e) { MessageBox.Show(e.Message); } finally { masterConnection.Close(); } }