0

我正在尝试将数据库从 sql server 2016 服务器复制到 sql server managment studio 2005 中的另一台服务器。(server1.database1)到(server2.database1)我尝试了分离和附加方法,但它没有用。我也尝试复制数据库,但它也不起作用!我需要所有的表格和视图和公关!最后我可以复制所有的表格和公关,但问题是我不能将视图作为视图,它们只是保存为表格。为了解决这个问题,我想如果我从 server1.views 复制查询并在 server2.database1.views 中执行该查询,我将拥有视图,因为我在 server2.database1 中复制了所有对象。但我得到了一些错误:一个是他们在 sql server 2016 中使用的“格式”函数,该函数在 2005 年没有被识别。我改变了所有的“格式” 消息 15135,级别 16,状态 8,过程 sp_addextendedproperty,第 37 行 [批处理开始第 35 行] 对象无效。'dbo.v_RASAM' 上不允许扩展属性,或者该对象不存在。

所以查看我要复制调用:dbo.v_RASAM 而且我确定(因为我检查了程序名sp_addextendedproperty) sp_addextendedproperty 存在!所以我的问题可能是程序遵循一些需要更改的语句,因为“视图”具有 sql server management studio 2005 中不可用的功能?(这可能听起来很愚蠢,但我认为任何可能的原因可能导致这个问题)如何将这些视图复制到 server2.database1 我没有尝试过的任何其他方式?

任何帮助或想法将不胜感激!非常感谢您的参与!

4

2 回答 2

1

您可以尝试使用生成脚本功能将所有对象和数据(如果需要)写入脚本文件并在目标实例上执行。

在 SSMS 2016 中,右键单击数据库 > 任务 > 生成脚本..

向导中的“高级”按钮下有很多您可能想要调整的选项。

于 2016-09-19T00:38:36.783 回答
0

在我的案例中,我通过更改视图脚本中的所有“格式”函数找到了解决方案,即 Format(Convert(int,databse.table.column),'####-##-##') 和 Replace(convert (varchar(20),Cast(database.table.column 作为日期时间)。

很少有人遇到这个问题,但唯一的方法是从头开始重新构建查询并尝试手动兼容 2012 或 2016 到 2005!

于 2016-09-20T17:16:41.013 回答