Sql server 数据上带有高级筛选器的SQL复制

Sql server 数据上带有高级筛选器的SQL复制,sql-server,database,filter,database-replication,Sql Server,Database,Filter,Database Replication,我想将本地内部数据库(publisher)复制到公共数据库(subscriber),但有一些限制:不应该将内部数据库中的所有行/列/数据复制/推送到公共数据库。最重要的是,必须过滤某些个人用户数据(必须将其排除在公共数据库中) 技术 Microsoft SQL Server 2014 示例表人物 内部数据库(发布服务器)上的源表: 1。过滤器:社会号码 根本不应复制列SOCIALNR。这可以通过在表上使用列过滤器来实现。工作 公用数据库(订阅服务器)上的目标表: 2。过滤器:如果是公共的人

我想将本地内部数据库(publisher)复制到公共数据库(subscriber),但有一些限制:不应该将内部数据库中的所有行/列/数据复制/推送到公共数据库。最重要的是,必须过滤某些个人用户数据(必须将其排除在公共数据库中)

技术

  • Microsoft SQL Server 2014
示例表人物

内部数据库(发布服务器)上的源表:

1。过滤器:社会号码

根本不应复制列SOCIALNR。这可以通过在表上使用列过滤器来实现。工作

公用数据库(订阅服务器)上的目标表:

2。过滤器:如果是公共的人

仅当字段为_PUBLIC并设置为true时,才应复制人员。如果不是,则此人不应公开,因此不应复制其所有数据。这可以通过在表上使用行过滤器来实现。工作

公用数据库(订阅服务器)上的目标表:

3。过滤器:如果为公共状态,则为公共状态

现在这个问题的特点和原因是:一个人的婚姻状况只应该被复制,如果标志MARTURY_status_PUBLIC设置为true。如果标志为false,则状态为null或空的值或其他值。无论标志是什么,都应复制所有其他人员数据

公用数据库(订阅服务器)上的目标表:


有可能满足这个要求吗?

我想我通过使用Schemabile索引视图找到了解决问题的方法。此视图将作为表复制到订阅服务器

对于上述示例,需要执行以下步骤:

  • 从PERSON表创建名为REPLICATION\u PERSON的视图
  • 将视图属性“bindtoschema”设置为true,并使用表PERSON中的ID作为唯一的聚集索引
  • 使用SELECT IF语句将字段设置为null

    选择…,(如果军事状态公共=1,则军事状态为空结束)

  • 通过输入名称(等于table:PERSON)将视图添加到“要发布的对象”列表中,并将标志“CreateSchemasatSubscriber”设置为true

  • 在订阅服务器上,视图将生成为表。如果要使用其他列/行过滤器,必须使用“WHERE”-语句将它们放入视图中

    另见:

    ID | NAME         | IS_PUBLIC | SOCIALNR | MARITAL_STATUS | MARITAL_STATUS_PUBLIC 
    ---+--------------+-----------+----------+----------------+---------------------
    0  | Hans Muster  | 1         | 1234556  | married        | 1
    2  | John Doe     | 1         | 5432167  | single         | 0
    9  | Ingrid Meyer | 0         | 6789989  | single         | 0
    
    ID | NAME         | IS_PUBLIC | MARITAL_STATUS | MARITAL_STATUS_PUBLIC 
    ---+--------------+-----------+----------------+---------------------
    0  | Hans Muster  | 1         | married        | 1
    2  | John Doe     | 1         | single         | 0
    9  | Ingrid Meyer | 0         | single         | 0
    
    ID | NAME         | IS_PUBLIC | MARITAL_STATUS | MARITAL_STATUS_PUBLIC 
    ---+--------------+-----------+----------------+---------------------
    0  | Hans Muster  | 1         | married        | 1
    2  | John Doe     | 1         | single         | 0
    
    ID | NAME         | IS_PUBLIC | MARITAL_STATUS | MARITAL_STATUS_PUBLIC 
    ---+--------------+-----------+----------------+---------------------
    0  | Hans Muster  | 1         | married        | 1
    2  | John Doe     | 1         | NULL           | 0