Para fins de relatório, preciso poder consultar dependências entre exibições e tabelas subjacentes no nível da coluna (via sys.sql_expression_dependencies
).
Uma maneira de fazer com que o SQL Server armazene colunas referenciadas é usar exibições com limite de esquema. Como alguns de meus usuários também criarão exibições, gostaria de aplicá-las. Tanto quanto eu vi, não é possível permitir que apenas visualizações com schemabinding sejam criadas dentro de um banco de dados do SQL Server (embora isso pareça um requisito legítimo para mim).
Existem outras maneiras de forçar o SQL Server a controlar quais colunas estão sendo referenciadas por quais exibições? Ou existe uma maneira oculta de impor exibições de schemabound no SQL Server?
Muito fácil de fazer com um gatilho DDL em seu banco de dados:
Você pode usar um gatilho DDL para isso. Infelizmente
SCHEMABINDING
não é um atributo naEVENTDATA
estrutura, então você tem que construir o nome do objeto e verificar uma propriedade usando isso:Outro método seria usar uma política. Criei uma política de exemplo usando o seguinte script gerado pelo SSMS e funcionou.
Claro, meu entendimento é que ele é aplicado usando gatilhos de qualquer maneira, mas pode ser mais fácil gerenciar dessa maneira. Além disso, se você tiver várias instâncias, poderá usar um CMS (Central Management Server) para impor a política em todas ou algumas de suas instâncias.