Я создаю веб-приложение, которое пытается установить / обновить базу данных на 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 из библиотеки предприятия.
но это вызывает исключение с множеством ошибок, некоторые из них ниже
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.
Как заставить этот сгенерированный скрипт работать при таком исполнении.