4

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

osql.exe -i "path\to\script" -U "user" -P "Password" -S "Location of sqlserver" -d "Database name" -n -b

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

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

4

2 回答 2

5

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

更新

更正:正如评论中链接的文章所解释的,osql 可以解析编码为 UTF-16 (Unicode 1200) 或 'ANSI' (Windows-1252) 的文本文件,但它不能解析 UTF-8 编码的文件。

于 2012-08-29T19:45:31.600 回答
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
于 2012-08-29T20:07:34.743 回答