Как исправить ошибки «неправильный синтаксис рядом с GO» в сценариях, созданных с помощью мастера публикации баз данных Microsoft? - PullRequest
14 голосов
/ 21 ноября 2010

Я искал «окончательное» решение этой проблемы уже пару часов и не могу точно выяснить, в чем проблема, поэтому надеюсь, что кто-то может указать мне правильное направление.

Я пытаюсь создать сценарий для базы данных (файловой базы данных MDF) на удаленном компьютере и использовать его для локального создания этой же базы данных.У меня Visual Studio 2010 на обеих машинах, поэтому я использовал Мастер публикации баз данных для генерации сценария.

Затем я создал пустую БД в Visual Studio локально (еще одну БД с файлом MDF) и выбрал ее для создания нового запроса.,Я вставил скопированный скрипт, но когда я пытаюсь его запустить, я получаю десятки ошибок "неправильный синтаксис рядом с GO".Я не уверен, сколько всего, так как всплывающее окно с предупреждением уходит внизу моего экрана.Хотя может показаться, что это много.

Я обрезал все, кроме самой верхней части скрипта, и все равно получаю те же ошибки.Теперь это выглядит следующим образом:

SET ANSI_NULLS ON

GO

Я по-прежнему получаю сообщение об ошибке «Неверный синтаксис рядом с GO».

Есть ли что-то не так в скриптах, которые генерирует этот инструмент, или я делаючто-то не так с этим?

Удаленная БД - это 2008 R2, а мой локальный - просто 2008, поэтому я просто не копирую файл MDF.

Если у кого-то есть предложения,они будут очень рады.

Ответы [ 2 ]

19 голосов
/ 21 ноября 2010

Из документов:

GO не является оператором Transact-SQL;это команда, распознаваемая утилитами sqlcmd и osql и редактором кода SQL Server Management Studio.

Либо используйте такой инструмент для выполнения скрипта, либо пропустите команды GO.

8 голосов
/ 31 октября 2012

Недавно я столкнулся с той же проблемой и нашел правильный ответ на нее (я думаю).

Если вы создадите запрос в каком-то произвольном редакторе, отличном от редактора кода SQL Server Management Studio, в концеВ строке вы можете получить символ ВОЗВРАТ ЗАРЯДКИ (\ r) вместо ВОЗВРАТ ЗАРЯДКИ + ЛИНЕЙНАЯ ПОДАЧА (\ r \ n) .И даже если вы нажмете клавишу DEL в конце строки, а затем Enter, она не изменится.

Используйте Notepad ++ для замены CR (\ r) на CRLF (\ r \ n) - соблюдайте порядок, это важно!

...