在TQSQL脚本中使用双引号在SQLCMD中失败,但在SSMO中失败

时间:2010-10-29 16:46:53

标签: sql-server tsql sqlcmd

通过sqlcmd执行以下脚本失败。但是,通过ssmo或SQL Server Management Studio执行它。

sqlcmd -S . -d test -i input.sql

input.sql:

CREATE FUNCTION test()  
RETURNS  @t TABLE ("ID" INT)  
AS  
BEGIN  
 RETURN  
END  

即使我将SQL Server Management Studio置于sqlcmd模式,它仍然会失败。这是一个问题,因为我们使用SSMS测试脚本,但使用SQLCMD进行部署。因此,我们只发现当我们尝试部署时,我们的代码不起作用。

为什么sqlcmd的行为如此?有没有办法把它关掉?

2 个答案:

答案 0 :(得分:7)

如果您确实需要使用双引号来分隔脚本中的标识符,则需要使用-Ienable开关在SQLCMD上设置quoted_identifier选项。默认情况下,它在SQLCMD中为OFF,但在SSMS中默认为ON,这就是您的测试在SSMS中工作的原因。

详细了解QUOTED_IDENTIFIER here

答案 1 :(得分:0)

使用方括号:[ID]