Я создаю веб-приложение, которое пытается установить/обновить базу данных в App_Start. Часть процедуры установки заключается в том, чтобы в базе данных были установлены функции asp.net. Для этого я использую объект System.Web.Management.SqlServices.
Я намерен выполнять всю работу с базой данных в транзакции SQL и, если какой-либо из них терпеть неудачу, откатить транзакцию и оставить базу данных нетронутой.
объект SqlServices имеет метод "Install", который принимает ConnectionString, но не транзакцию. Поэтому вместо этого я использую SqlServices.GenerateApplicationServicesScripts, например:
string script = SqlServices.GenerateApplicationServicesScripts(true, SqlFeatures.All, _connection.Database);
SqlHelper.ExecuteNonQuery(transaction, CommandType.Text, script, ...);
а затем я использую SqlHelper из Enterprise Library.
но это вызывает исключение с ошибкой при прикладе, несколько ниже
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.
Я предполагаю, что это проблема с использованием оператора GO в транзакции SQL.
Как я могу заставить этот сгенерированный script работать при выполнении таким образом.