Ответ 1
Такие неожиданные проблемы могут возникнуть, когда вы копируете код с веб-страницы или электронной почты, и текст содержит непечатаемые символы, такие как отдельные символы CR или LF и неразрывные пробелы.
Я пытаюсь запустить следующий довольно простой запрос в SQL Server Management Studio:
SELECT TOP 1000 *
FROM
master.sys.procedures as procs
left join
master.sys.parameters as params on procs.object_id = params.object_id
Это кажется совершенно правильным, но я продолжаю получать следующую ошибку:
Msg 102, уровень 15, состояние 1, строка 6
Неверный синтаксис рядом с '..
Он работает, если я выберу соединение и сделаю простой выбор:
SELECT TOP 1000 *
FROM
master.sys.procedures as procs
Но мне нужно присоединиться к работе. Я даже не имел строку '' в этом запросе, поэтому не могу понять, что ему не нравится.
Такие неожиданные проблемы могут возникнуть, когда вы копируете код с веб-страницы или электронной почты, и текст содержит непечатаемые символы, такие как отдельные символы CR или LF и неразрывные пробелы.
Ошибка для меня состояла в том, что я прочитал инструкцию SQL из текстового файла, и текстовый файл был сохранен в формате UTF-8 с форматом BOM (метка порядка следования байтов).
Чтобы решить эту проблему, я открыл файл в Notepad++ и в разделе "Кодирование" выбрал UTF-8. В качестве альтернативы вы можете удалить первые три байта файла с помощью шестнадцатеричного редактора.
Панагиотис Канавос прав, иногда копирование и вставка T-SQL могут приводить к появлению нежелательных символов...
Наконец, я нашел простой и быстрый способ (нужен только Notepad++), чтобы определить, какой символ неправильный, без необходимости переписывать вручную весь оператор: нет необходимости сохранять какой-либо файл на диск.
Это довольно быстро, в Notepad++:
Вы должны легко найти неправильный символ (ы)
Я использовал ADO.NET и использовал команду SQL как:
string query =
"SELECT * " +
"FROM table_name" +
"Where [email protected]";
дело в том, что я пропустил пробел в конце "FROM table_name"+
Так в основном сказано
string query = "SELECT * FROM table_nameWHERE [email protected]";
и это было причиной ошибки.
Надеюсь, поможет
Я получил эту ошибку, потому что я вставил псевдоним столбцы в оператор DECLARE.
DECLARE @userdata TABLE(
f.TABLE_CATALOG nvarchar(100),
f.TABLE_NAME nvarchar(100),
f.COLUMN_NAME nvarchar(100),
p.COLUMN_NAME nvarchar(100)
)
SELECT * FROM @userdata
ОШИБКА: Сообщение 102, уровень 15, состояние 1, строка 2 Неверный синтаксис рядом с символом ".".
DECLARE @userdata TABLE(
f_TABLE_CATALOG nvarchar(100),
f_TABLE_NAME nvarchar(100),
f_COLUMN_NAME nvarchar(100),
p_COLUMN_NAME nvarchar(100)
)
SELECT * FROM @userdata
НЕТ ОШИБОК