两台机器A和B之间的同步已经做好,
A和B上都是装的相同版本的SQL Server 2000,
其中A是作为发布和分发服务器,
B作为订阅服务器,
采用的事务复制,强制订阅的方式,
运行了一段时间很稳定。但是现在出现了一个麻烦的问题,
就是A机器上运行的软件要对其中的数据项进行拆分操作,
这时候就会弹出对话框提示:“拆分单据失败,无法更改表"stock",因为它正在为复制而发布”,
然后就无法进行分拆操作。请教各位数据库高手,怎么会出现这种情况?如何解决这个问题?
是不是SQL Server 2000本身的问题,同步之后就无法分拆了?
先谢谢各位!
A和B上都是装的相同版本的SQL Server 2000,
其中A是作为发布和分发服务器,
B作为订阅服务器,
采用的事务复制,强制订阅的方式,
运行了一段时间很稳定。但是现在出现了一个麻烦的问题,
就是A机器上运行的软件要对其中的数据项进行拆分操作,
这时候就会弹出对话框提示:“拆分单据失败,无法更改表"stock",因为它正在为复制而发布”,
然后就无法进行分拆操作。请教各位数据库高手,怎么会出现这种情况?如何解决这个问题?
是不是SQL Server 2000本身的问题,同步之后就无法分拆了?
先谢谢各位!
这时候就会弹出对话框提示
:“拆分单据失败,无法更改表"stock",因为它正在为复制而发布”,正大复制的时候不可以更改的,等高手解决
这时候就会弹出对话框提示
:“拆分单据失败,无法更改表"stock",因为它正在为复制而发布”, 正大复制的时候不可以更改的, 等高手解决
---------
好象不是这样的,后来我把发布删除就可以分拆了,但是重建发布后,
只要把上面那个分拆用到的表加入我的发布中就会出现同样的问题,
不管有没有订阅
EXEC sp_removedbreplication '数据库名称'
GO
运行即可
sp_removedbreplication 该存储过程在发布服务器的发布数据库中或在订阅服务器的订阅数据库中执行。该过程将从执行它的数据库中删除所有复制对象,但它不会从其他数据库(例如,分发数据库)中删除对象。 注意:
只有当其他删除复制对象的方法都失败后,才应当使用此过程。有关这些方法的详细信息,请参阅删除复制。
Transact-SQL 语法约定
语法sp_removedbreplication [ [ @dbname = ] 'dbname' ]
[ , [ @type = ] type ]
参数
[ @dbname=] 'dbname'
数据库的名称。dbname 的数据类型为 sysname,默认值为 NULL。此参数值为 NULL 时,将使用当前数据库。
[ @type = ] type
要为其删除数据库对象的复制的类型。type 的数据类型为 nvarchar(5),可以是下列值之一。
tran
删除事务复制发布对象。
merge
删除合并复制发布对象。
both(默认值)
删除所有复制发布对象。
返回代码值
0(成功)或 1(失败)
备注
sp_removedbreplication 用于所有复制类型。
如果要还原的复制数据库没有需要还原的复制对象,sp_removedbreplication 将很有用。
sp_removedbreplication 不能用于标记为只读的数据库。
权限
只有 sysadmin 固定服务器角色的成员才能执行 sp_removedbreplication。
http://support.microsoft.com/?id=326352