我是一名管理工程公司数据的“意外DBA”。我们的每个站点都有一个SQL Server 2000数据库中最近3个月(滚动)站点数据的本地存储。
这些数据库(大约150个)由工厂制造商管理,我们只有SELECT
只读数据。无法获得管理访问权限或对这些远程数据库的表,架构,配置选项等进行任何更改。
除此之外,我们还在办公室的SQL Server 2012(标准版)数据库中保留所有数据的精确副本(相同的表格,架构等)。这将存储来自每个站点的所有历史数据,而不仅仅是远程存储的3个月。目前,使用自定义第三方工具检索远程数据并更新办公室数据库。但是,这是作为exe提供的,无法查看源代码。
由于第三方传输工具的配置选项有限,我被要求找到替换它的方法。显然,我可以编写自己的自定义应用程序,但我首先想要探索是否可以利用任何现有的SQL Server工具。
到目前为止,我已经尝试过探索(注意:我不是SQL Server的专家,所以请原谅任何不准确之处):
SQL Server replication:如果我理解正确,必须在源数据库和目标数据库上配置,遗憾的是这不是一个选项(我也相信SQL Server 2000不支持复制)。
Microsoft Sync Framework:据我所知,这涉及在源数据库中创建表/列以监控更改。在我的情况下,这是不可能的。
链接服务器(我不认为这本身就是一种复制技术,我只是试了一下):我试图创建一个链接服务器,但是当远程数据库运行SQL Server 2000时,这是不可能的
Service Broker:与1.和2.类似,这涉及在远程数据库中创建队列。
所以,我的问题是:
当您对远程数据库只有SELECT
权限时,SQL Server中是否有任何工具可以在实例之间复制数据?
如果对1.的回答是否定的,是否有任何好的存储过程示例可以执行上述操作?
在我的情况下,监控更改相对容易,因为每行包含一个信号时间戳。因此,可以监控此数据以获取新数据。但是,某些列包含计数器信息,这取决于检索数据的时间可能已更改(相同的时间戳,但另一列可能已更新)。处理这些案件的最佳方法是什么?