sql-server - 在没有 ETL 工具的情况下跨 SQL Server 实例增量移动数据
问题描述
我正在从事一个项目,该项目涉及定期将数据从结构相同的数据库 A(在 SQL Server 实例上)复制到数据库 B(在不同的实例上)。我没有使用 SSIS 或其他 ETL 工具的选项,因此我必须使用已经建立的链接服务器并编写一个存储过程作为增量负载的每小时作业运行。
要将增量记录从数据库 A 复制到 B,我将以下存储过程作为作业运行:
CREATE PROCEDURE Incremental_Load
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO New_Table (New_Date_Column, Copied_Attribute)
SELECT Datetime_Var, Attribute1
FROM Linked_Server.Database_A.dbo.Source_Table
WHERE Datetime_Var > (SELECT MAX(New_Date_Column) FROM New_Table);
END
它似乎有效;根据日期时间的最后一条记录,仅插入新表中不存在的新记录。我的问题与性能和潜在问题有关。如果源表每 30 分钟获取一次新记录,并且此存储过程每小时运行一次,我是否应该预料到任何问题,尤其是关于子查询的问题?另外,是否有可能我不会检测到所有增量?这种方法还有其他明显的问题吗?
万一这很重要,我无权访问 SQL Server Profiler。由于我的特权/角色,我也无法创造工作;其他人必须为我这样做。所以,我想在测试之前收集一些信息。
谢谢你。
解决方案
推荐阅读
- angular - 尽管运行“npm i @types/node --global”,为什么我得到“找不到名称'NgModule'”?
- php - 用按钮改变数据内容,(根据按钮点击改变sql id)
- postgresql - 如何在 PostgreSQL LDAP 身份验证中隐藏 ldapbindpasswd?
- kubernetes - splunk-connect-kuberentes 到 splunk light - 没有数据错误
- vue.js - EsLint airbnb-base import/no-unresolved
- c - 使用 write() C 函数时出现 SIGPIPE 错误
- arrays - 在 cplex 中使用 for 循环策略创建一个数组
- vue.js - VueX:为什么 vuex 存储数据不更新组件数据属性?
- svg - vue-app 中生成的 SVG 在 Illustrator 中具有模式偏移
- sql - 查询以汇总未同时运行的后续持续时间