temos uma janela de manutenção de terça/quinta-feira para um aplicativo ao qual oferecemos suporte. Às terças-feiras, modificamos uma instalação e na quinta-feira, se não houver erros, transferimos todas as alterações para as outras instalações. O aplicativo é de terceiros e, às vezes, faz alterações nos bancos de dados que tornam as exibições inválidas em nosso servidor de "relatórios" para o aplicativo.
Existe uma maneira de percorrer todas as exibições em meu servidor de relatório (existem cerca de 70 delas) com TSQL para encontrar os erros de vinculação após o depósito de terças-feiras?
Os erros que gostaria de encontrar são:
Executado como usuário: <>. Não foi possível preparar a(s) declaração(ões). [SQLSTATE 42000] (Erro 8180) Não foi possível usar a exibição ou a função 'PAT.dbo.Reorders' devido a erros de vinculação. [SQLSTATE 42000] (Erro 4413) Todas as consultas combinadas usando um operador UNION, INTERSECT ou EXCEPT devem ter um número igual de expressões em suas listas de destino. [SQLSTATE 42000] (Erro 205). A etapa falhou.
Existe uma maneira de fazer isso programaticamente ou apenas tenho que continuar clicando com o botão direito em cada exibição e tentando ver se ela volta com dados?
Obrigado,
Algo como o seguinte deve ser bom o suficiente para você começar. Deve ser bastante leve também.
Você pode gerar
SELECT
instruções para todas as visualizações em um banco de dados e apenas executar os resultados:SELECT 'SELECT * FROM dbo.' + name from sys.sysobjects WHERE type = 'V'
Que deve retornar
Para todas as exibições no banco de dados atual. Personalize conforme necessário para um esquema ou colunas diferentes
SELECT
para evitar o retorno de grandes conjuntos de dados.