sqlserver 拷贝同步多个表数据到另一张表

本文提供了一个SQL脚本示例,展示了如何从一个业务绩效表(Business_DMS_Performance)和员工表(Business_DMS_Employees)中选择特定记录,并将其插入到另一个绩效评估表(Business_DMS_PerformanceEvaluate)中。

--/****** Script for SelectTopNRows command from SSMS ******/

Insert into [DMSBusiness].[dbo].[Business_DMS_PerformanceEvaluate]
( [SystemCreateDate]
,[SystemCreator]
,[SystemParentID]
,[SystemFormStatus]
,[Year]
,[Quarty]
,[PerformanceEvaluateLevel]
,[PerformanceEvaluate]
,[DirectSupervisor]
,[DecisionMakingSupervisor])
select [SystemCreateDate]
,[SystemCreator]
,[ID]
,[SystemFormStatus]
,[PerpormanceYear]
,[PerformanceSeason]
,[FinalRate]
,[Comment]
,[SeasonDirector]
,[SeasonPolicymakers]     //字段相对应;赋值关系
from (
SELECT c.[ID]
,a.[SystemCreator]
,a.[SystemCreateDate]
,a.[PerformanceSeason]
,a.[PerpormanceYear]
,a.[FinalRate]
,a.[Comment]
,[SeasonDirector]
,[SeasonPolicymakers]
,a.[SystemFormStatus]
FROM [DMSBusiness].[dbo].[Business_DMS_Performance] as a
join (SELECT [ID],[UserId]
FROM [DMSBusiness].[dbo].[Business_DMS_Employees]) as c on a.SystemCreator=c.UserId
) d where [SystemFormStatus]=373

 

将表Business_DMS_Performance和表Business_DMS_Employees链接出来的临时表数据拷贝到表Business_DMS_PerformanceEvaluate的指定字段

 

转载于:https://www.cnblogs.com/min-min-min/p/6362759.html

### 实现SQL Server不同数据库间的数据同步 为了实现在SQL Server的不同数据库之间的数据同步,一种有效的方法是采用发布-订阅机制[^5]。此方式能够确保源数据库中的更改被及时复制到目标数据库中。 #### 配置发布服务器与订阅服务器 在设置过程中,需先指定一台作为发布服务器的角色,该角色的任务是从源头捕获变更并将这些变化传播出去;一台或台扮演订阅者的身份来接受来自发布的更新并应用至本地环境内。具体来说: - **创建发布**:这一步骤涉及到定义哪些对象(如格)应该参与同步过程,并设定规则决定何时何地发送变动通知。 - **建立订阅关系**:一旦发布了特定的对象版本之后,就需要告知那些希望接收到副本的目标端点——即所谓的“订阅者”。对于每一个想要加入同步链路的新成员而言,都得单独建立起这样的连接契约。 ```sql -- 创建发布 (Publisher) EXEC sp_replicationdboption @dbname = N'YourSourceDatabase', @optname = N'publish', @value = N'true'; USE YourSourceDatabase; GO EXEC sp_addpublication @publication = N'DataSyncPublication'; EXEC sp_addarticle @publication = N'DataSyncPublication', @type = N'table', @source_owner= N'dbo', @source_object=N'TargetTable'; ``` 上述脚本用于初始化一个名为`DataSyncPublication`的出版物,它会跟踪`TargetTable`的变化情况以便后续分发给各个订户节点。 针对每一处需要保持一致性的远程站点,均应执行相应指令以确立其为合法接收方的身份验证手续: ```sql -- 添加推式订阅 (Push Subscription) DECLARE @subscriptionDB AS nvarchar(100); SET @subscriptionDB = 'RemoteServer\InstanceName.YourSubscriptionDatabase'; EXEC sp_addpushsubscription @publication = N'DataSyncPublication', @subscriber = @subscriptionDB, @destination_db= N'SubscriptionDatabase', @sync_type = N'automatic', @offloadagent = N'false', @dts_package_location = N'distributor'; ``` 这段代码片段展示了如何向已存在的发行版添加一个新的推送型订阅实例,这里假设远端机器上的SQL Server实例名称为`RemoteServer\InstanceName`,并且那里存在一个叫做`YourSubscriptionDatabase`的目的地数据库等待着获取最新的资料拷贝。 除了传统的基于事务的日志读取器代理程序之外,还有其他几种可供选择的技术手段可用于达成跨库间的无缝对接效果,比如CDC(Change Data Capture),它可以精确捕捉到每一次DML操作所带来的影响范围及其具体内容,进而辅助完成增量式的迁移作业而不必每次都全量重做一遍整个集合体的内容转移工作[^3]。 #### 使用CDC进行更精细控制 当面对频繁发生修改动作的工作负载场景时,启用改变数据捕集功能不失为一项明智之举。通过这种方式不仅可以减少不必要的网络传输开销,而且还能提高整体系统的响应速度和服务质量水平。 ```sql -- 启用CDC于单个级别 USE SourceDatabase; ALTER DATABASE Current SET CHANGE_TRACKING = ON; EXEC sys.sp_cdc_enable_table @source_schema='dbo', @source_name ='TableName', @role_name=null; ``` 以上命令序列开启了对某张特定格内部结构改动事件的兴趣监听服务,使得应用程序开发者能够在必要时刻轻松提取出感兴趣的时间戳区间内的所有差异项记录列。 最后值得注意的一点在于,尽管自动化工具提供了极大的便利性和灵活性,但在实际部署之前仍然建议充分评估潜在风险因素并对可能产生的副作用做好预防措施准备,例如提前规划好回滚策略以防万一出现问题时候可以迅速恢复原状。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值