您好,欢迎来到[问答大全]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 问答大全 >> 电脑网络 >> [SQL SERVER 2008R2]无法对 cdc 执行 drop schema,因为对象 fn_cdc_get_all_changes_ 正引用它

[SQL SERVER 2008R2]无法对 cdc 执行 drop schema,因为对象 fn_cdc_get_all_changes_ 正引用它

来源:网络整理     时间:2016/6/13 9:45:53     关键词:

关于网友提出的“ [SQL SERVER 2008R2]无法对 cdc 执行 drop schema,因为对象 fn_cdc_get_all_changes_ 正引用它”问题疑问,本网通过在网上对“ [SQL SERVER 2008R2]无法对 cdc 执行 drop schema,因为对象 fn_cdc_get_all_changes_ 正引用它”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: [SQL SERVER 2008R2]无法对 cdc 执行 drop schema,因为对象 fn_cdc_get_all_changes_ 正引用它
描述:

描述:目前有两台主机A和B。在主机A上创建了数据库DB(记为A.DB),并开启了CDC。现将A.DB拷贝至主机B上,搭建为数据库B.DB,并开启了SQL代理。(数据库均为SQL Server 2008r2)

现针对B.DB执行如下SQL:

EXEC sys.sp_changedbowner 'sa'; -- 改变用户权限exec sys.sp_cdc_enable_db; -- 开启数据库 CDC。如果报错,则需要改变用户权限

则出现如下报错:

消息 22906,级别 16,状态 1,过程 sp_cdc_enable_db_internal,第 49 行
因为当前数据库中已存在名为 'cdc' 的数据库用户或名为 'cdc' 的架构,所以无法为变更数据捕获启用数据库 'DB'。变更数据捕获需要独占使用这些对象。请删除或重命名该用户或架构,然后重试相应操作。

而实际上B.DB并未开启CDC。按照提示删除数据库下的cdc架构(删除cdc角色时提示需要先删除架构)

则会出现如下报错:

详细信息如下:

===================================

无法对 'cdc' 执行 dropschema,因为对象 'fn_cdc_get_all_changes_ ... ' 正引用它。 (.Net SqlClient Data Provider)

------------------------------
有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2500&EvtSrc=MSSQLServer&EvtID=3729&LinkId=20476------------------------------服务器名称: (local)
错误号: 3729
严重性: 16
状态: 1
行号: 2------------------------------程序位置:

   在 Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)
   在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)

本人依据相关线索,在网上搜到如下SQL以查询与架构相关的对象:

-- 查询与架构相关的对象

use DB
goselect obj.type, obj.name
from sys.objects obj join sys.schemas s on(s.schema_id = obj.schema_id)
where s.name ='cdc'go

得到部分查询结果如下:

于是想尝试删除sys.objects表中的相关记录:

deletefrom sys.objects where name ='fn_cdc_get_all_changes_...'go

又出现如下报错信息:

消息 259,级别 16,状态 1,第 1 行
不允许对系统目录进行即席更新。

(注:以上SQL操作均位于B.DB)

本人最终目的是想开启B.DB的CDC,忘高手解惑。不胜感激~


解决方案1:

你是怎么拷贝的呢?


以上介绍了“ [SQL SERVER 2008R2]无法对 cdc 执行 drop schema,因为对象 fn_cdc_get_all_changes_ 正引用它”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/wd/1669457.html

相关图片

相关文章