gpt4 book ai didi

sql-server - 临时存储过程是否使用全局临时表?

转载 作者:行者123 更新时间:2023-12-03 00:14:19 24 4
gpt4 key购买 nike

我正在尝试解决尝试插入/追加到 Azure SQL 数据库时遇到的错误。

我收到的错误:

Error: Write Data In-DB (353): Error running PreSQL on "NoTable": Microsoft OLE DB Provider for SQL Server: An explicit value for the identity column in table 'CHART' can only be specified when a column list is used and IDENTITY_INSERT is ON.\42000 = 8101

我用来执行插入的工具是 Alteryx 10.0 ,一个出色的数据混合和高级分析工具,特别是“在数据库中写入数据”工具。

自周六早上以来,我一直在试图解决这个问题,但没有成功。今天晚上,我决定检查 OLE 连接字符串,看看它是否为我提供了任何线索。我在连接字符串中发现了使用过程准备参数。文档表明该参数指示如何创建和释放临时存储过程。有两种可能的设置:

  1. 准备命令时会创建临时存储过程。释放 session 时,所有临时存储过程都将被删除。

  2. 准备命令时会创建临时存储过程。当命令未准备好、指定新命令或释​​放对该命令的所有应用程序引用时,该过程将被删除。

问题 1:临时存储过程是否依赖全局临时表?如果是这样,这可能是我的错误的原因,因为 Azure SQL 数据库不支持全局临时变量?

问题 2:使用过程准备参数是可选的吗?如果这实际上是我遇到的问题,那么希望我可以从连接字符串中删除此参数并避免创建全局临时表。

编辑:尽管错误消息表明我正在尝试插入到身份列中,但我没有。我相信指定“No Table”的错误消息的开头提示系统正在寻找 global temporary table that is not supported by Azure SQL

预先感谢您的输入。

最佳答案

回答

An explicit value for the identity column in table 'CHART' can only be specified when a column list is used and IDENTITY_INSERT is ON.

该错误消息意味着您正在尝试将INSERT数据插入CHART表中的IDENTITY列。它还提出了一个解决方案。包括列列表并打开标识插入。你可以这样做:

SET IDENTITY_INSERT CHART ON;

INSERT CHART(column1, column2)
VALUES (value1, value2);

SET IDENTITY_INSERT CHART OFF;

或者,您也可以不尝试插入标识值并将其留给 SQL Server。 IDENTITY 列是 SQL Server 自动计算的值。如果我们想手动设置它,我们需要明确这一点,如果我们不想手动设置它,那么我们只是不在 VALUES 列表中包含值。

另请参阅

IDENTITY (Property)

SET IDENTITY_INSERT

关于sql-server - 临时存储过程是否使用全局临时表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32575329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com