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

Ric*_*chB 5 t-sql sql-server sqlcmd

通过sqlcmd执行以下脚本失败.但是,通过ssmo或SQL Server Management Studio执行它可以正常工作.

sqlcmd -S . -d test -i input.sql
Run Code Online (Sandbox Code Playgroud)

input.sql:

CREATE FUNCTION test()  
RETURNS  @t TABLE ("ID" INT)  
AS  
BEGIN  
 RETURN  
END  
Run Code Online (Sandbox Code Playgroud)

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

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

Joe*_*lli 7

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

在此处阅读有关QUOTED_IDENTIFIER的更多信息.