在哪个网站去租地方做收废站,海外酒店网站建设,进出成都最新通知,网站搜索优化方法在服务器A数据库TEST新建了一个本地发布#xff08;Local Publications#xff09;RPL_GES_MIS_TEST,在服务器B数据库RPL_TEST上创建了一个本地订阅#xff08;Local Subscriptions#xff09;#xff0c;它订阅了了这个发布RPL_GES_MIS_TEST.如下截图所示#xff0c;本地… 在服务器A数据库TEST新建了一个本地发布Local PublicationsRPL_GES_MIS_TEST,在服务器B数据库RPL_TEST上创建了一个本地订阅Local Subscriptions它订阅了了这个发布RPL_GES_MIS_TEST.如下截图所示本地发布只有DB_OBJECTS 、Location两个表 假设现在有一个需求我们需要同步一个视图V_DB_OBJECTS(当然实际情况应该比这个复杂有可能视图是多个表关联测试场景我们先简化一下)视图代码如下 CREATE VIEW V_DB_OBJECTSAS SELECT * FROM DB_OBJECTS WHERE type !S; 我们右键单击RPL_GES_MIS_TEST的属性在Articles里面添加了该视图 此时我们使用sp_helpsubscription查看订阅的特定的发布、项目、订阅服务器或订阅集关联的订阅信息。就会发现视图V_DB_OJBECTS的subscription status为1表示订阅服务器正在请求数据但尚未同步。 此时你右键单击对应的本地发布RPL_GES_MIS_TEST选择“View Snapshopt Agent Status如下所示你会看到它提示快照生成了2个项目意味着其实这个视图不在快照里面。 此时你点击开始重新生成快照你会发现下面信息。快照重新初始化了3个项目。 那么我们有没有办法在发布订阅里面只同步一个新的视图而不用初始化整个快照吗 答案是有其实方法很简单具体可以参考我这篇文章SQL SERVER Transactional Replication中添加新表如何不初始化整个快照 。此处不做展开分析 CREATE VIEW V_DB_OBJECTS_2AS SELECT * FROM DB_OBJECTS WHERE type !S USE TEST;GO EXEC sp_changepublicationpublication RPL_GES_MIS_TEST,property allow_anonymous ,value falseGOEXEC sp_changepublicationpublication RPL_GES_MIS_TEST,property immediate_sync ,value falseGO 执行上面脚本后我们在发布里面的项目Articles里面添加视图V_DB_OBJECTS_2然后我们在View Snapshot Agent Status窗口单击“Start按钮你会发现快照只生成了这个视图。如下所示 另外可能有同学有疑问如果我的视图已经通过Replication同步了那么我修改视图有没有影响会不会也同步过去呢 如下所示修改V_DB_OBJECTS_2 你会发现修改过后的视图很快就同步到订阅服务的数据库上但是要注意如果选项”Replicate schema changes为False那么此时对视图的修改是不会同步过去 另外需要注意对视图的修改仅仅限制在视图的引用对象也在复制Replication当中如果引用了一个不在复制Replication的项目那么此时就会有问题了。其实不光是修改已经同步的视图其实同步一张新的视图如果视图引用的项目对象不在发布订阅Replication当中也会有问题它会报如下错误 Unable to replicate a view or function because the referenced objects or columns are not present on the Subscriber. 还有一种情况就是视图所引用的对象都在发布订阅当中但是视图跨越了多个数据库那么是否也有问题呢 如下所示视图引用了TEST数据库的表DB_OBJECTS和TTT数据库的表mmFrameModel 而且TTT数据库的表mmFrameModel也同步到了订阅数据库RPL_DB_TEST当中但是此时同步依然会有问题 CREATE VIEW V_TEST2AS SELECT name AS NAME FROM DB_OBJECTS UNION ALL SELECT Machine_Model AS NAME FROM TTT.dbO.mmFrameModel; 有一个替换方案就是不同步视图而是在同步了视图引用的对象后在订阅的数据库上也创建同样逻辑的视图。只是这个替换方案有点麻烦的是在修改了发布数据库上的视图后一定要记得也同时手动修改订阅数据库的视图 转载于:https://www.cnblogs.com/kerrycode/p/5294723.html