在sql中获取带引号的标识符问题

在sql中获取带引号的标识符问题,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正面临 选择失败,因为以下设置选项的设置不正确:“我的生产环境中存在QUOTED_IDENTIFIER”问题 同样的存储过程在较低的环境中运行良好。请帮我找出问题所在 我正在使用SQLServer2008 我还尝试了重新编译和创建存储过程。尝试 SET QUOTED_IDENTIFIER ON SET QUOTED_IDENTIFIER OFF 试一试 SET QUOTED_IDENTIFIER ON SET QUOTED_IDENTIFIER OFF 您是否在存储过程中使用动态sql

我正面临

选择失败,因为以下设置选项的设置不正确:“我的生产环境中存在QUOTED_IDENTIFIER”问题

同样的存储过程在较低的环境中运行良好。请帮我找出问题所在

我正在使用SQLServer2008

我还尝试了重新编译和创建存储过程。

尝试

SET QUOTED_IDENTIFIER ON
 SET QUOTED_IDENTIFIER OFF
试一试

SET QUOTED_IDENTIFIER ON
 SET QUOTED_IDENTIFIER OFF
您是否在存储过程中使用动态sql(以字符串形式查询,并使用sp_executesql执行查询字符串)

如果是,则在SP开始时将QUOTED IDENTIFIER设置为ON,并在结束时将其设置为off

如果否,则在开始时将QUOTED IDENTIFIER设置为OFF

是否在存储过程中使用动态sql(以字符串形式查询并使用sp_executesql执行查询字符串)

如果是,则在SP开始时将QUOTED IDENTIFIER设置为ON,并在结束时将其设置为off


如果否,则在开始时将QUOTED IDENTIFIER设置为OFF

在您的两个环境中,元数据说明了什么?具体地说,
使用
sys.sql\u modules
中的\u quoted\u identifier
列。该列将说明创建过程时QUOTED_IDENTIFIER是否处于启用状态。在两种环境中创建存储过程时,QUOTED_IDENTIFIER是否处于启用状态?如上面选择的确认?信任,但验证。在这两个环境中,它都处于打开状态。只需检查。我的下一个猜测是,您的呼叫客户端具有不同的会话设置。我认为您可以通过在过程内部设置引用的_标识符来解决这个问题。在您的两个环境中,元数据说明了什么?具体地说,
使用
sys.sql\u modules
中的\u quoted\u identifier
列。该列将说明创建过程时QUOTED_IDENTIFIER是否处于启用状态。在两种环境中创建存储过程时,QUOTED_IDENTIFIER是否处于启用状态?如上面选择的确认?信任,但验证。在这两个环境中,它都处于打开状态。只需检查。我的下一个猜测是,您的呼叫客户端具有不同的会话设置。我认为您可以通过在过程内部设置带引号的_标识符来解决这个问题。