使用SQLCMD运行SQL文件时出现“语法不正确...”错误

时间:2015-02-06 09:36:46

标签: sql-server sqlcmd

我在MSDN上找到了这个命令。但它会引发语法错误。 有没有我错过的关键字?我已经阅读了很多论坛,但无法找到解决方案。我还访问了MSDN的指南。但是没有发生。

 sqlcmd -S SERVER\SQL2008R2 -i sqlfile.sql

Screenshot of SQLCMD error

3 个答案:

答案 0 :(得分:2)

您需要在Command Prompt而非sqlcmd

进行此操作

sqlcmd -S SERVER\SQL2008R2 -U UserName -P Password -i sqlfile.sql

即。 C:\>sqlcmd -S SERVER\SQL2008R2 -U UserName -P Password -i sqlfile.sql

答案 1 :(得分:0)

您的sqlcmd看起来不错。

错误消息与sqlfile.sql中的SQL有关!

为证明这一点,请将文件内容更改为非常简单的内容,例如

SELECT 'Success!' As result

然后再次运行sqlcmd命令。

答案 2 :(得分:-1)

这可能是由SQLCMD编辑器中TSQL语句中的块注释中的单引号引起的。这可能是一个错误,因为普通的SQL编辑器不会出现问题

要确认这一点,请在SSMS中单击“新建查询”以打开SQL编辑器。 类型 :CONNECT Hostname \ SQLInstance
如果使用默认的SQLInstance,则将Hostname \ SQLInstance替换为命名实例的值,或仅替换主机名。

单击查询菜单并选择SQLCMD模式切换到SQLCMD模式。

您应该看到:您输入的CONNECT文本更改为灰色背景。

这确认您现在正在使用SQLCMD编辑器/解析器。

将以下内容粘贴到:CONNECT语句下,替换为您具有适当权限的有效数据库名称。

使用 GO

创建视图[dbo] .vw_Test AS / / / *    让我们在块注释中测试单引号的使用。 / / * / SELECT 1 + 1 AS SimpleSum; 走 打印'查看已创建的vw_Test'

现在,尝试编译视图,例如单击F5键。您将收到与此类似的错误消息。

正在连接... 消息102,级别15,状态1,过程vw_Test,第16行 “' GO'附近的语法错误。 断开与...的连接

如果您通过更改以下内容删除单引号: 我们来试试吧 至 让我们试试

..你得到一个健康的信息:

正在连接... 查看vw_Test已创建 断开与...的连接

当您使用sqlcmd运行多个外部sql文件时,您可能也会遇到同样的问题,即SSMS中的单独文件编译没有问题,但是当从sqlcmd调用时...它会抱怨。

相关问题