2013-04-29 75 views
0

因此,我们使用osql作为构建过程的一部分在存储过程中运行。我们使用具有sp文件夹的项目作为构建包的一部分与应用程序一起发布。OSQL不正确的语法 - 字符编码 - 需要Powershell脚本帮助

我用Visual Studio创建了这个项目结构,并创建了sql脚本在procs中运行。

Visual Studio保存了UTF8格式的文件(默认情况下)。 osql在脚本中运行时抱怨第1行有语法错误的每个脚本,即

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

相当莫名其妙。

无论如何;要解决这个问题,SQL脚本可以节省使用Unicode代码页1200(文件 - >高级保存选项)

等瞧 - 问题了

现在,这给我留下了一个更大的问题;我有超过200个需要打开的proc脚本,更改编码并使用新编码保存。

任何PowerShell专家都可以通过一个快速脚本将文件夹中每个文件的编码更改为Unicode Codepage 1200吗?会帮我一个忙,同时也节省时间。

+1

OSQL是真的真的老了 - 你应该尝试使用'sqlcmd'代替,这是更近,可能会更好地处理编码 – 2013-04-29 11:21:40

+0

有效不够评论。我可以向构建团队提出建议,但这不在我的职权范围内。 – 2013-04-29 11:26:13

回答

1

最后,我采用的方法记录在这里

Save all files in Visual Studio project as UTF-8

但不是UTF8;我指定了Unicode。

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

我正在使用记事本++为我的脚本,并选择编码ANSII或UTF 8没有BOM为我工作。 – user2983931 2015-01-13 10:09:34