"Incorret syntax near..." 使用 SQLCMD 运行 SQL 文件时出错
"Incorret syntax near..." error when running SQL file using SQLCMD
我在 MSDN 上找到了这个命令。但它会抛出语法错误。
有没有我遗漏的关键字?我已经阅读了很多论坛,但找不到解决方案。我还访问了 MSDN 上的指南。但什么也没发生。
sqlcmd -S SERVER\SQL2008R2 -i sqlfile.sql
你的 sqlcmd
看起来不错。
错误消息与 sqlfile.sql
中的 SQL 有关!
为了证明这一点,将文件的内容更改为非常简单的内容,例如
SELECT 'Success!' As result
然后 运行 再次执行 sqlcmd
命令。
您需要 运行 在 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
这可能是由 SQLCMD 编辑器中 TSQL 语句块注释中的单引号引起的。这可能是一个错误,因为普通 SQL Editor
不会出现此问题
要确认这一点,请在 SSMS 中单击“新建查询”以打开 SQL 编辑器。
类型
:连接Hostname\SQLInstance
将 Hostname\SQLInstance 替换为命名实例的值,或者如果您使用默认的 SQLInstance.
,则仅替换主机名
通过单击查询菜单并选择 SQLCMD 模式切换到 SQLCMD 模式。
您应该会看到您输入的 :CONNECT 文本变为灰色背景。
这确认您现在正在使用 SQLCMD editor/parser。
将以下内容粘贴到 :CONNECT 语句下方,替换为您拥有相应权限的有效数据库名称。
使用
开始
创建视图 [dbo].vw_Test AS
///*
让我们测试在块注释中使用单引号。
//*/
SELECT 1 + 1 作为简单求和;
走
打印 'View vw_Test created'
现在,尝试编译视图,例如通过单击 F5 键。您将收到与此类似的错误消息。
正在连接到...
消息 102,级别 15,状态 1,过程 vw_Test,第 16 行
'GO' 附近的语法不正确。
正在断开与 ...
的连接
如果您通过更改删除单引号:
让我们测试一下
到
让我们测试一下
..您收到一条健康信息:
正在连接到...
视图 vw_Test 已创建
正在断开与 ...
的连接
当您使用 sqlcmd 到 运行 多个外部 sql 文件时,您可能还会遇到同样的问题,即单独的文件在 SSMS 中编译没有问题,但是当从sqlcmd...它抱怨。
我在 MSDN 上找到了这个命令。但它会抛出语法错误。 有没有我遗漏的关键字?我已经阅读了很多论坛,但找不到解决方案。我还访问了 MSDN 上的指南。但什么也没发生。
sqlcmd -S SERVER\SQL2008R2 -i sqlfile.sql
你的 sqlcmd
看起来不错。
错误消息与 sqlfile.sql
中的 SQL 有关!
为了证明这一点,将文件的内容更改为非常简单的内容,例如
SELECT 'Success!' As result
然后 运行 再次执行 sqlcmd
命令。
您需要 运行 在 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
这可能是由 SQLCMD 编辑器中 TSQL 语句块注释中的单引号引起的。这可能是一个错误,因为普通 SQL Editor
不会出现此问题要确认这一点,请在 SSMS 中单击“新建查询”以打开 SQL 编辑器。
类型
:连接Hostname\SQLInstance
将 Hostname\SQLInstance 替换为命名实例的值,或者如果您使用默认的 SQLInstance.
通过单击查询菜单并选择 SQLCMD 模式切换到 SQLCMD 模式。
您应该会看到您输入的 :CONNECT 文本变为灰色背景。
这确认您现在正在使用 SQLCMD editor/parser。
将以下内容粘贴到 :CONNECT 语句下方,替换为您拥有相应权限的有效数据库名称。
使用 开始
创建视图 [dbo].vw_Test AS ///* 让我们测试在块注释中使用单引号。 //*/ SELECT 1 + 1 作为简单求和; 走 打印 'View vw_Test created'
现在,尝试编译视图,例如通过单击 F5 键。您将收到与此类似的错误消息。
正在连接到... 消息 102,级别 15,状态 1,过程 vw_Test,第 16 行 'GO' 附近的语法不正确。 正在断开与 ...
的连接如果您通过更改删除单引号: 让我们测试一下 到 让我们测试一下
..您收到一条健康信息:
正在连接到... 视图 vw_Test 已创建 正在断开与 ...
的连接当您使用 sqlcmd 到 运行 多个外部 sql 文件时,您可能还会遇到同样的问题,即单独的文件在 SSMS 中编译没有问题,但是当从sqlcmd...它抱怨。