2013-04-29 1 views
0

Итак, мы используем osql для запуска хранимых процедур как часть нашего процесса сборки. Мы используем проект с папкой sp, который публикуется с приложениями как часть пакета сборки.OSQL Неправильный синтаксис - Кодировка символов - Требуется справки по сценариям Powershell

Я использовал Visual Studio для создания этой структуры проекта и создал sql-скрипты для запуска в proc.

Visual Studio сохранил файлы с форматированием UTF8 (по умолчанию). OSQL при работе в сценарии жаловались на каждый сценарий, имеющий синтаксическую ошибку в строке 1, т.е.

> Incorrect syntax near '´'.  1> 2> Msg 102, Level 15, State 1, 
> Server GBEPIAP-SQL01, Line 1 

Скорее озадачивает.

В любом случае; чтобы исправить эту проблему, SQL-скрипты могут быть сохранены с Unicode Codepage 1200 (Файл -> Advanced Save Options)

вуаля - проблема ушла

Теперь это оставило меня с еще большей проблемой; У меня более 200 скриптов proc, которые мне нужно открыть, изменить кодировку и сохранить с новой кодировкой.

Может ли любой гуру powershell создать быстрый сценарий для изменения кодировки каждого файла в папке в Unicode Codepage 1200? Будет делать мне одолжение, а также экономит время.

+1

OSQL действительно очень старый - вы должны попробовать использовать 'sqlcmd' вместо этого, что гораздо более позднего и можете обрабатывать кодировки лучше –

+0

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

ответ

1

В конце концов я использовал подход, описываемый здесь

Save all files in Visual Studio project as UTF-8

Но вместо UTF8; Я указал Юникод.

foreach (var f in new DirectoryInfo(@"...").GetFiles("*.sql", SearchOption.AllDirectories)) { 
    string s = File.ReadAllText(f.FullName); 
    File.WriteAllText (f.FullName, s, Encoding.Unicode); 
} 
+0

Я использовал notepad ++ для моего скрипта и выбор кодировки в ANSII или UTF 8 без спецификации работал для меня. – user2983931