问题标签 [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.
sql-server - 如何替换表列 SQL 2008 中的 IDENTITY ID?
我不小心从表中删除了我的记录。该记录有一个键列,该键列与数据库中的其他一些表相关联。我已经恢复了数据库,并且可以访问之前删除的记录。当我尝试使用 INSERT SELECT 方法时,我收到消息'An explicit value for the identity column in table 'IEP.dbo.IEP' can only be specified when a column list is used and IDENTITY_INSERT is ON.'
然后我在所有列上运行插入,但在我的表设计中,身份设置为“是”的第一列。现在我想知道有没有办法更新密钥?新记录自动生成新密钥,我想将该值更新为旧密钥。这是示例:
旧/当前表:
临时/备份表:
用临时列 i_key 值更新当前列 i_key 值的最佳解决方案是什么?如果有人可以提供帮助,请告诉我。谢谢!
sql-server - SQL Server IDENTITY_INSERT 找不到对象“TableName”
当我在 java netbeans 中运行时:
我得到错误:
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“TableName”中插入标识列的显式值
如果我运行:
我收到此错误:
找不到对象“TableName”,因为它不存在或您没有权限。
为什么会发生这种情况,我该如何解决?
sql-server - 插入时生成身份插入错误(不在代码中)
我正在尝试使用以下代码构建表 - 创建表时没有错误,我可以看到结构,它显示IDENTITY_INSERT
设置为ON
.
尝试插入数据时出现以下错误(通过应用程序而不是通过代码)。
最后一个错误:数据库更新失败:
dataobject=sqlca.sqlerrtext=SQLSTATE = 42000当 IDENTITY_INSERT 设置为 OFF 时
,SQL Server 的 Microsoft OLE DB 提供程序
无法在表 'lt_percent_cs' 中插入标识列的显式值。没有对数据库进行任何更改。
插入 lt_percent_cs (id_key, customer_no, season, percent)
VALUES (54891, 80055514, 2017, 50)sqlca.sqldbcode=544
sqlsyntax:
INSERT INTO lt_percent_cs (id_key, customer_no, season, percent) VALUES (54891, 80055514, 2017, 50)行:1 [nvo_ds_database.uf_update.34 (544)]
我应该在 SQL Server Management Studio 中运行脚本时添加,它可以正常工作并且不会产生错误。
有什么想法吗?
sql-server - 通过 MVS 2015 ODBC IDENTITY_INSERT 创建 SSIS 包
今天,我试图弄清楚如何通过我正在使用 MVS 2015(使用 SSDT 14.0.61709.290)构建的 SSIS 包将标识列插入 Microsoft SQL 2016 数据库的行。我正在从另一个数据源中提取数据(可以正常工作),并且我正在将行插入到先前在目标 SQL 服务器上定义的目标表中,如下所示:
当我将值从旧数据源移动到新数据源时,出现错误:
[MSQL Deal [70]] 错误:发生打开数据库连接 (ODBC) 错误。状态:'23000'。本机错误代码:544。 [Microsoft][SQL Server Native Client 11.0][SQL Server]当 IDENTITY_INSERT 设置为 OFF 时,无法在表“TableName”中插入标识列的显式值。
搜索时出现大量论坛和结果,表明在修改目标的列映射页面时应该有一个允许身份插入的复选框。此选项不存在,并且 MVS/SSDT 2015/2017 中的“高级编辑器”界面仅具有列映射,没有用于处理标识列插入的选项。
此外,我还尝试在我的控制流中添加一个步骤来打开身份插入,但由于某种原因,在此级别启用 IDENTITY_INSERT 不起作用,并且我的包在所有插入尝试中仍然失败。
现在我将完全诚实,我完全意识到我有其他选择来让它工作 - 但请记住,我正在构建开发测试和生产数据库,我试图保持脚本化和自动化以及白痴证明它进一步走向部署。我不想引入一个中间步骤,迫使我们的一个 DBA 等待第一个 SSIS 包完成,运行一个 SQL 查询,该查询将为特定表启用身份插入,运行下一个包,然后运行查询以禁用身份插入。我必须这样做很多次......
SSIS 2015(我尝试使用 MVS/SSDT 2017)是否完全放弃了对身份插入的支持?我是否必须对我的 DSN 使用不同的接口才能使其正常工作(ODBC?)?
这仍然是一个选项,但它隐藏在某个地方真的非常非常好?
entity-framework - 更新实体时无法为标识列插入显式值
我正在使用 ASP.NET 样板模板。
我想更新Details
包含多个项目的表。如果一个条目存在,它必须更新,否则必须添加一个新条目,并且必须删除表中与Master
主键相关的所有其他条目。Details
但它显示一个错误:
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“SemesterDetails”中插入标识列的显式值
这是Master
表格:
这是Details
表,由StudentSemesterCore
类表示:
这是Update
代码:
SaveChanges
调用时显示错误。实际上,如果存在相同的值,我想更新详细信息,否则添加新的并且StudentDegreeID
必须删除与之相关的所有其他数据。
sql-server - SQL Server 从 XML 路径中删除尾随逗号
我有以下代码可以在我的给定表中提取我的列的名称:
我想把它放到我当前的查询中:
我自己尝试过以下操作:
但是,我得到了以下错误:
消息 156,级别 15,状态 1,第 4 行
关键字“SELECT”附近的语法不正确。消息 102,级别 15,状态 1,第 8 行
')' 附近的语法不正确。消息 102,级别 15,状态 1,第 16 行
',' 附近的语法不正确。
不确定该错误是由添加到 XML 路径输出中的额外逗号调用还是由其他原因调用?
我的完整存储过程如下所示:
上面的 SP 是我目前收到此错误的原因:
只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表 'maintReq' 中的标识列指定显式值。
感谢@Pரதீப்,这是最终的工作查询代码:
sql-server - 会话关闭时 identity_insert 是否重置为 OFF?
SQL 服务器问题。虽然我的测试说“是”,但我宁愿从有经验的人那里听到。
当我使用 SET IDENTITY_INSERT some_table ON 时,我想知道我可以安全地关闭我的会话,而不必担心忘记将其设置为关闭,从而给其他用户带来麻烦。
sql - 使用起始值设置 Identity_insert ON
我在 SQL Server 上工作,我想将一些行从 tableA 复制到包含 MyColumnID 的 tableB。
因此,在我想要的新表上(在复制之前)将 Identity_insert tableB 设置为 ON,最后使用 IDENTITY(500,1) 将 Identity_insert tableB 设置为 OFF。
下面是我的代码:
我知道最后一行是不正确的。有人能帮我吗?
sql-server - EF6 数据库中的身份插入优先
我正在尝试将旧数据库中的数据转换为新数据库,其中主键的值很重要。
我目前拥有的代码是这样的(实际表名替换为“TableName”):
我确实为主键明确分配了一个值。
但我得到了例外:
“当 IDENTITY_INSERT 设置为 ON 或复制用户插入 NOT FOR REPLICATION 标识列时,必须为表 'TableName' 中的标识列指定显式值。”
我尝试在 foreach 循环中进行实际的数据库调用(IDENTITY_INSERT 和 SaveChanges()),但问题仍然存在。
我能够为这个问题找到的答案都是代码优先的。
c# - 使用 EF 代码优先迁移仅为初始数据插入身份
我目前正在尝试将一些本地数据引入使用 EF Code-First 迁移的数据库中。这些数据已经具有唯一的 id,因此最初应该按原样插入第一组数据。
现在我正在考虑首先设置'DatabaseGeneratedOption.None',将数据集添加到数据库中,计算最后使用的ID,使用T-SQL命令'dbcc checkident(tablename,reseed,[NEW AUTO ID] )',然后在将 GeneratedOption 重置为 'DatabaseGeneratedOption.Identity' 时添加另一个迁移。
这是正确的方法和/或什至可能,还是我走错了路?
任何线索将不胜感激
最好的问候
编辑 - 迈克尔斯回答
试图实现 Michals 的答案,但 ID 仍然由数据库“生成”,并且我的显式值被忽略。也许这是我插入值的方式:
解决方案 /w Michals 答案
好吧,我尽我最大的努力以不同的方式实现 Michals 的答案,最后得出了一个(非常奇怪的)解决方案。
首先,我有我的 DBContext 类和一个名为 DBContextEditor 的衍生类。所做的只是在我更改所有“身份”属性的地方覆盖 OnModelCreating。
将此类与其他帖子(下面的来源)中的其他一些技术结合使用,最终给了我想要的结果。
最后我有这样的事情:
我还尝试实现对 MyContext 类的覆盖,该类以错误结尾说“烘焙模型不同......”这也将 ID 属性更改为不再是“身份”。
最后,这种方法让我可以控制添加身份数据,同时保持生成身份值的可能性。此外,任何进一步的迁移都不会更改模型,也不会删除“身份”标志,而 [DatabaseGeneratedOption] 确实删除了它。也可以并建议将其存储在 using 中,如下所示:
仅供参考伪代码中的模型
相关帖子和来源