SQL Server复制数据库问题

问题描述:

我正在SQL Server的2008 R2实例上运行复制数据库向导。SQL Server复制数据库问题

我想要复制的数据库是SQL 2000数据库。 我将该数据库复制到另一个SQL SErver 2008 R2。

向导对两台服务器都使用SQL身份验证,并且都是系统管理员。

当我运行它,我得到以下错误(FYI我曾经尝试都复制登录并留下出来):

Event Name: OnError Message: ERROR : errorCode=-1073548784 description=Executing the query "sys.sp_addrolemember @rolename = N'RandomRoleName..." failed with the following error: "The role 'RandomRoleName' does not exist in the current database.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly. helpFile= helpContext=0 idofInterfaceWithError={C81DFC5A-3B22-4DA3-BD3B-10BF861A7F9C} StackTrace: at Microsoft.SqlServer.Management.Dts.DtsTransferProvider.ExecuteTransfer() at Microsoft.SqlServer.Management.Smo.Transfer.TransferData() at Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer()

任何帮助,将不胜感激!

Jim

+0

你检查的角色名称在安全 - >角色 - >? – Pankaj 2011-06-03 12:54:34

+0

@SQL我认为你的意思是在源数据库?是的......这是巫师从中选择角色的地方。 – BIDeveloper 2011-06-03 13:00:41

复制向导错过了一些安全性和IIRC它是由两个版本之间的安全表,主体等细微的差异造成的。

坦率地说,最简单的方法就是做这两者之一:

  • 备份/恢复
  • 分离,拷贝,附上

我的建议是不使用复制数据库向导。在2000服务器上创建数据库的完整备份,然后在2008服务器上进行恢复。

如果你的谷歌“Microsoft.SqlServer.Management.Dts.DtsTransferProvider.ExecuteTransfer复制数据库向导”,你会发现许多人已经得到这个相同的错误或其他几乎相同的smo错误......没有人似乎有过去了。

这并不是说它不可能......只是,恢复备份比向导更容易,或者向导故障排除。祝你好运。

如果您没有访问将O/S并且无法获取它,另一个选择是在副本运行时在后台创建缺失的角色。

您必须在创建文件和尝试引用角色之间捕捉它,但如果您继续单击执行,则需要几秒钟才能创建它们 - 我设法创建了9个角色。

不幸的是,您最终还会在另一个数据库中担任角色(而您的角色无法使用),因此需要删除这些角色。

当然,这只是一个选项,当你真的不能使用其他方法。

原因可能是具有新数据库名称的文件已经存在于文件系统中。当我们将数据库X重命名为X_Old时,我们遇到了这种情况,并试图将数据库Y复制到X中。由于数据库X_Old仍与文件名X关联,因此我们遇到了这种情况。

要么删除冲突的数据库,要么重命名文件在文件系统上。

http://codecopy.wordpress.com/2012/01/03/error-while-copying-a-database/