从 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 缺少数组中的行