SQL Server 兼容级别是否引入了旧的安全漏洞

Sur*_*DBA 5 sql-server t-sql compatibility-level

任何人都可以帮助解决我认为是一个简单的问题。

一位 DBA 朋友和我讨论了一般的兼容性级别,特别是它们与安全性的关系。他认为,使它们尽可能最新的一个很好的理由是减少由它们引起的安全漏洞。我反驳说,以前的 SP 和当前的 CU 和修补程序肯定会修补这些漏洞,即在 2014 SQL Server 实例中以 2005 兼容模式运行数据库肯定不会将该数据库恢复到 2005 SP4 安全级别/漏洞。

我一直在寻找支持此声明的文档,但一直找不到。有没有人知道任何权威文档可以告诉我正确或错误?

Low*_*n M 6

它不会引入过去的漏洞,主要适用于 T-SQL 语法和 T-SQL 功能。正如文档所述

兼容性级别仅影响指定数据库的行为,而不影响整个服务器的行为。兼容性级别仅提供与早期版本的 SQL Server 的部分向后兼容性。

稍后文档继续列出每种模式之间的差异,您将不会看到安全性或修补程序的提及,而只是将不同实施或不可用的功能/行为。

漏洞利用通常发生在服务器和数据库引擎级别,因此这不是真正的问题。如果我总是对我的 MSSQL 实例进行修补,但有一个数据库处于旧模式,并且永远无法利用我勤奋的修补工作,那将是一个相当大的安全风险。虽然这是让人们使用最新版本的好方法!

你可以说,使用老版本的语法约束旧T-SQL代码,可能导致一个使用变通,以粗暴达到一定的要求,而这又可能会导致代码更在风险具有脆弱性,但责任是开发人员,而没有任何 MSSQL 固有的东西。我什至想不出一个适用于此的例子,但我确信它们存在。