SET QUOTED IDENTIFIER should be ON when inserting a record

前端 未结 4 1610
一整个雨季
一整个雨季 2020-12-06 12:00

I am stuck in a rather strange problem with SQL Server 2005, which throws

\"SET QUOTED IDENTIFIER should be on when inserting record\"

4条回答
  •  爱一瞬间的悲伤
    2020-12-06 12:20

    Script the stored proc, ensure/change SET options, run the ALTER PROC to ensure SET QUOTED IDENTIFIER ON is set.

    Why?

    The setting of "SET QUOTED IDENTIFIER" is defined at creation time for stored procs and is always "ON" for tables. Source, BOL.

    When a table is created, the QUOTED IDENTIFIER option is always stored as ON in the table's metadata even if the option is set to OFF when the table is created.

    When a stored procedure is created, the SET QUOTED_IDENTIFIER and SET ANSI_NULLS settings are captured and used for subsequent invocations of that stored procedure.

    The default for connections can be defined at the server level (sp_configure 'user options') or database level (ALTER DATABASE). For SSMS, it's under "Tools..Options.. Query Execution..SQL Server..ANSI". It's also the default for client libraries too (except DB-LIb).

    Now, it you open an SSMS Query Window and start typing "CREATE PROC.." then it uses SSMS settings when you run the code.

    And SET QUOTED IDENTIFIER can not be set at run time inside the stored proc. Show me the a reference before you disagree... From the MS BOL link above:

    When executed inside a stored procedure, the setting of SET QUOTED_IDENTIFIER is not changed.

    You have to work hard to run any code with this OFF... so the most likely fix is to ALTER or re-create the stored proc.

提交回复
热议问题