当前位置:  数据库>其它
本页文章导读:
    ▪Error number: 20598 The row was not found at the Subscriber when applying the replicated command.      今天测试Replication遇到下面的错误:   The row was not found at the Subscriber when applying the replicatedcommand.(Source: MSSQLServer, Error number: 20598) if @@trancount > 0 rollback tran (Transaction sequence number: 0x0000004100.........
    ▪Mongo官方文档翻译 (五)      删除操作! 官方文档地址:http://docs.mongodb.org/manual/applications/delete/ 删除 在数据库的四种基本操作中,删除操作是指从MongoDB的聚集中删除文档的操作! 概述 mongo shell中的remove()方法为我.........
    ▪Mongo官方文档翻译 (四)      更新操作! 官方文档地址:http://docs.mongodb.org/manual/applications/update/ 更新 在数据库的四种基本操作中,更新操作是指那些在MongoDB聚集中修改现有记录或文档的操作。 修改操作用来修改聚.........

[1]Error number: 20598 The row was not found at the Subscriber when applying the replicated command.
    来源: 互联网  发布时间: 2013-11-07

今天测试Replication遇到下面的错误:

 

The row was not found at the Subscriber when applying the replicatedcommand.(Source: MSSQLServer, Error number: 20598)

if @@trancount > 0 rollback tran
(Transaction sequence number: 0x0000004100000162000400000000, Command ID: 1)

 

这个错误说明了当发布服务器上执行的语句在订阅服务器上执行时无法在订阅服务器找到对应的数据,所以出错。在默认情况下,发布代理遇到错误时就会停止,所以后影响后面的发布执行。

 

解决这个问题的根本原因首先要查出那些数据不同步,可以使用DATADIFF工具验证两边数据,然后同步数据(或者重新初始化)。

 

查询是哪个Article出了问题可以使用下面的语句:


USE [distribution]

 

select * from dbo . MSarticles

where article_idIN(SELECT Article_id from MSrepl_commands

where xact_seqno= 0x0000004100000162000400000000)

 

结果如下(这个例子test表数据有问题):

 

 

 

但是发现那些数据不同步可能会花比较长的时间,为了能够让发布尽快同步,我们可以跳过事务复制中的错误。对于事务复制,有两种方法可以跳过在分发过程中遇到的错误:

·        分发代理的-SkipErrors参数,可用来跳过某种类型的错误。有错误的事务将不提交,但后续的事务将提交。

·        sp_setsubscriptionxactseqno存储过程,可用来跳过一个或多个导致错误的事务。非SQL Server的订阅服务器没有此选项。

使用-SkipErrors参数,可以让代理将错误记录下来,而Agent继续运行。通常的做法是在DistributionAgent profile中使用“ Continue On Data ConsistencyErrors”。如图:

 

 

注意:代理参数更改将在下次启动代理时生效。如果代理连续运行,您必须停止并重新启动代理。

 

更多详细信息参考:SkippingErrors in Transactional Replication:http://technet.microsoft.com/en-us/library/ms151331(v=sql.105).aspx

 

作者:SmithLiu328 发表于2013-1-23 10:42:41 原文链接
阅读:52 评论:0 查看评论

    
[2]Mongo官方文档翻译 (五)
    来源: 互联网  发布时间: 2013-11-07
删除操作!
官方文档地址:http://docs.mongodb.org/manual/applications/delete/


删除


在数据库的四种基本操作中,删除操作是指从MongoDB的聚集中删除文档的操作!


概述


mongo shell中的remove()方法为我们提供了这项功能,而且在driver中也是类似的!

注意:对于下列的driver versions中,所有的写操作都要通过getlastError操作来来确定
写操作的结果:

C#, version 0.7
Java, version 2.10.0
Node.js, version 1.2
Perl, version 0.601.1
PHP, version 1.4
Python, version 2.4
Ruby, version 1.8
删除


使用remove()方法从聚集中删除一个文档,remove()方法有如下句法:

db.collection.remove( <query>,<justOne> )

SQL中类似的操作:remove()方法类似于DELETE子句,而且:
1.<query>参数类似于WHERE子句,而且:
2.<justOne>参数采用给一个boolean值而且和LIMIT 1的功能是一样的。
remove()会从聚集中删除文档,如果你没有指定,<query>参数,remove()方法会删除聚集中的全部
文档,但是不会删除聚集中的indexs(索引)!

注意:对于大量的删除操作,先将你要删除的聚集中你想保留的数据复制到一个新的集合中,然后
在要删除的文档上进行drop()操作会更高效!


通过下面的示例阐述了remove()方法的使用:

1.如果有<query>参数,remove()方法会删除所有匹配<query>参数的文档!

下面的操作删除了bios聚集中所有子文档name的first字段的值以字母G开头的文档:

db.bios.remove( {'name.first' : /^G/} )
2.如果有<query>参数,并且将<justOne>参数设置为true或1,remove()方法只会删除匹配的第一个文档!

下面的操作删除了一个文档,该文档的turing字段的值为true:
db.bios.remove( {turing:ture},1 )

3.如果没有<query>参数,remove()方法会删除聚集中的所有文档!

下面的操作删除了bios聚集中所有的文档:

db.bios.remove()

注意:remove()方法与drop()方法不是等价的!


如果要删除聚集中的全部文档,这样做会更快:直接drop掉整个聚集,这样会连同indexes一起删除,然后再
重建聚集和indexes!

Capped Collection

不能再一个Capped Collection上使用remove()方法

隔离

如果<query>参数在聚集中匹配到了多个文档,删除操作也许会与该聚集上的其他写操作交错进行。
对于一个独立的聚集,你可以使用$isolated 隔离操作符来改变上述remove()的行为,这样可以有效
的将remove()操作与其他的写操作隔离开。在<query>参数中使用$isolated :1来进行隔离:

db.bios.remove( { turing:true,$isolated:1 } )

作者:tgipfv 发表于2013-1-23 10:42:39 原文链接
阅读:54 评论:0 查看评论

    
[3]Mongo官方文档翻译 (四)
    来源: 互联网  发布时间: 2013-11-07
更新操作!
官方文档地址:http://docs.mongodb.org/manual/applications/update/


更新


在数据库的四种基本操作中,更新操作是指那些在MongoDB聚集中修改现有记录或文档的操作。

修改操作用来修改聚集中已经存在的一个或多个文档。MongoDB提供了如下的方式来进行更新操作:

1.update
2.save

注意:仔细思考MongoDB中的update操作的下列行为:
1.当更新操作是的目标文档大小超出了文档原来的大小的时候,更新操作会
在磁盘上重新迁移文档,并且会影响到字段的顺序,这依赖于更新操作的类型!
2.对于如下的驱动版本,所有的写操作都会发出一个getLastError命令,来确认
写操作的结果!
C#, version 0.7
Java, version 2.10.0
Node.js, version 1.2
Perl, version 0.601.1
PHP, version 1.4
Python, version 2.4
Ruby, version 1.8

更新
update()方法是用来修改MongoDB聚集中文档的基础方法。默认情况下,update()方法更新一个文档,
如果使用了multi 操作,update()方法会更新聚集中所有符合query标准的文档。update()方法既可以
用新文档替换现有的文档,也可以对现有文档的指定字段进行修改。

update()方法有如下句法:

db.collection.update( <query>,<update>,<options> )

SQL中类似的操作:update()方法类似于SQL 中的UPDATE子句,并且:
1.<query>参数类似于WHERE子句,并且:
2.<update>参数类似于SET子句。
默认的update()方法更新一条文档类似于SQL中带有LIMIT 1子句的UPDATE。
带有multi操作的update方法类似于SQL中没有LIMIT限制的UPDATE子句!

通过下面的示例来思考update()方法的使用:
1.如果<update>参数只包含更新操作如:$set操作符,update()方法会更新类似的字段,如果要
更新子文档中的字段可以通过.操作符。

下面的操作查询了bios聚集的所有文档中_id字段等于1的文档的子文档name中maddle字段值为
Warner并且在awards字段中添加一个新元素。

db.bios.update(
  { _id: 1 },
  {
    $set: { 'name.middle': 'Warner' },
    $push: { awards: { award: 'IBM Fellow', year: 1963, by: 'IBM' } }
  }
)

2.如果<update>参数包含$unset操作,update()方法会将其中包含的字段从文档中移除。

下面的操作查询了bios聚集的文档中第一个_id字段等于3的文档,并且移除例如该文档的
birth字段:

db.bios.update(
  { _id: 3 },
  { $unset: { birth: 1 } }
)

3.如果<update>参数包含的字段并不存在于当前文档中,update()会把这些字段添加到当前文档
中。

下面的操作查询了bios聚集的文档中第一个拥有_id等于3的文档,而且在该文档的添加了mnranch字段以及子文档name中
添加了一个aka的字段:

db.bios.update(
  { _id: 3 },
  { $set: {
            mbranch: 'Navy',
            'name.aka': 'Amazing Grace'
          }
  }
)

4.如果<update>参数只包含字段和值的pairs,update()方法会利用<update>参数中的文档对象替换当前文档中
除了_id字段以外的全部字段。

下面的操作查询了bios聚集中第一个name字段等于{ first: 'John', last: 'McCarthy' } 的文档,并且利用
<update>中的文档替换了该文档除_id字段之外的所有字段:

db.bios.update(
  { name: { first: 'John', last: 'McCarthy' } },
  { name: { first: 'Ken', last: 'Iverson' },
    born: new Date('Dec 17, 1941'),
    died: new Date('Oct 19, 2004'),
    contribs: [ 'APL', 'J' ],
    awards: [
              { award: 'Turing Award',
                year: 1979,
                by: 'ACM' },
              { award: 'Harry H. Goode Memorial Award',
                year: 1975,
                by: 'IEEE Computer Society' },
              { award: 'IBM Fellow',
                year: 1970,
                by: 'IBM' }
    ]
  }
)
5.如果update操作要求更新一个数组字段中的元素:
1.update()方法会通过调用该元素的下表于.操作符来进行更新。
MongoDB中的数组下表是从0开始的!
2.下面的操作将bios聚集中_id字段为1的文档的contribs数组字段的第二个元素进行了更新:

db.bios.update(
  { _id: 1 },
  { $set: { 'contribs.1': 'ALGOL 58' } }
)
3.update()方法可以在目标数组字段的下标未知的情况下通过$操作符来更新。数组字段必须必须出现在quer参数中,
以便于update()方法决定对那个数组元素进行更新.

下面的操作将更新bios聚集中_id字段等于3的文档的contribs数组字段中包含“complier“的字段,如果找到,update()
方法会将第
    
最新技术文章:
▪gc buffer busy/gcs log flush sync与log file sync    ▪让你的PL/SQL更好用    ▪ADO.NET中的非脱机数据库查询
▪参数job_queue_processes与Oracle jobs    ▪11gR2游标共享新特性带来的一些问题以及_cursor...    ▪_library_cache_advice和latch:shared pool、latch:shared poo...
▪SQL: Date Utility    ▪DB2 分区表增加分区    ▪DB2第一步 — 创建表
▪oracle 数据库    ▪插入10万条记录测试    ▪rebuild index VS. rebuild index online
▪如何处理undo tablespace 表空间太大的问题    ▪ado执行存储过程中包含结果集获取输出参数为...    ▪oracle函数的demo
▪Entity Framework 学习建议及自学资源    ▪存储过程的编写    ▪Linux/Unix shell 自动发送AWR report(二)
▪第二章 Oracle恢复内部原理(基础数据结构)    ▪Redis源码学习之【Tcp Socket封装】    ▪Java Jdbc减少与Oracle之间交互提升批量处理性能...
▪南大通用GBase8a Vs Oracle11g 单机测试亲测    ▪oracle 中行列转换    ▪rhel下安装oracle10g+asm---测试环境搭建
▪Redis系列-主从复制配置    ▪MySQL索引与查询优化    ▪INDEX受到NULL值的影响
▪测试人员的SQL语言 系列    ▪SQL数据库基本语句    ▪MySQL Replication常见错误整理[持续更新...]
▪eclipse下建立esper的demo    ▪把oracle rac 转化为单机数据库    ▪Redis系列-存储篇sorted set主要操作函数小结
▪基本的SQL*Plus报表和命令    ▪druid简单教程    ▪11g调度--scheduler使用
▪EF基础一    ▪db2存储过程中循环语句while do的continue有没有...    ▪oracle 创建DBLINK
▪DB2数据库备份还原    ▪Warning: prerequisite DBD::mysql 1 not found错误解决方...    ▪innotop性能监视mysql,innodb工具
▪测试人员的SQL语言 系列    ▪SQL数据库基本语句    ▪MySQL Replication常见错误整理[持续更新...] iis7站长之家
▪Oracle 11g AWR 系列七:Active Session History (ASH) 报...    ▪Oracle 11G新特性(共36个)    ▪父子节点问题
▪OEM简介及按钮乱码问题    ▪NoSql之MongoDB的常用类管理    ▪ORA-39700: database must be opened with UPGRADE option
▪node.js 访问redis数据库,pub/sub    ▪使用DBMS_REDEFINITION在线重定义分区表    ▪SQL Developer 使用问题与解决方法汇总
▪oralce 11g dataguard 概念    ▪ORA-30004 错误处理    ▪oracle分组函数rollup,cube
▪Sql Developer 使用问题与解决方法汇总    ▪Configure Oracle Dataguard Primary-ASM to Physical-ASM    ▪Oracle Data Guard 理论知识
▪Control File 恢复    ▪Oracle数据文件收缩    ▪Oracle 11g AWR 系列五:如何生成 AWR 报告?
▪Wireshark数据包分析实战(第2版)    ▪MySql用户权限控制    ▪db2和oracle查询序列区别
▪更新blob字段的存储过程    ▪MySQLReport分析报告三    ▪DB2中的序列
▪Oracle中DBMS_RANDOM.STRING 的用法    ▪SQL SERVER无法安装成功,sqlstp.log文件提示[未发...    ▪Data Guard 部署物理备库的 10 大注意事项
▪万能数据库查询分析器使用技巧之(九)    ▪SQL 自定义Split函数    ▪视图 v$sql,v$sqlarea,$sqltext,v$sqltext_with_newlines 的...
▪Data Guard Standby_archive_dest 和 Log_archive_dest_n 的...    ▪机房收费系统数据库设计(一)    ▪利用putty的SSH tunnel连接Oracle
▪DBCA建库偶遇ORA-27125    ▪使用PowerPivot建立简单的分析模型    ▪Linux/Unix shell 自动发送AWR report
▪写入到blob字段的存储过程    ▪关于JDBC中ResultSet接口的一点细节探究    ▪Data Guard 配置 Standby Redo Log
▪linux下redis的安装    ▪windows下redis的安装    ▪手动创建数据库步骤(简单翻译官方文档)
▪Ubuntu安装Mongodb    ▪SQL CLR应用    ▪redis的配置文件参数--详细说明
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3