小编Obs*_*nix的帖子

跨多个表的更改跟踪

我正在考虑在我的系统中提供数据库级别的更改跟踪。我需要能够跟踪实体级别的更改,而不仅仅是单个表。

现在,我们在每个感兴趣的表上都有触发器,将表 PK 写入Change_Event表中。然后我们可以查询该表,并将其归结为代表整个实体的 PK。然后,我们可以检索该实体的数据并对其执行相关操作。

作为示例,请考虑以下(简化的)示例:

CREATE TABLE Employee
(
    Id INT IDENTITY PRIMARY KEY,
    Name VARCHAR(250) NOT NULL,
    Telephone VARCHAR(15) NOT Null
);

CREATE Table Visit
(
    Id INT IDENTITY PRIMARY KEY,
    VisitDate DATETIME2 Not NULL,
    [Address] VARCHAR(500) NOT NULL,
    VisitorId INT NOT NULL,
    CONSTRAINT FK_Visit_VisitorId FOREIGN KEY (VisitorId) REFERENCES Employee (Id)
);

INSERT into Employee (Name, Telephone)
VALUES ('John Doe', '123456789'),
('Jane Smith', '999555333');

INSERT INTO Visit (VisitDate, Address, VisitorId)
VALUES (SYSDATETIME(), '123 Fake St', 1), …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2 change-tracking change-data-capture

7
推荐指数
1
解决办法
1358
查看次数

作业未触发时发出警报

我的服务器上有一个 Sql 作业,它每晚从远程服务器触发(一旦它完成了备份)。

我已成功配置作业以在失败时通知我,但我想设置警报以在作业触发时通知我。即当远程服务器无法触发我的工作时。

这可能吗?我查看了设置,所有警报等都与作业失败/成功时有关。

我可以将作业设置为在完成时发出警报(无论状态如何),我一开始就是这样做的(我一开始就是这样做的),但我宁愿不收到连续的电子邮件(毕竟,我可能只是开始忽略它们)。

sql-server sql-server-2008-r2 jobs alerts

4
推荐指数
1
解决办法
1887
查看次数

多视图查询优化

我们有一个怪物视图,其中包含与许多(许多)表的联接,以便返回所需的数据。在某些情况下,为了获取一列信息,我们必须连接到 4 个表,只是为了获取我们需要的值(数据库结构不是很好,我们无法更改它)。

为了提高性能,我提取了某些组件并将它们构建到自己的视图中,以简化执行计划,并希望优化查询。

如果我编写一个将这些视图连接在一起的查询,我是否会失去每个视图的查询优化的好处?即,我最终会回到开始的地方,将视图组合成单个选择,还是因为它们彼此原子地起作用,所以它本身会表现得更好?

sql-server optimization sql-server-2000 view

2
推荐指数
1
解决办法
1505
查看次数