问题标签 [identity-insert]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
141 浏览

c# - 当 IDENTITY_INSERT 设置为 OFF 时,EF 无法为表“X”中的标识列插入显式值

我必须将数据从一个数据库迁移到另一个数据库。应保留密钥。我将 EF 与自动生成的.dbmx文件一起使用。我已经阅读了许多类似问题的答案并遵循了这些建议:我确实IDENTITY_INSERT在插入条目之前完全打开;在数据库图上,我将列更改StoreGeneratedPatternNoneon Id(也尝试将相应的属性添加到Id属性中)。

这是我的代码:

在 Management Studio 中执行此操作时,它工作得很好。该问题仅在使用实体框架时出现。

我可以在 SQL Server Profiler 中看到INSERT_IDENTITY执行命令并且插入 SQL 带有Id列,但似乎没有执行,这看起来很奇怪。当我复制粘贴此 SQL 查询时,它工作得很好。

0 投票
1 回答
133 浏览

sql - Can you make inserting by Id optional?

I want to be able to insert something into my table at a specific ID, so I turned IDENTITY_INSERT on for the table. However, if I just want the auto increment to handle the ID, this error appears:

"Explicit value must be specified for identity column in table 'TsiList' either when IDENTITY_INSERT is set to ON or when a replication user is inserting into a NOT FOR REPLICATION identity column."

Is there a way to make the queries

and

work at the same time?

0 投票
0 回答
81 浏览

sql-server - 如何提交 T-SQL 脚本

我是 SQL Server 的新手,正在为我的数据库尝试一些 SQL 语句。

我想使用以下语句启用身份插入:

这很好用。之后我插入了一个条目,但如果我关闭脚本,更改就会丢失。

我也试过

为所有表启用身份插入,但这也不起作用。

我的期望是我运行该脚本一次,它会一直更改数据库,但如果我尝试插入一些带有标识列的条目,它不会插入该条目。

0 投票
3 回答
280 浏览

sql-server - 在插入期间捕获 IDENTITY 列值并用作同一事务中另一列的值

在对具有IDENTITY列的表执行插入时,是否可以IDENTITY在同一事务中将该值用作另一列的值?

例如:

预期的:

我以为我可以使用SCOPE_IDENTITYor@@IDENTITY系统函数来实现这一点,但不幸的是,这不起作用,因为在执行事务时它为 NULL。

无法将值 NULL 插入列“SecondaryId”、表“@TestTable”;列不允许空值。插入失败。

我知道我可以在这个例子中使用计算列,但我很好奇我正在尝试做的事情是否可能。

0 投票
1 回答
186 浏览

sql - 为什么必须在 IDENTITY_INSERT ON 时指定列?

以下脚本无法执行

这会引发以下警告:

只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表 'dbo.MyTable' 中的标识列指定显式值。

当列是明确的时,脚本会按预期执行。

为什么必须使用列列表?

0 投票
1 回答
719 浏览

c# - 如何使用 c# 代码插入标识列

是的,我知道,有很多关于如何打开身份插入并在之后将其关闭的材料,这实际上是我想要使用的东西。但是我的问题还有更多,这就是我开始这个问题的原因。

将某些内容插入标识列的常规方法是:

我对此有2个问题:

  • 我需要使用这个“dbo”吗?我目前正在使用 VS 的 localdb,但是一旦完成,该项目将部署在真实服务器上

  • 主要问题:我想插入一个完整的对象,而不仅仅是标识列的值。该对象具有给定的 ID,在 db 中是 PK。它有一个字符串值,也必须插入。

我怎样才能做到这一点?我正在寻找类似的东西:

这是我的模型,所以你可以更好地理解这个问题:

0 投票
0 回答
421 浏览

sql - Identity_insert 设置为 OFF 错误,即使它设置为 ON

我收到一个错误

当 IDENTITY_INSERT 设置为 OFF 时,无法在表“Table1”中插入标识列的显式值

我已经使用查询设置IDENTITY_INSERT为,但我仍然收到此错误。就我而言,我试图将一个表的数据复制到另一个表中,因此将. 我已将. 我不知道为什么我会收到这个错误。ONSET IDENTITY_INSERT [Database1].[dbo].[Table1] ONIDidentity_insertON

0 投票
1 回答
57 浏览

sql-server - 使用单个语句切换插入标识

对于在场上真正懒惰的人:是否有一个语句可以IDENTITY INSERT sometable从开启切换到关闭,反之亦然?

0 投票
1 回答
752 浏览

identity-insert - SET IDENTITY_INSERT ON/OFF 范围内的 SQL Server 2019 行为变化

我们正在迁移到 SQL Server 2019 RTM 版本,并注意到我们使用SET IDENTITY_INSERTON/OFF 语句的存储过程之一失败,该过程在 SQL Server 2017 及更早版本中正常工作。

即使将兼容性级别更改为 SQL Server 2017 在 SQL Server 2019 中的工作方式也不相同。这看起来像是一个没有在任何地方记录的错误/行为更改。

任何人都遇到过类似的问题或知道这是否是已报告的问题?我尝试搜索它,但另一个报告该问题的人是 ODBC 和 SQL Server 2019 CTP 版本的组合。

我们有很多客户在 SQL Server 2017 和更早版本上运行我们产品的早期版本,我们无法更改但仍希望迁移到 SQL Server 2019 的存储过程,现在这已成为我们 SQL Server 2019 迁移的阻碍.

这是在 SQL Server 2019 中失败但在 SQL Server 2017 及之前版本中运行良好的代码片段

如何重现行为。

在 SQL Server 2019 中,我们收到此错误:

消息 544,级别 16,状态 1,过程 proc_inner,第 5 行 [批处理开始第 36 行]
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“#TMP_MESSAGE”中插入标识列的显式值。(0 行受影响)

在 SQL Server 2017 及更早版本中,相同的语句可以正常工作。

0 投票
0 回答
182 浏览

sql-server - 从 txt 批量插入。具有主键和时间戳值的文件

我有一个名为的表Address,它有一个AddressID作为主键(自动递增值),它还有一个tmsp类型为 的列TimeStamp

我创建了一个从表中删除记录的存储过程,但在删除之前,我将记录保存到.txt文件中。在将记录保存到文本文件的过程中,我将时间戳转换为一个Varbinary值。这意味着该tmsp列保存为Varbinary文本文件。

现在我创建一个新的存储过程将删除的记录插入数据库中,代码如下:

我收到以下错误:

消息 273,级别 16,状态 1,过程 CleanUp_Address,第 43 行 [批处理开始第 2 行]
无法将显式值插入时间戳列。将 INSERT 与列列表一起使用以排除时间戳列,或将 DEFAULT 插入时间戳列。

当我删除IDENTITY_INSERT它时,它会将数据作为新值插入表中,因此会AddressID被覆盖,但这不是我想要的。我需要保留AddressID.

有任何想法吗?