相关疑难解决方法(0)

了解QUOTED_IDENTIFIER

我们遇到了一个问题,我们的一个存储过程抛出错误;

SELECT failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'
Run Code Online (Sandbox Code Playgroud)

我通过修改存储的proc并将引用的标识符设置为ON来修复它.问题是,我在CREATE PROCEDURE调用之前做了这个.例如;

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[InsertStuff]
Run Code Online (Sandbox Code Playgroud)

我原以为这会影响CREATE PROCEDURE语句,但不会影响该程序的执行.

我们的脚本都被部署为drop并创建脚本并通过sqlcmd运行.我刚刚在这里阅读(搜索示例:执行SQLCMD),这里 sqlcmd执行时带引号标识符off.我已经更改了我们的脚本以包含-I开关,以查看是否可以解决我们的问题.

那时我的问题是;

1)SET QUOTED_IDENTIFIER ON语句是否仅影响DDL CREATE PROCEDURE语句,还是它也影响存储过程的执行?我的快速测试表明后者.

2)由于此开关的默认设置为ON,我假设通过设置-I我的sqlcmd查询的开关将没有不利影响.对于所有意图和目的,我将假设它与复制脚本的内容然后将它们粘贴到查询管理器并执行命令相同.如果我错了,请纠正我.我们的简单部署脚本如下;

@echo off

SET dbodir=../Schema Objects/Schemas/dbo/Programmability/Stored Procedures/
SET tpmdir=../Schema Objects/Schemas/TPM/Programmability/Stored Procedures/

echo --- Starting dbo schema

for %%f in ("%dbodir%*.sql") do (echo Running %%f.... && @sqlcmd -I -U %1 -P %2 -S %3 -d %4 -i …
Run Code Online (Sandbox Code Playgroud)

sql-server settings ddl

10
推荐指数
2
解决办法
1万
查看次数

插入记录时,SET QUOTED IDENTIFIER应为ON

我陷入了SQL Server 2005的一个相当奇怪的问题,它抛出了

"插入记录时应设置SET QUOTED IDENTIFIER"

(用作SP)到特定表.这工作得很好,但随机抛出这个错误.

我已经验证了SP.我们没有在里面手动指定SET QUOTED IDENTIFIER设置,因此默认情况下它必须为ON.

有人可以澄清可能是什么问题吗?

必须使用SET QUOTED IDENTIFIER ON创建表格吗?我还没检查表脚本.

我观察到这个问题只发生在SP在日期列上执行插入或更新(modifiedAt)...示例值为'2009-08-10 06:43:59:447'..

传递的值是否有问题?

sql-server sqlcmd

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

sql-server ×2

ddl ×1

settings ×1

sqlcmd ×1