2012-08-29 3 views
4

я пытаюсь запустить обновление скриптов для своего программного обеспечения в следующем формате:Проблемы запуска скриптов через Osql.exe

osql.exe -i «Путь \ к \ сценарий» -U «пользователь» -P «Пароль» -S «Местоположение sqlserver» -d «Название базы данных» -n -b

Большинство сценариев находятся в одном формате и заканчиваются GO. Многие из них работают нормально, но все случайные скрипты возвращают ошибку и не будут работать. Ошибка: «Неверный синтаксис рядом с« ∩ »в строке 1. Скрипт может быть таким же простым, как только INSERT, но всегда эта ошибка. Я не могу найти что-либо в Интернете, которое могло мне помочь. Может ли кто-нибудь дать какую-либо информацию?

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

ответ

3

Скорее всего, поскольку файл кодируется как Unicode вместо UTF-8. Вы можете проверить это в Notepad ++ среди других бесплатных утилит. Попробуйте преобразовать его в UTF-8 и посмотреть, поможет ли эта помощь s.

UPDATE

Исправление: Поскольку статья связана в комментариях объясняет, OSQL может анализировать текстовые файлы в кодировке UTF-16 (Unicode 1200) или 'ANSI' (Windows-1252), но он не может разобрать UTF -8 закодированных файлов.

+0

Я открыл его в Notepad ++ и под Encode «Кодировка» «в кодировке UTF-8» помечен который я предполагаю, означает, что он уже находится в этом формате. Чтобы убедиться, что я также открыл его в firefox, и в View-> Encoding он говорит, что это «Unicode (UTF-8)» – user1427105

+0

Возможно, попробуйте преобразовать его в «ANSI» (неудачный psuedonym для Windows-1252). Просто гадать ... – PinnyM

+0

Это выглядит интересно: http://kiquenet.wordpress.com/2010/07/29/osql-exe-y-encoding-utf8/ – user1427105

1

Это звучит как проблема с Unicode (особенно, так как копирование/вставка в новый документ работает). Для того, чтобы проверить, что вы можете использовать type и перенаправить на временный файл, который заставит его ANSI вот так:

type \path\to\script.sql > %TEMP%\newscriptname.sql & osql.exe -i "%TEMP%\newscriptname.sql" -U "user" -P "Password" -S "Location of sqlserver" -d "Database name" -n -b 
+0

Это приводит к той же ошибке. Есть ли какой-то атрибут osql, чтобы определить, что он будет читать? – user1427105

Смежные вопросы