我正在尝试使用复制数据库向导从我的实时服务器(共享主机)复制到我的本地计算机。实时和本地服务器都是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分钟,因此无论如何速度都不是问题。
这是我对解决方案的偏好:
如果失败,那么......
如何使用CDW创建包,然后进入BIDS并操纵包中的某些内容以规避sysadmin角色要求。 (它真的需要元数据吗?除了实际的数据表之外我什么都不需要。)这可能吗?
更新2016年6月14日:在BIDS中编辑CDW包不会起作用,因为它似乎只是使用.mdf和.ldf文件,当然我没有访问权限到共享服务器上。我认为另一种方法是使用导入/导出向导来创建包,然后在BIDS中编辑。令人讨厌的部分是,无法访问元数据,导入/导出向导似乎不知道外键,因此不知道处理表的顺序。
如果失败,那么......
您认为所有网站的一个非常常见的情况是“如何每天自动将我的实时数据库副本发送到我的本地SQL服务器”?但也许我很奇怪!
答案 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.