SQLDataadapter не работает с GO

Я использую SQLDataAdapter для запуска скрипта. Скрипт, как показано ниже,

ALTER TABLE dbo.Table1 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
select Has_Perms_By_Name(N'dbo.Table1', 'Object', 'ALTER') as ALT_Per, Has_Perms_By_Name(N'dbo.Table1', 'Object', 'VIEW DEFINITION') as View_def_Per, Has_Perms_By_Name(N'dbo.Table1', 'Object', 'CONTROL') as Contr_Per BEGIN TRANSACTION
GO
ALTER TABLE dbo.Table2
DROP CONSTRAINT DF_Table2
GO

Это дает мне ошибку как неправильный синтаксис рядом с GO. Если я уберу GO из текста запроса, он будет работать нормально. Но мне нужно только выполнить этот скрипт.

Вот код С#. QueryText — это строка, содержащая весь запрос вместе с SET и GO.

DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(_connectionString);
SqlDataAdapter da = new SqlDataAdapter(QueryText, conn);
da.Fill(ds);

Кто-нибудь знает, как с ним быть.

Заранее спасибо,
Вижай


person Vijay Balkawade    schedule 23.05.2012    source источник
comment
Какую часть приведенного выше скрипта вам нужно запустить? Если вы удалите все GO (а также BEGIN/COMMIT), сможете ли вы успешно запустить его? Можете ли вы показать нам свой код?   -  person Steve    schedule 23.05.2012
comment
Если я заменю GO точкой с запятой, это сработает. Но не уверен, что это правильный способ или нет.   -  person Vijay Balkawade    schedule 23.05.2012
comment
@Vijay, тег go предназначен для языка Go. Не могли бы вы удалить это из вопроса? благодарю вас.   -  person Santiago Corredoira    schedule 24.05.2012


Ответы (1)


GO — это маркер для Management Studio или других инструментов командной строки SQLServer, а также последний разделитель для отправки пакета команд в SQL Server.
В коде необходимо воспроизвести это поведение.
Разделите сценарий на части. используя GO в качестве разделителя.
Отправьте каждую часть с помощью одной команды (для ALTER TABLE) и используйте SqlDataAdapter для части SELECT.
Также вам следует удалить COMMIT и BEGIN TRANSACTION из частей скрипта и использовать, внутри вашего кода объект SqlTransaction из SQLConnection.

person Steve    schedule 23.05.2012