通过osql.exe运行脚本的问题

时间:2012-08-29 19:40:36

标签: sql osql

我尝试以这种格式运行我的软件的更新脚本:

osql.exe -i“path \ to \ script”-U“user”-P“Password”-S“sqlserver的位置”-d“数据库名称”-n -b < / p>

大多数脚本采用相同的格式,并且都以GO结尾。很多它们运行得很好,但随机脚本一直返回错误而不会运行。错误是“第1行'∩'附近的语法不正确。脚本可能就像INSERT一样简单,但总是出现这个错误。我似乎无法在网上找到任何能够帮助我的东西。任何人都可以提供任何见解吗?

脚本可以手动运行。另外一件有趣的事情是,如果我创建一个新的文本文档并将脚本粘贴到新文件中并将其更改为.sql并运行该文件,那么它的工作正常。我只是为所有“破碎”的脚本执行此操作,但它会继续发生在新的脚本上,最终会发生在已更改的脚本上。

2 个答案:

答案 0 :(得分:5)

最有可能的原因是该文件被编码为Unicode而不是UTF-8。您可以在Notepad ++中查看其他免费实用程序。尝试将其转换为UTF-8,看看是否有帮助。

<强>更新

更正:正如评论中链接的文章所解释的那样,osql可以解析编码为UTF-16(Unicode 1200)或&#39; ANSI&#39;的文本文件。 (Windows-1252),但它无法解析UTF-8编码的文件。

答案 1 :(得分: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