usar texto studio servidor realizar puede predictivo otro management funciona equipo disable desde crear consultas conectarse conectar como sql-server tsql sql-server-2008-r2 ssms

sql-server - texto - realizar consultas en sql server management studio



Block Query Editor altera las vistas en SQL Server Management Studio (3)

El nombre de la aplicación del servidor sql cuando utiliza la consulta para modificar su vista, es Microsoft SQL Server Management Studio - Query Nombre de la aplicación y el nombre de la aplicación del servidor sql cuando usa el diseñador para modificar su vista es Microsoft SQL Server Management Studio .

Puede organizar el ALTER_VIEW DDL para ALTER_VIEW para verificar APP_Name() y limitar a su usuario a usar la consulta en lugar del diseñador.

CREATE TRIGGER LimitUseDesignerForView ON DATABASE FOR ALTER_VIEW AS IF APP_NAME() = ''Microsoft SQL Server Management Studio'' BEGIN RAISERROR (''Use query in order to alter your view'',16, 1) ROLLBACK END GO

También puede obtener una lista de vistas de servidor sql que usan el diseñador siguiendo la siguiente consulta:

SELECT DISTINCT OBJECT_NAME(ep.major_id) FROM sys.extended_properties ep WHERE ep.name LIKE ''MS_DiagramPane%''

Sugiero que no limites a tu usuario por APP_NAME() porque el usuario puede usar la aplicación de herramientas para usar el diseñador de vistas como EMS, etc.

Puede limitar a sus usuarios mediante el uso de la función DDL_EXTENDED_PROPERTY_EVENTS DDL trigger.

CREATE TRIGGER LimitUseDesignerForView ON DATABASE FOR DDL_EXTENDED_PROPERTY_EVENTS AS IF (EVENTDATA().value(''(/EVENT_INSTANCE/Parameters/Param)[1]'',''nvarchar(max)'') LIKE ''MS_DiagramPane%'') BEGIN RAISERROR (''Use query in order to alter your view'',16, 1) ROLLBACK End GO

Cuando trabajo con vistas en SQL Server Management Studio, prefiero guiar las vistas en ALTER-statements, hacer mis cambios, formatear mi código correctamente y luego ejecutar la declaración. Sin embargo, a veces, cuando script una vista con la que he estado trabajando anteriormente, mi formato se pierde y veo un montón de propiedades extendidas agregadas a mi vista.

De esto me doy cuenta que alguien más ha estado usando el editor de consultas SSMS (diseñador) para editar la vista, lo cual es molesto ya que rompe completamente mi formateo.

¿Hay alguna forma de evitar que los usuarios usen el diseñador para modificar las vistas en SSMS? Lo ideal sería alguna configuración de base de datos, pero alternativamente, algún truco que evitaría que el diseñador abriera la vista.

El enfoque pragmático sería simplemente hablar con los usuarios y hacer que dejen de usar el diseñador, pero me temo que los viejos hábitos son difíciles de usar, y no quiero pasar un minuto más formateando el código que ya he formateado muchas veces antes ...


Quizás pueda revocar el permiso Alter Schema a los usuarios, esto debería evitar que ejecuten ALTER View statements.

Puede dar permiso de ALTER SCHEMA a otro usuario y permitirse suplantar, luego use EXECUTE AS para actualizar su vista:

GRANT ALTER ON SCHEMA :: dbo TO user2; REVOKE ALTER ON SCHEMA :: dbo TO user1; GRANT IMPERSONATE ON USER:: user2 TO user1; -- Alter view script EXECUTE AS USER = ''user2''; ALTER VIEW ...... EXECUTE AS USER = ''user1'';


No, no hay una forma robusta de hacer esto.

Agregar construcciones que el diseñador no admite pero que no cambian la semántica podría ser una posibilidad

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

Sin embargo, realmente no funciona. Al abrir la vista, verá el mensaje

El texto SQL no se puede representar en el panel de cuadrícula y el panel de diagrama.

y estos paneles están en blanco, pero el panel SQL aún aparece y contiene el SQL reformateado para su edición. También lo anterior tiene el riesgo de cambiar el plan de ejecución de una manera negativa también.

Otro enfoque podría ser crear un disparador DDL.

Las cadenas predeterminadas de program_name que veo para el diseñador frente a una ventana de consulta son "Microsoft SQL Server Management Studio" y "Microsoft SQL Server Management Studio - Query" para que pueda usar.

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

Pero esto no se disparará hasta que intenten salvar y sus compañeros de trabajo podrían estar muy molestos. El AppName utilizado por el estudio de gestión es configurable de todos modos, por lo que también podría evitarse.

La única otra opción que puedo pensar sería buscar en el sitio de Connect errores que impidan que el diseñador se abra (recuerdo vagamente uno con sintaxis de comentarios anidados) pero incluso si encuentra uno corre el riesgo de que se solucionen en una paquete de servicio futuro.