Por que é importante usar exibições do SQL Server com suporte com relatórios SCCM?

Enquanto eu estava no Midwest Management Summit no Mall of America (MMSMOA) em maio, o tópico de exibições com suporte do SQL Server surgiu. Alguém mencionou uma maneira fácil de converter consultas WQL em consultas SQL. Essa “dica”, no entanto, não criava visualizações com suporte do SQL Server e nem todos pareciam perceber que era uma má ideia. Para esclarecer melhor esse tópico, estou fornecendo alguns antecedentes neste post sobre por que você só deve usar visualizações com suporte do SQL Server e, mais importante, o que acontece quando você não as usa.

Se você quiser ver quais visualizações e funções do SQL Server são suportadas pela equipe de produto SCCM, dê uma olhada nesta postagem do blog que publiquei logo após o MMSMOA, “Quais são as exibições do SQL Server com suporte para usar com os relatórios SCCM?

Por que as exibições do SQL Server com suporte são importantes?

Existem três razões principais pelas quais você sempre deseja usar as visualizações e funções do SQL Server com suporte e deve evitar as não suportadas com os relatórios do System Center Configuration Manager (SCCM).

Eles estão:

1. Bloqueio de transação

2. Concessão de permissões dbo aos usuários

3. Alterando Permissões em uma Tabela / Visualização / Etc.

Bloqueio de transação

O SCCM armazena dados no banco de dados do SQL Server e um problema que pode surgir quando os dados são acessados do banco de dados do SQL Server é chamado de “Bloqueio de transação”. Por que isso é importante para um administrador SCCM e, em particular, para os relatórios SCCM? Esta é a resposta simples: quando uma consulta do SQL Server sem suporte é executada para um relatório, ele cria um bloqueio na tabela que está sendo consultada. Este bloqueio PODE bloquear o próprio SCCM de atualizar ou inserir dados no banco de dados, ou pode até mesmo bloquear outras consultas.

Para obter mais informações, consulte este Stack Overflow publicar, Noções básicas sobre LOCKS do SQL Server em consultas SELECT.

Os documentos Microsoft (consulte o link abaixo) também são bons para explicar esse problema:

Em qualquer banco de dados, o gerenciamento incorreto de transações geralmente leva a problemas de contenção e desempenho em sistemas que possuem muitos usuários. À medida que aumenta o número de usuários que acessam os dados, torna-se importante ter aplicativos que usem as transações de forma eficiente.

Mais tarde, sob Noções básicas de bloqueio e controle de versão de linha, os documentos dizem:

Cada transação solicita bloqueios de diferentes tipos nos recursos, como linhas, páginas ou tabelas, dos quais a transação depende. Os bloqueios impedem que outras transações modifiquem os recursos de uma forma que causaria problemas para a transação que solicita o bloqueio. Cada transação libera seus bloqueios quando não tem mais uma dependência dos recursos bloqueados.

Em suma, tudo isso quer dizer que duas consultas não podem usar o mesmo objeto ao mesmo tempo. Para obter mais detalhes, consulte os documentos Microsoft SQL Server: Guia de bloqueio de transações e controle de versão de linha.

Solução de bloqueio de transação

Para resolver esse problema (Bloqueio de transação), a equipe SCCM usa a dica de consulta (Nolock) nas visualizações do SQL Server com suporte. A dica de consulta (Nolock) evita que esse problema ocorra.

Permissões

Isso já aconteceu com você antes? Você cria um relatório com visualizações não suportadas do SQL Server, testa-o e, em seguida, carrega-o no seu site SSRS. Funciona bem para você, então você entrega o relatório a outra pessoa e, “uh-oh”, eles o executam e recebem a seguinte mensagem:

  • Ocorreu um erro durante o processamento do relatório. (rsProcessingAborted)
    • A execução da consulta falhou para o conjunto de dados 'DataSet1'. (rsErrorExecutingCommand)
      • A permissão SELECT foi negada no objeto 'vSMS_Advertisement', banco de dados 'CM_CB1', esquema 'dbo'.

Depois de determinar que é um problema de permissão, você executa uma das duas ideias ruins. Você também conceder permissões dbo a um usuário ou alterar as permissões em uma tabela / visão / etc.

Concessão de permissões de DBO a um usuário

Por padrão, apenas as contas do proprietário do banco de dados (DBO) ou do Administrador do sistema (SA) no SQL Server têm acesso a todos os objetos do banco de dados. Visto que visualizações, funções, etc. não suportadas do SQL Server não têm permissões atribuídas a eles, apenas contas designadas como DBO ou SA podem acessar os dados dessas visualizações, tabelas, etc. Portanto, se você quiser que um usuário com direitos baixos veja o dados dentro das visualizações, tabelas, etc. uma de suas opções é conceder a eles direitos SA ou DBO no banco de dados.

Obviamente, esta é uma má ideia devido aos riscos de segurança inerentes. A única “vantagem” é que este método não tem efeito quando SCCM é atualizado para uma versão superior em uma data posterior.

Exibições do SQL Server com suporte - Permissões

Alterando permissões em uma tabela, exibição, etc.

Sua outra opção é menos arriscada, mas ainda tem problemas de segurança associados a ela. Você pode simplesmente ajustar as permissões “selecionar” ou “executar” nas visualizações, tabelas, etc. Embora este método seja menos perigoso para a segurança, ele pode impedi-lo de atualizar para uma versão mais recente do SCCM em uma data posterior. Por quê? A edição do banco de dados SCCM não é suportada. Além disso, você realmente deseja alterar as permissões em todas as visualizações, tabelas, etc., que deseja usar?

Exibições do SQL Server com suporte

Quais são os benefícios de usar visualizações e funções com suporte do SQL Server com relatórios SCCM? Além de evitar os problemas de permissão e bloqueio de transação mencionados, aqui estão mais alguns motivos:

· Administração baseada em funções (RBA). Você pode aproveitar o RBA para consultas. Isso significa que se alguém não deveria ver os dados, com um relatório RBA, eles não os veriam!

· Ajustes de desempenho. O Microsoft está se esforçando muito atualmente para ajustar o SQL Server, de modo que o desempenho é mais rápido e melhor! Nesse sentido, eles estão apenas atualizando as exibições do SQL Server com suporte. Por falar nisso, as funções RBA são onde eles estão colocando a maior parte de seu esforço. Você pode ver o que quero dizer neste post, “Consultas RBA e não RBA: quando é mais lento realmente mais rápido?

Quais visualizações e funções do SQL Server são suportadas pelo Microsoft? A resposta curta é qualquer objeto SQL Server com permissões “selecionar” ou “executar” atribuídas à função smsschm_users. Para a lista completa, veja minha postagem no blog, “Quais são as exibições do SQL Server com suporte para usar com relatórios SCCM? ”

Se você tiver alguma dúvida sobre as visualizações e funções do SQL Server com suporte, sinta-se à vontade para entrar em contato comigo em @GarthMJ.

Veja como Right Click Tools está mudando a forma como os sistemas são gerenciados.

Aumente imediatamente a produtividade com o nosso limitado e gratuito, Community Edition.

Comece com Right Click Tools hoje:

Compartilhar isso:

Suporte

  • Este campo é para fins de validação e não deve ser alterado.

Contato

  • Este campo é para fins de validação e não deve ser alterado.

Ao enviar este formulário, você entende que o Recast Software pode processar seus dados conforme descrito no Recast Software Política de Privacidade.

pt_BRPortuguese