从 SQL Server 2016 到 SQL Server Management Studio 2005 的 ETL

Posted

技术标签:

【中文标题】从 SQL Server 2016 到 SQL Server Management Studio 2005 的 ETL【英文标题】:ETL from SQL Server 2016 to SQL Server Management Studio 2005 【发布时间】:2016-09-18 21:18:28 【问题描述】:

我正在尝试将数据库从 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?

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

【问题讨论】:

能否访问同一网络上的两个实例?如果是这样,那么您可能需要考虑使用链接的 aerver 来推送数据。 您可以将备份从 2016 服务器恢复到 2016 服务器,然后将恢复的备份的兼容性级别从 2016 更改为 2005,然后备份该版本,这样您就可以将其还原到 2005 实例。诚然没有尝试过,但值得一试。 【参考方案1】:

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

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

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

【讨论】:

如果我的目标服务器是 2016 年并且我的源是 2005 年,这将起作用。但正如我所说,出于某种原因,我需要将视图从 2016 年转移到 2005 年,并且脚本出现错误,例如“格式”函数在 sql 2005 中没有被识别,我在 2016 服务器的视图中有它 在这种情况下,您别无选择,只能重写任何目标代码以向后兼容 好的,非常感谢@innomatics!【参考方案2】:

在我的情况下,我找到了解决方案,方法是更改​​视图脚本中的所有“格式”函数,即 Format(Convert(int,databse.table.column),'####-##-##') Replace(convert(varchar(20),Cast(database.table.column as datetime).

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

【讨论】:

以上是关于从 SQL Server 2016 到 SQL Server Management Studio 2005 的 ETL的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL Server 2008 升级应用程序以使用 SQL Server 2016

SQL server 2008中使用SSIS从一个数据库导入数据到另一个数据库,[SQL Server 目标 [22]] 错误: 无法准备 S

如何在 s-s-rS 中显示 Dynamics(在 SQL Server 2016 上运行)中的 BLOB 图像

JSON 到 SQL Server 2016 缺少数组中的行

安装数据库sql server2019时,到最后提示服务没有及时响应启动或控制请求,怎么办?

SQL Server 2016 与 2019 函数