对复制禁用 CHECK 约束
适用于: SQL Server 2016 (13.x) 及更高版本Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW)
你可以使用 SQL Server Management Studio 或 Transact-SQL 禁用 SQL Server 中的 CHECK 约束。 也可以对复制显式禁用检查约束,这在从早期版本的 SQL Server 中发布数据时会非常有用。
注意
如果表是使用复制发布的,则对于复制代理执行的操作将自动禁用检查约束。 当复制代理在订阅服务器上执行插入、更新或删除操作时,将不检查约束;如果用户执行插入、更新或删除操作,则检查约束。 由于最初插入、更新或删除数据时已经在发布服务器上检查过约束,所以对于复制代理将禁用该约束。 有关详细信息,请参阅 指定架构选项。
开始之前
安全性
权限
需要对表的 ALTER 权限。
使用 SQL Server Management Studio
对复制禁用 CHECK 约束
在 “对象资源管理器”中,展开具有要修改的 CHECK 约束的表,再展开 “约束” 文件夹。
右键单击要修改的 CHECK 约束,然后单击 “修改”。
在 “CHECK 约束” 对话框中的 “表设计器”,对 “强制用于复制” 选择 “否”值。
单击“关闭” 。
“使用 Transact-SQL”
对复制禁用 CHECK 约束
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。 第一个示例创建包含一个 IDENTITY 列的表和表中的一个 CHECK 约束。 然后,该示例删除该约束,并通过指定 NOT FOR REPLICATION 子句重新创建约束。
USE AdventureWorks2022; GO CREATE TABLE dbo.doc_exd (column_a int IDENTITY (1,1) CONSTRAINT exd_check CHECK (column_a > 1)) ALTER TABLE dbo.doc_exd DROP CONSTRAINT exd_check; GO ALTER TABLE dbo.doc_exd ADD CONSTRAINT exd_check CHECK NOT FOR REPLICATION (column_a > 1);
有关详细信息,请参阅 ALTER TABLE (Transact-SQL)。