Ошибка около GO от C # до SQL Server - PullRequest
0 голосов
/ 05 июля 2018

Следующий запрос при выполнении из c # выдает исключение:

command.CommandText = "UPDATE dbo.GENTBLDOCUMENT SET fTitle = temp.Title FROM dbo.GENTBLDOCUMENT T INNER JOIN #TmpTable Temp ON  " +
                        "(T.fDocumentId = Temp.DocumentId); DROP TABLE #TmpTable;" + Environment.NewLine + "GO ";

Ошибка:

Неверный синтаксис рядом с 'GO'.

Однако, когда я копирую из визуализатора текста и запускаю в ssms, он работает нормально. В то же время, если я удаляю следующий фрагмент кода, он работает нормально:

 + Environment.NewLine + "GO "

Спасибо, что заглянули в это. Я использую таблицу Temp здесь с массовым копированием.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

GO помечает «пакет» в скрипте для запуска. У вас не будет этого в вашем скрипте из C #. Вы также хотели бы написать сценарий как дословно для лучшей читаемости:

command.CommandText = @"UPDATE dbo.GENTBLDOCUMENT 
        set fTitle = temp.Title 
    from dbo.GENTBLDOCUMENT T 
    INNER JOIN #TmpTable Temp 
      ON T.fDocumentId=Temp.DocumentId; 
    DROP TABLE #TmpTable;
";

Примечание. При "массовом копировании" вы можете использовать класс SqlBulkCopy.

0 голосов
/ 05 июля 2018

GO используется только в сценариях (например, в SQL Management Studio), чтобы указать серверу выполнить предыдущие команды.

Это недопустимый SQL и не может использоваться в запросах. Просто удалите его из вашего CommandText. Запрос будет выполнен без него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...