System.Data.SqlClient.SqlError:无法对过程'XXX' 执行 删除,因为它正用于复制。消息 3724,级别 16

  遇到这么一个错误,想对[northwindcs]这个数据库搭建复制,从B服务器发布订阅到C服务器,采用备份还原进行初始化,但是在数据库还原时,报无法对过程‘XXX’执行删除,因为它正用于复制。表面上一看感觉有点奇怪,为什么我在还原数据库的时候会报这样的错误,还原数据库的机理是什么,怎么还存在删除某个存储过程或者视图之类的动作。但是后面“它正用于复制”给了我解决问题的思路。

  通过对架构了解,B服务器上的northwindcs数据库也是从A服务器上订阅而来,采用的推送订阅,现因为A服务器是一套非常重要的交易系统,不想让C服务器直接从A服务器订阅,而是订阅B服务器上的这个数据库。对此重新在B服务器上配置了分发,创建了发布。但是在备份后在C服务器上进行还原的时候报如下错误:

  

  那么怀疑就是B服务器上创建了这个库的发布导致备份集有问题,在C服务器上进行还原的时候报错。于是将B服务器上创建的发布删除,重新进行备份还原,还原未发生异常。

  在这里就有个疑问,难道所有配置了发布的数据库,他的备份都会有问题,还原都会出问题?为了消除这个疑问,将A服务器上该库同样进行了备份,在C服务器上还原,居然没有报错!那么疑问就来了,为什么B服务器的备份就会有问题,虽然B服务器上的northwindcs库是从A服务器上订阅而来,再次创建了发布而已。(此问题尚未解决,求大神给小弟科普一下)

  在这里有一点,数据库复制,不是库级别的,对象级别的,发布都不是把所有的对象全部发布过去,视图和存储过程可以发布。但是每张表里除了和聚集索引相关联的包括主键和主键的统计信息会发不过去,其他的索引、外键、数据库用户、约束、触发器和统计信息都不会发布过去。

  当发布服务器发布了视图和索引之后,这些对象都会被标记为已复制,所以无法进行删除,必须将发布取消之后才可以进行删除,否则就会报如题的错误。

System.Data.SqlClient.SqlError:无法对过程'XXX' 执行 删除,因为它正用于复制。消息 3724,级别 16

时间: 2024-07-28 15:54:16

System.Data.SqlClient.SqlError:无法对过程'XXX' 执行 删除,因为它正用于复制。消息 3724,级别 16的相关文章

System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'XXX' 数据库不同。

转载:http://blog.csdn.net/kongxx/article/details/4959764 1. 删除与要恢复数据库同名的已经存在的数据库:2. 右击"数据库"选择"还原数据库":3. 在弹出窗口的目标数据库中输入要还原数据库名:4. 选择源设备,并选择源数据库备份文件:5. 点击确定,开始恢复数据库. System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'XXX' 数据库不同.

System.Data.SqlClient.SqlError: 尚未备份数据库的日志尾部

SQL还原时出现下面的错误,System.Data.SqlClient.SqlError: 尚未备份数据库 "***" 的日志尾部.如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志.请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容. (Microsoft.SqlServer.Smo)原因分析:    这是因为在线还原的数据库在最后备份后又产生了新的日志,所以按照默认设

还原数据库备份文件时,关于“System.Data.SqlClient.SqlError:媒体集有2个媒体簇,但只提供了1个。必须提供所有成员”的处理方式

好久没写博客了,最近在做毕设的权限管理模块,今天在还原数据库文件时,遇到了“System.Data.SqlClient.SqlError:媒体集有2个媒体簇,但只提供了1个.必须提供所有成员”这个错误,百度了一下,找到了原因和解决方式. 原因分析:1.备份的时候,旧路径没有删除,我添加了一个新路径,就无意中设置成了两个备份路径,SQL就会根据两个备份路径把备份文件分成两个.2.还原的时候源数据必须把两个备份文件都加载上.3.还原的新路径要手工修改成实际SQL的data文件夹路径.4.如果有同名数

System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份。

标题: Microsoft SQL Server Management Studio------------------------------ 还原数据库“GoldBellXZDepot”时失败. (Microsoft.SqlServer.Management.RelationalEngineTasks) ------------------------------其他信息: System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份

出现“System.Data.SqlClient.SqlError: 尚未备份数据库的日志尾部”错误的解决方案

Sql Server2008数据库在还原时出现如下错误信息:System.Data.SqlClient.SqlError: 尚未备份数据库<数据库名称>的日志尾部.如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志.请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容. (Microsoft.SqlServer.Smo) 经过网上查阅的资料,有两种方法可以解决,只需要在还原的时候使

在SQL SERVER 2005中还原数据库时出现错误:system.data.sqlclient.sqlerror 媒体集有 2 个媒体簇 但只提供了 1 个。必须提供所有成员。 (microsoft.sqlserver.smo)

问题:在SQL SERVER 2005中还原数据库时出现错误:system.data.sqlclient.sqlerror 媒体集有 2 个媒体簇 但只提供了 1 个.必须提供所有成员. (microsoft.sqlserver.smo) 原因:由于备份时,没有去掉默认的备份路径(C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\backup.bak),而又添加了一个新的路径,结果备份了两份,但它们之间彼此依赖,所以没有办法恢复

sql System.Data.SqlClient.SqlError: 无法覆盖文件 &#39;C:\Program Files\Microsoft SQL Server\MSSQL\data\itsm_Data.MDF&#39;。数据库 &#39;my1&#39; 正在使用该文件的解决方案

对数据库备份进行还原时遇到“sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQL\data\itsm_Data.MDF'.数据库 'my1' 正在使用该文件”的问题. 产生原因:对一个数据库备份文件在两个数据库中进行还原时,这个问题的出现主要是因为还原第一个数据库和第二个数据库的名称是一样的,而且在第二个数据库还原时的物理路径时选的路径和第一个数据库还原路径一样. 解决方案:

System.Data.SqlClient.SqlError: FILESTREAM 功能被禁用&rdquo;的错误

还原sql2008数据库时遇到"System.Data.SqlClient.SqlError: FILESTREAM 功能被禁用"的错误,在网上搜索解决方案如下: 1.在"开始"菜单中,依次指向"所有程序"."Microsoft SQL Server 2008"和"配置工具",然后单击"SQL Server 配置管理器". 2.在服务列表中,右键单击"SQL Server 服务

异常:error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name &#39;System.Data.SqlClient&#39;

error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient' error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the pro