我们如何跟踪SQL Server中的存储过程更改,如TFS中的版本控制

时间:2017-01-09 11:40:30

标签: sql sql-server sql-server-2012

我们在安全性方面存在一些问题,例如有权访问SQL Server的人在没有团队知识的情况下更改过程。因此,我们想知道谁在哪些时间和那些日志中从哪个PC做了任何更改。

是否有任何Microsoft工具或任何第三方软件用于此目的?

我尝试过Redgate SQL Compare,您可以使用它进行一些小比较。但它不会包含多种变体的所有版本控制或历史记录。

5 个答案:

答案 0 :(得分:3)

我建议将数据库对象保留在版本控制之下,而不是仅仅尝试在物理数据库中管理更改。这将允许您将源数据库更改提交到源代码管理以及代码更改并保留更改历史记录。

Microsoft为Visual Studio提供了源代码控制集成以及SQL Server数据工具以实现此目的。还有第三方产品,Red-Gate SQL Source Control和Apex Source Control,它们与SSMS和/或Visual Studio集成。这些产品提供了协调数据库更改的工具,但我们最终要由您的开发人员/ DBA正确使用这些工具,并遵循定义的流程来开发和促进对其他环境的更改。

答案 1 :(得分:3)

DLM Dashboard,一个来自Redgate的免费DDL触发器工具,是为解决这个问题而开发的。

我们开发了DLM仪表板,以维护对感兴趣的数据库(通常是生产)的更改的审计跟踪。

该工具向您显示进行更改的人员,更改时间以及更改内容的差异以及进行更改的SQL。您还可以设置警报,以便在检测到更改后立即通知您。

答案 2 :(得分:1)

  

是否有任何Microsoft工具......

是的,也可以使用TFS源代码控制来实现此目的。从Visual Studio模板创建DB Project并在该项目中包含所有过程。现在,您可以像处理应用程序代码一样跟踪更改(可能使用C#

答案 3 :(得分:1)

  

。因此,我们想知道在什么时间和那些日志中谁从哪台PC做了任何更改。

部分此类信息可从SQL Server内置的SMSS报告中获得。在SMSS中,右键单击受影响的数据库,然后选择“报告” - >“标准报告” - >“架构更改历史记录”。这将为您提供运行DDL操作的人员的DDL操作,时间,登录名和用户名。该报告无法向PC提供运行DDL的信息。

答案 4 :(得分:1)

如果您正在寻找针对SQL Server的强制源\版本控制 - 请查看dbmaestro

这是唯一一个锁定数据库以便在数据库级别进行更改的工具,因此即使使用命令行,您也需要在进行更改之前进行适当的检出,一旦签入,您就拥有了所有修订的完整历史记录。