两个SQL 2008R2服务器之间的复制数据库向导问题

时间:2016-06-11 16:21:54

标签: sql-server sql-server-2008 ssis copy-database-wizard

我正在尝试使用复制数据库向导从我的实时服务器(共享主机)复制到我的本地计算机。实时和本地服务器都是SQL 2008 R2。

从现场SQL 2000服务器复制到本地2008 R2时,我已经使用CDW几年并取得了圆满成功。但是现在我已将我的实时数据库迁移到SQL 2008 R2,CDW给了我这个错误:

  

无法读取元数据,可能是由于访问权限不足。

我已经了解到,在您完成CDW设置之前可以预测到此错误:在CDW要求您提供所需目标数据库名称的页面上,支持使用它们填充.mdf和.ldf文件。名称和大小(例如MB,GB)。

但在我的情况下,这些文件名和大小没有显示(向导中的区域只是空白)然后当我尝试执行包时它会给我错误。

经过大量研究后,我认为此错误的原因是由于CDW要求"You must be a member of the sysadmin fixed server role on both the source and destination servers."

在我的本地服务器上,我的Windows身份验证登录名列为sysadmin服务器角色的角色成员。但是在我的实时服务器上(请记住它是一个拥有250多个数据库的共享SQL服务器),列出的唯一角色成员是[sa]。

我认为满足此要求的唯一方法是将我的特定SQL用户添加到实时/源服务器>安全>服务器角色> sysadmin的作用?我猜这绝不会在共享服务器上完成吗?或者是否有其他方法可以通过搞乱特定的数据库属性/用户/角色来使其工作?

我无法解释为什么CDW使用的是实时SQL 2000服务器,而不是2008 R2。我希望它只是在实时数据库上没有设置某些东西,但可能是由于多年来对SQL安全性所做的更改。

如果重要,我必须使用SMO方法而不是分离/附加,因为它是一个我不想删除的实时数据库。从历史上看,使用SMO方法,SQL 2000中的CDW只需要3分钟,因此无论如何速度都不是问题。

这是我对解决方案的偏好:

  1. 找到让CDW正常工作的方法,最有可能是通过更改实时服务器上的内容。这可能吗?它会是什么?
  2. 如果失败,那么......

    1. 如何使用CDW创建包,然后进入BIDS并操纵包中的某些内容以规避sysadmin角色要求。 (它真的需要元数据吗?除了实际的数据表之外我什么都不需要。)这可能吗?

      更新2016年6月14日:在BIDS中编辑CDW包不会起作用,因为它似乎只是使用.mdf和.ldf文件,当然我没有访问权限到共享服务器上。我认为另一种方法是使用导入/导出向导来创建包,然后在BIDS中编辑。令人讨厌的部分是,无法访问元数据,导入/导出向导似乎不知道外键,因此不知道处理表的顺序。

    2. 如果失败,那么......

      1. 还有其他方法可以轻松地将每日副本从我的实时服务器自动复制到本地计算机吗?我喜欢CDW的原因是因为它使用起来非常简单(当它工作时),它可以安排为每天作为SQL代理作业运行,并且我不需要手动工作。如果CDW无法发挥作用,是否还有“次佳”?
      2. 您认为所有网站的一个非常常见的情况是“如何每天自动将我的实时数据库副本发送到我的本地SQL服务器”?但也许我很奇怪!

1 个答案:

答案 0 :(得分:0)

Another simple solution would be the Import/Export Wizard.

In SSMS right-click the database you want transferred and select 'Tasks' and then 'Export Data...'. It will open a wizard that is very similar to that of CDW. The difference here is that I could not find a sysadmin requirement to use it.

At the end it will give the option to run immediately and/or save the SSIS package. If you save the SSIS package (I prefer to save it to disk) you can then create a schedule via a SQL Agent job.