sql-server – 阻止SQL Server Management Studio中的视图阻止查询编辑器

前端之家收集整理的这篇文章主要介绍了sql-server – 阻止SQL Server Management Studio中的视图阻止查询编辑器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql Server Management Studio中使用视图时,我更喜欢将视图编写为ALTER语句,进行更改,正确格式化代码后执行语句.但是,有时当我编写一个我之前使用过的视图时,我的格式化会丢失,并且我看到我的视图中添加了大量扩展属性.

从此我收集到,其他人一直在使用SSMS查询编辑器(设计者)来编辑视图,这很烦人,因为它完全破坏了我的格式.

有没有办法阻止用户使用设计器来改变SSMS中的视图?理想情况下,某些数据库设置,但也可能是一些阻止设计者打开视图的黑客攻击.

实用的方法只是与用户交谈,让他们停止使用设计师,但我担心老习惯会很难,我不想再花一分钟重新格式化我已经多次格式化的代码

解决方法

没有一种强有力的方法可以做到这一点.

添加设计者不支持但不改变语义的构造可能是一种可能性

WHERE (1 = (SELECT ROW_NUMBER() OVER (ORDER BY @@SPID)))

但它并没有真正起作用.打开视图时,您会看到该消息

sql text cannot be represented in the grid pane and diagram pane.

并且这些窗格是空白的,但sql窗格仍然出现并包含重新格式化的sql以进行编辑.此外,上述还存在以负面方式改变执行计划的风险.

另一种方法可能是创建DDL触发器.

我在设计器和查询窗口中看到的默认program_name字符串是“Microsoft sql Server Management Studio”和“Microsoft sql Server Management Studio – Query”,因此您可以使用.

CREATE TRIGGER NoAlterViewFromSSMS 
ON DATABASE 
FOR ALTER_VIEW
AS 
   IF APP_NAME() = 'Microsoft sql Server Management Studio'
   BEGIN
       RAISERROR ('Please don''t use the designer to ALTER views',16,1)
       ROLLBACK
   END
GO

但是,直到他们试图挽救并且你的同事可能非常恼火时才会开火.管理工作室使用的AppName无论如何都是可配置的,所以这也可以被规避.

我能想到的唯一另一个选择是在Connect网站上搜索阻止设计者打开的错误(我依稀记得一个有嵌套注释语法的错误),但即使你找到一个你有风险,他们将被修复未来的服务包.

猜你在找的MsSQL相关文章