Я создаю веб-приложение, которое пытается установить/обновить базу данных в App_Start. Часть процедуры установки заключается в том, чтобы в базе данных были установлены функции asp.net. Для этого я использую объект System.Web.Management.SqlServices.Использование «GO» в транзакции
Мое намерение состоит в том, чтобы выполнять всю работу с базой данных в транзакции SQL, и если какой-либо из них терпит неудачу, откатите транзакцию и оставите базу данных нетронутой.
Объект SqlServices имеет метод «Установить», который принимает 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 транзакции.
Как я могу заставить этот сгенерированный скрипт работать при выполнении таким образом.
Посмотрите также на это: [Использование таблицы только после его создания: объект не существует] (http://stackoverflow.com/questions/784953/using-table- just-after-creation-it-object-does-not-exist/785096 # 785096) –
Хорошая точка. Спасибо –