Usar o "GO" dentro de uma transação

Estou construindo um aplicativo da web que tenta instalar / atualizar o banco de dados no App_Start. Parte do procedimento de instalação é garantir que o banco de dados tenha os recursos do asp.net instalados. Para isso, estou usando o objeto System.Web.Management.SqlService

Minha intenção é fazer todo o trabalho de banco de dados dentro de uma transação SQL e, se algum deles falhar, reverta a transação e deixe o banco de dados intocad

o objeto SqlServices possui um método "Install" que aceita uma ConnectionString, mas não uma transação. Então, em vez disso, uso SqlServices.GenerateApplicationServicesScripts da seguinte forma:

string script = SqlServices.GenerateApplicationServicesScripts(true, SqlFeatures.All, _connection.Database);
SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, script, ...);

e depois uso o SqlHelper da Enterprise Library.

mas isso gera uma exceção com um monte de erros, alguns estão abaixo de

Incorrect syntax near 'GO'.
Incorrect syntax near 'GO'.
Incorrect syntax near 'GO'.
Incorrect syntax near 'GO'.
Incorrect syntax near the keyword 'USE'.
Incorrect syntax near the keyword 'CREATE'.
Incorrect syntax near 'GO'.
The variable name '@cmd' has already been declared. Variable names must be unique within a query batch or stored procedure.

Presumo que haja algum problema com o uso da instrução GO em uma transação SQ

Como faço para que esse script gerado funcione quando executado dessa maneir

questionAnswers(16)

yourAnswerToTheQuestion