我目前正在使用 MSSQL 2008R2 数据库,它经常使用以下 SET 命令:
SET ANSI_NULLS { ON | OFF }
SET QUOTED_IDENTIFIER { ON | OFF }
SET ANSI_PADDING { ON | OFF }
在研究这些设置时,我在 Microsoft 技术网上偶然发现了以下关于 ANSI_NULLS 的注释(链接):
在 Microsoft SQL Server 的未来版本中,ANSI_PADDING 将始终为 ON,任何将该选项显式设置为 OFF 的应用程序都将产生错误。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。
因此,我想强制执行“全局”设置。我一直在寻找一天中的大部分时间,但据我了解,您可以随时更改这些设置。为了完全确定我想在这里问:
是否可以强制执行像 ANSI_NULLS ON 这样的设置,或者禁用在“任何”级别上更改这些设置的可能性。如果禁用将特定选项设置为 OFF 的能力,我想用它来测试数据库是否会“存活”。
我希望我能够描述我的问题。这不是我的母语。提前致谢。
PS:在 StackOverflow 上,我也被建议在这里问这个问题。原题:这里
没有办法强制执行全局设置或阻止人们跑步
如果您的应用程序正在使用任何已弃用的功能,您可以通过运行快速了解
如果您确实发现了关注的领域,那么您可以设置一个服务器端跟踪来捕获弃用事件。
这还会返回有问题的批处理的会话 ID 和 SQL 句柄,以便您在看到任何事件时可以进一步调查。
一种稍微复杂一些的方法是设置一个通知过程来更快地检索与 SQL 句柄关联的文本,以降低当您分析结果时违规 SQL 不再在缓存中的可能性。
或者您可以使用扩展事件来检索 TSQL 和事件。