对复制禁用 CHECK 约束

您可以使用 SQL Server Management Studio 或 Transact-SQL 禁用 SQL Server 2012 中的 CHECK 约束。 也可以对复制显式禁用检查约束,这在从早期版本的 SQL Server 中发布数据时会非常有用。

注意注意

如果表是使用复制发布的,则对于复制代理执行的操作将自动禁用检查约束。 当复制代理在订阅服务器上执行插入、更新或删除操作时,将不检查约束;如果用户执行插入、更新或删除操作,则检查约束。 由于最初插入、更新或删除数据时已经在发布服务器上检查过约束,所以对于复制代理将禁用该约束。 有关详细信息,请参阅指定架构选项

本主题内容

  • 开始之前:

    安全性

  • 若要对复制禁用 CHECK 约束,请使用:

    SQL Server Management Studio

    Transact-SQL

开始之前

安全性

权限

需要对表的 ALTER 权限。

用于“返回首页”链接的箭头图标[Top]

使用 SQL Server Management Studio

对复制禁用 CHECK 约束

  1. 在**“对象资源管理器”中,展开具有要修改的 CHECK 约束的表,再展开“约束”**文件夹。

  2. 右键单击要修改的 CHECK 约束,然后单击**“修改”**。

  3. 在**“CHECK 约束”对话框中的“表设计器”,对“强制用于复制”选择“否”**值。

  4. 单击**“关闭”**。

用于“返回首页”链接的箭头图标[Top]

使用 Transact-SQL

对复制禁用 CHECK 约束

  1. 在**“对象资源管理器”**中,连接到数据库引擎实例。

  2. 在标准菜单栏上,单击**“新建查询”**。

  3. 将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。 第一个示例创建包含一个 IDENTITY 列的表和表中的一个 CHECK 约束。 然后,该示例删除该约束,并通过指定 NOT FOR REPLICATION 子句重新创建约束。

    USE AdventureWorks2012;
    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)

用于“返回首页”链接的箭头图标[Top]

请参阅

概念

指定架构选项