日期:2014-05-17  浏览次数:20530 次

可更新订阅的事务复制 老是出问题,,,
开始显示 
1、 (注:越前时间越后)
正在将数据大容量复制到表“HousePresellDetail”
已将数据大容量复制到表“HousePresellDetail”中 (4051 行)
正在将数据大容量复制到表“HousePresellDetail”
已将数据大容量复制到表“HousePresellDetail”中 (3360 行)
。。。。。。。
2、(注:越前时间越后)
接着显示
正在将数据大容量复制到表“ht”
已将数据大容量复制到表“ht”中 (8426 行)
正在将数据大容量复制到表“ht”
已将数据大容量复制到表“ht”中 (6424 行)
。。。。。。
3、(注:越前时间越后)
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
已应用脚本“ht_4.dri”
已应用脚本“HousePresellDetail_3.dri”
已应用脚本“HousePresell_2.dri”
正在表“[dbo].[ht]”上创建主键索引
正在表“[dbo].[HousePresellDetail]”上创建主键索引

第一个错误提示:
尝试的命令:
if (@@microsoftversion >= 0x09000000) begin delete from MSsubscription_articlecolumns where artid = 12 and agent_id = (select id from MSsubscription_agents where update_mode > 0 and UPPER(publisher) = UPPER(N'DEVSERVER') and publisher_db = N'SG_Presell_DB' and publication = N'MDB_SG_Presell_BiDirection' ) end 
(事务序列号: 0x0000901000000033032F00000000,命令 ID: 57)

错误消息:
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。 (源: MSSQLServer,错误号: 512)
获取帮助: http://help/512

第二个错误提示:
尝试的命令:
if @@trancount > 0 rollback tran
(事务序列号: 0x0000901000000033032F00000000,命令 ID: 57)

错误消息:
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。 (源: MSSQLServer,错误号: 512)
获取帮助: http://help/512
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。 (源: MSSQLServer,错误号: 512)
获取帮助: http://help/512

然后一直是第二个错误提示。

------最佳解决方案--------------------
SQL Server 2000订阅与发布的具体操作
同步过程
  一、准备工作,如果完成则可跳过。
  1、内网DB服务器作为发布服务器,外网DB服务器作为订阅服务器。
  发布服务器和订阅服务器上分别创建Windows用户jl,密码jl,隶属于administrators,注意要保持一致。
  2、发布服务器上创建一个共享目录,作为发布快照文件的存放目录。例如:在D盘根目录下建文件夹名为SqlCopy,设置用户jl,权限为完全控制。
  3、确定发布服务器和订阅服务器的数据库autoweb保持一致。
  4、在发布服务器和订阅服务器的SQL Server中创建用户登陆名jl,作为发布数据库autoweb的拥有者(设置为dbo_owner和public)。用户名和密码都一致。
  5、打开服务(控制面板---管理工具---服务)
  ---右击SQLSERVER AGENT---属性---登录---选择“此帐户”
  ---输入或选择第一步中创建的WINDOWS 用户jl,
  ---“密码“中输入该用户密码jl
  6、开启SQL Server 2000的网络协议TCP/IP和管道命名协议并重启网络服务。
  7、设置SQL SERVER 身份验证,解决连接时的权限问题(发布、订阅服务器均设置)
  步骤为:对象资源管理器----右击SQL实例-----属性----安全性----服务器身份验证------选“SQL Server和WINDOWS“,然后点确定。
  8、发布服务器和订阅服务器互相注册
  步骤如下:视图----单击以注册服务器----右键数据库引擎----新建服务器注册-----填写要注册的远程服务器名称------身份验证选“SQL Server验证“-----用户名(sa) 密码------创建组(也可不建)-----完成。对于只能用IP,不能用计算机名的,为其注册服务器别名
  二、发布和订阅
  如下工作都在发布服务器上配置,包括发布和订阅。
  快照发布和订阅
  1、 选择 复制 节点,右键本地发布 ----下一步---------系统弹出对话框看提示----直到“指定快照文件夹”----在“快照文件夹“中输入准备工作中创建的目录(指向步骤3所建的共享文件夹)------选择发布数据库-------选择发布类型
  下一步―――选择要发布的数据库autoweb中的表,将b(B)开头的表去掉,V开头的表去掉,c_开头的表去掉,t_开头的表去掉,剩下的表作为快照发布到订阅服务器上(单向传输)
  根据情况决定执行发布的间隔时间,如图每天每20分钟执行一次。
  下一步快照代理安全性,设置如图,连接到发布服务器用户jl,密码jl.
  -------填写发布名称。
  2、 选择 复制 节点,右键本地订阅,选择发布服务器-------选择订阅方式(选择推送订阅))-------填加订阅服务器--------选择代理计划(一般选择连续运行)---------其余选择默认项。
  至此完成快照发布和订阅。
  合并发布和订阅
  1、选择如下三个表作为合并发布的对象,用于双向通讯
  根据情况决定执行发布的间隔时间,如图每天每20分钟执行一次。
  2、 选择 复制 节点,右键本地订阅,选择发布服务器-------选择订阅方式(选择推送订阅))-------填加订阅服务器--------选择代理计划(一般选择连续运行)---------其余选择默认项。
  至此完成合并发布和订阅
  -------------------------------
  主要是要注意权限的问题,一般做发布/订阅,建议你做如下准