【问题标题】:Error using osql.exe (Sql Server 2005)使用 osql.exe 时出错 (Sql Server 2005)
【发布时间】:2010-07-27 10:51:36
【问题描述】:

我使用的是 sql server 2005 企业版,windows server 2003。

我尝试执行 osql.exe 命令,用于在我的服务器 DESSQL 中执行 sql 文件:

osql.exe -E -n-1 -i"CarpetaUno\TextFile1.sql"

我收到此错误:

Msg 102, Level 15, State 1, Server DESSQL, Line 1
Incorrect syntax near 'n'

更新:

我也试试这个,

osql.exe -E -i"CarpetaUno\TextFile1.sql"

1> 2> Msg 102, Level 15, State 1, Server DESSQL, Line 1
Incorrect syntax near 'n'

最后,我使用 SQLCMD 命令:

SQLCMD -E -b -i"CarpetaUno\TextFile1.sql"

但不能使用 osql 命令!!

我测试:

1.) 使用 -S ServerName 选项,

2.) 使用绝对路径:osql.exe -E --i C:\CarpetaUno\TextFile1.sql

3.) TextFile1.sql 内容,可以,我用SSMS测试

CREATE DATABASE PRUEBA;

DROP DATABASE PRUEBA;

但我在所有测试中都遇到同样的错误。

如果我在文件中使用 utf-8 编码会失败吗???

有什么解决办法吗?

【问题讨论】:

  • 你确定你的TextFile1.sql没有问题,你可以手动运行文件吗?
  • 我们可以看到文件TextFile1.sql的第1行
  • TextFile1.sql 内容:创建数据库 PRUEBA;
  • 你试过在-i和SQL文件之间加空格吗,像这样:osql.exe -E -i "CarpetaUno\TextFile1.sql"
  • 还添加 -e 并仔细检查输入 SQL 是否符合您的期望

标签: sql-server-2005 file osql


【解决方案1】:

我觉得你找错树了..

错误 102 是不正确的 SQL 语法,很可能来自源 SQL 文件。

更新
我想你已经回答了你自己的问题.. OSQL 接受 ANSI 和 Unicode 编码的文件,但我尝试使用 notepad++ 打开我的文件,将编码更改为 UTF-8,我得到了类似的错误。

一个快速的谷歌给了我thisthis 一些更多的信息。

底线是:使用 SQLCMD.exe

【讨论】:

  • TextFile1.sql 内容,没问题,我用SSMS测试。如果我在文件中使用 utf-8 编码会失败吗??
  • 尝试使用 sqlcmd.exe 运行它
【解决方案2】:

-n 选项删除了 1> 2> ... 行号提示,并且 afaik 没有其他标志与之配套,因此删除 -1

【讨论】:

  • 我也试试这个,osql.exe -E -i"CarpetaUno\TextFile1.sql" 一样失败。
  • 那么这听起来像是“CarpetaUno\TextFile1.sql”中的SQL的问题
  • 如果我在文件中使用utf-8编码会失败吗??
  • 是的,它不适用于 utf-8,使用 ucs2(little endn.)或 utf16(或 ansi),或者尝试 sqlcmd.exe 实用程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多