我在MSDN上找到了这个命令。但它会引发语法错误。 有没有我错过的关键字?我已经阅读了很多论坛,但无法找到解决方案。我还访问了MSDN的指南。但是没有发生。
sqlcmd -S SERVER\SQL2008R2 -i sqlfile.sql
答案 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调用时...它会抱怨。