我试图为我的这种格式的软件运行更新脚本:
OSQL.EXE -i “路径\为\脚本” -U “用户” -P “密码” -S “位置SQLSERVER的” -d “数据库名称” -n -b
大多数脚本都以相同的格式,并在全力以赴结束。 他们中的很多运行得很好,但所有的时间随机脚本返回一个错误,并且将无法运行。 错误是“附近有语法错误‘∩’。第1行的脚本可能是因为只是一个INSERT一样简单,但它始终是这个错误。我似乎无法在网上找到任何东西,已经能够帮助我。任何人都可以提供任何见解?
该脚本手动运行就好了。 另外一些有趣的事情是,如果我创建一个新的文本文档,并粘贴在新文件中的脚本,并将其更改为.SQL并运行该文件,然后它工作得很好。 我只是做了所有的“破”的脚本,但它继续发生新的和将发生在那些改变也说不定。
最有可能的,因为该文件被编码为Unicode,而不是UTF-8。 您可以在记事本中检查了这一点++等免费的实用工具之一。 尝试将其转换为UTF-8,看有没有什么帮助。
UPDATE
更正:由于在评论链接的文章解释,OSQL可以解析编码为UTF-16(Unicode的1200)或“ANSI”(视窗1252)的文本文件,但它不能解析UTF-8编码的文件。
这听起来像一个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