我们计划在 SQL Server 2008 R2 的 2 个节点上创建一个事务复制,每个节点将是一个发布者和一个订阅者。
完成此场景的最佳实践是什么?微软一直建议分发者应该独立于发布者或订阅者,因此很明显,场景中要涉及到第三个节点。但是,由于每个节点将同时是发布者和订阅者,同一个(第三个节点)可以成为 2 个发布者的分发者吗?我应该创建 2 个分发服务器,还是仍然可以使用相同的架构,只使用 2 个节点,每个节点都充当分发服务器和发布服务器?
sql-server sql-server-2008-r2 high-availability transactional-replication
目前正在基于在特定表更新时触发的触发器进行数据库审计项目。触发器将更改写入表;写入的信息有:表名、更新列、时间戳、用户、旧值和新值。
触发器适用于单个更新,但当涉及多行更新时,它不起作用。
我的代码是这样的:
IF (UPDATE(Priority))
BEGIN
SET @UpdatedColumn = 'Priority'
INSERT INTO dbo.AuditTable
( [TableName] ,
[Source] ,
[RecordId] ,
[User] ,
[TimeStamp] ,
[UpdatedColumn] ,
[OldValue] ,
[NewValue]
)
SELECT
N'BookingItem' , -- TableName - nvarchar(max)
(SELECT CODE FROM TBL_LEG_SOURCE
INNER JOIN INSERTED INS ON LEG_SOURCE_ID = INS.SourceId) ,
INS.Id , -- RecordId - bigint
(SELECT USERNAME FROM INSERTED
INNER JOIN TBL_USER
ON ModifiedById = USER_ID) , -- User - nvarchar(max)
GETDATE() , -- TimeStamp - datetime
@UpdatedColumn , …Run Code Online (Sandbox Code Playgroud)