Obtendo informações sobre Permissões de Logins e Usuários no Microsoft SQL Server 2008 e R2.


Galera, boa tarde, tudo em paz?

Estive um pouco ausente nos últimos dias devido aos meus compromissos profissionais e acadêmicos, o que acabou impossibilitando manter o mesmo ritmo de posts em meu blog. Mesmo assim, consegui um tempinho para elaborar mais este artigo, que a meu ver poderá ajudar muito.

Então vamos lá, espero que você goste.

Pois bem, acredito que normalmente em suas atividades diárias você deve ter se deparado com a necessidade de identificar permissões relacionadas:

  • Database Roles;
  • Logins;
  • Usuários; e
  • Server Roles.

Pensando justamente neste tipo de necessidade, coletei alguns Scripts que utilizo para compor a estrutura deste artigo, a fim de ilustrar e demonstrar como podemos através de linha de comando no Management Studio encontrar valiosas informações.

Antes de começar a demonstrar como estes Scripts podem ser utilizados e quais suas respectivas funcionalidades, quero destacar a relação de Catalog Views que iremos trabalhar.

Segue abaixo a relação de Catalog Views:

  • sys.database_permissions: Retorna uma linha para cada permissão ou permissão de exceção de coluna no banco de dados. Para colunas, há uma linha para cada permissão que é diferente da permissão de nível de objeto correspondente.
  • sys.database_principals: Retorna uma linha com o conjunto de permissões para cada Banco de Dados existente na Instância SQL Server.
  • sys.database_role_members: Retorna uma linha para cada membro existente nas Database Roles vinculadas aos Bancos de Dados existentes na Instância SQL Server.
  • sys.schemas: Apresenta uma linha para cada Database Schema vinculadas aos Bancos de Dados existentes na Instância SQL Server.
  • sys.server_principals: Contém uma linha para cada entidade (Usuário do Windows, Login SQL, Grupo de Usuário do Windows, Server Role, etc) de nível de servidor.
  • sys.server_role_members: Apresenta uma linha para cada membro existente nas Server Roles vinculadas ao Servidor ou Instância SQL Server.
  • sys.syslogins: Contém uma linha para cada conta de Login existente no Servidor ou Instância SQL Server.
  • sys.sysobjects: Contém uma linha para cada objeto existente em Banco de Dados, como: Constraints, Rule, Stored Procedures, etc.

Observações:

Importante destacar que todas estas Catalog Views, foram introduzidas a partir da versão do Microsoft SLQ Server 2005, com base, nas antigas System Views existentes no Microsoft SQL Server 2000.

Além disso, algumas destas Catalog Views, como por exemplo: Sys.Server_Principals requer um nível de permissão mais elevado dentro da Instância SQL Server que você se encontra conectado.

Muito bem, agora que já sabemos os objetos que vamos utilizar como mecanismos para obtenção das informações que necessitamos, vamos começar a trabalhar um pouco com os Scripts.

Para este artigo separei três Scripts denominados:

  1. Script – User Role List and Login Type;
  2. Script – Database Login and User Role List; e
  3. Script – User Role Permissions – Grantor, Object Permissions and Permissions Type.

Vou começar seguindo a seqüência que destaquei acima, apresentando o Script que lista ás Roles de Usuários e Tipos de Logins, vinculados a instância ou servidor SQL Server que você esta conectado.

1 – Script – User Role List and Login Type:

SELECT

          CASE

           WHEN SSPs2.name IS NULL THEN ‘Public’

           ELSE SSPs2.name

          END AS ‘Role Name’,

          SSPs.name AS ‘Login Name’,

          Case SSPs.is_disabled

           When 0 Then ‘0 – Habilitado’

           When 1 Then ‘1 – Desabilitado’

          End AS ‘Login Status’,

          SSPs.type_desc AS ‘Login Type’

FROM sys.server_principals SSPs LEFT JOIN sys.server_role_members SSRM

                                                       ON SSPs.principal_id  = SSRM.member_principal_id

                                                      LEFT JOIN sys.server_principals SSPs2

                                                       ON SSRM.role_principal_id = SSPs2.principal_id

WHERE SSPs2.name IS NOT NULL

OR SSPs.type_desc <> ‘CERTIFICATE_MAPPED_LOGIN’

AND SSPs.type_desc <> ‘SERVER_ROLE’

AND SSPs2.name IS NULL

ORDER BY SSPs2.name DESC, SSPs.name

Vale ressaltar que o ponto principal deste código, encontra-se na Junção entre as Catalog Views apresentando acima, onde estamos, realizando a junção, entre a Sys.Server_Principals e Sys.Server_Role_Members, tendo como condição as Colunas Principal_ID e Member_Principal_ID respectivamente.

Além disso, outro fator importante relaciona-se a cláusula Where, responsável em realizar o filtro de dados, através da coluna Type_Desc pertencente a Sys.Server_Principals, garantindo assim o retorno das principals relacionadas somente aos: Logins, Server Roles, Windows Group e Windows Login. Sendo assim, após executar o Script, temos o resultado apresentado abaixo pela Figura 1:

Figura 1 – Relação de Roles, Logins, Status e Tipos de Logins.

Agora, vamos trabalhar com o Script – Database Login and User Role List, responsável em apresentar a relação de Roles, Login e Usuário, vinculados ao Banco de Dados ao qual você esta executando este Script.

2.      Script – Database Login and User Role List:

With Roles (Role, Login, [User])

As

(SELECT SDPs2.name AS Role,

               SDPs1.name AS  [User],

               SL.name AS Login

FROM [Master].sys.database_principals SDPs1

                                              Inner JOIN [Master].sys.syslogins SL

                                                  ON SDPs1.sid = SL.sid  

                                              Inner JOIN [Master].sys.database_role_members SRM

                                                  ON SRM.member_principal_id = SDPs1.principal_id

                                                Inner JOIN [Master].sys.database_principals p2

                                                  ON SRM.role_principal_id = SDPs2.principal_id

                                                  AND SDPs2.type IN (‘R’)

WHERE SDPs1.type IN (‘S’,’U’,’G’))

Select * from Roles

ORDER BY Role, Login

Se compararmos o tamanho deste segundo script em relação ao primeiro, podemos observar que o nível de complexidade é maior, devido à quantidade de junções realizadas, entre as Catalog Views:

  • Sys.Database_Principals e Sys.SysLogin;
  • Sys.Database_Principals e Sys.Database_Role_Members; e
  • Sys.Database_Role_Members e Sys.Database_Principals.

Outro detalhe importante no último Join está sendo utilizado o operador And na coluna Type forçando o filtro de dados, retornando somente a Database Role. Em contra partida a cláusula Where declarada abaixo esta filtrando as Databases Roles do Tipo: SQL User, Windows User e Windows Group.

Além disso, podemos também notar a utilização de uma CTE (Common Table Expression) como um mecanismo que poderá nos possibilitar a reutilização do código de forma mais elegante.

Ao realizarmos a execução deste teremos um resultado similar ao apresentado pela Figura 2:

Figura 2 – Role, Login e Usuário.

Bem, estamos quase no final, esta faltando apresentar o último Script, denominado Script – User Role Permissions – Grantor, Object Permissions and Permissions Type. Neste último Script teremos o retorno do Nome do Usuário, Conjunto de Permissões, Permissões por Objeto, Grantor e o Tipo da Permissão.

3.      Script – User Role Permissions – Grantor, Object Permissions and Permissions Type.

SELECT SDPs1.name AS [User],

            SDBPs.permission_name AS [Permissions],

             ISNULL(SDBPs.class_desc,”) COLLATE latin1_general_cs_as +     

 ISNULL(‘:’+SO.name,”) COLLATE latin1_general_cs_as   +  ISNULL(‘:’+SC.name,”) COLLATE latin1_general_cs_as As PermissionObjetct,

            SDPs.name as Grantor,

            SDBPs.state_desc AS PermissionType

FROM [Master].sys.database_permissions SDBPs

                                                INNER JOIN  [Master].sys.database_principals  SDPs

                                                on SDBPs.grantor_principal_id=SDPs.principal_id

 INNER JOIN  [Master].sys.database_principals SDPs1

  on SDBPs.grantee_principal_id=SDPs1.principal_id

                                              LEFT OUTER JOIN [Master].sys.sysobjects SO

                                               on SDBPs.major_id=SO.id and SDBPs.class =1

                                              LEFT OUTER JOIN [Master].sys.schemas  SC

                                               on SDBPs.major_id=SC.[schema_id]

WHERE SDPs1.name IN (‘public’)

And SDBPs.permission_name NOT IN(‘CONNECT’)

ORDER BY User, Permissions, PermissionObjetct

Boa parte das Catalog Views apresentadas como começo do artigo é utilizada neste terceiro script no processo de junção, onde podemos identificar as seguintes junções:

  • Sys.Database_Permissions e Sys.Database_Principals;
  • Sys.Database_Principals e Sys.Database_Principals;
  • Sys.Database_Principals e Sys.SysObjects; e
  • Sys.Database_Principals e Sys.Schemas.

Da mesma forma que os outros Scripts, também podemos notar a utilizar da cláusula Where e outros operadores lógicos e condicionais como mecanismos de filtragem de dados. Se observarmos na cláusula Where está sendo filtrada as permissões pelo nome do usuário, neste caso, o Public em conjunto com o nome da permissão neste tipo Connect.

Ao executarmos este Script poderemos receber um retorno similar ao apresentado na Figura 3:

Figura 3 – Relação de Usuários e suas Permissões.

Neste momento, chegamos ao final de mais um artigo. Espero que as informações e exemplos apresentados aqui possam te ajudar.

Fique a vontade para deixar seu comentário e compartilhar este material com seus contatos.

Mais uma vez obrigado.

Até mais.

5 motivos para desenvolver aplicativos do Windows 8


São Paulo – O Windows 8, novo sistema operacional da Microsoft, chegou com muitas mudanças: como uma nova interface e a ausência do botão Iniciar. As novidades, dizem os especialistas, exigirão mudanças em programas antigos e novos.

Eles precisarão ser adaptados para a nova interface. Ou seja, os desenvolvedores especializados em Windows terão de reescrever ou fazer pequenas alterações em suas aplicações (ou de empresas). As mudanças serão mais importantes ainda naqueles aplicativos que serão submetidos a Windows Store, loja virtual da Microsoft.

Esse, contudo, não é o único motivo para os desenvolvedores apostarem nesse segmento. Conheça, agora, cinco outros. Para criar esta lista, a INFO contou com a ajuda de Christiano de Souza Donke, desenvolvedor na plataforma de trânsito MapLink, e Paulo Iudicibus, diretor de novas tecnologias e inovação da Microsoft.

1 – Compatibilidade – Segundo Iudicibus, a Microsoft planeja ativar o Windows 8 em mais de 400 milhões de aparelhos até outubro de 2013. “É possível ultrapassar esta quantidade porque a Microsoft planejou a interface do Windows 8 com enfoque em computadores, ultrabooks com diferentes tamanhos de tela, dispositivos equipados com e sem teclado e também aparelhos com tela sensível ao toque. Até o momento, há mais de mil aparelhos certificados pela empresa que são compatíveis com o sistema operacional”, comenta.

2 – Diferentes linguagens – Os programas criados para rodar no Windows 8 aceitam diferentes linguagem. Os desenvolvedores com conhecimentos em diferentes tecnologias terão facilidade em desenvolver aplicações para o Windows 8, de acordo com Donke. “Esta versão facilitou o desenvolvimento de apps. É possível, por exemplo, usar os recursos oferecidos pelo HTML5 e C++ em um mesmo projeto”, diz o desenvolvedor.

Já Iudicibus afirma que também é possível reaproveitar o código do aplicativo criado inicialmente para Windows 8 em um mesmo projeto para o sistema operacional móvel Windows Phone.

3 – Novo visual – A Microsoft pede ao desenvolvedor que siga as diretrizes de layout do novo sistema operacional. Ainda de acordo com Donke, este método “padronizará” o visual do Windows 8 e das aplicações compatíveis com esta plataforma. “Os profissionais devem seguir as regras que definem a fonte, a cor do botão e a posição de cada uma das funcionalidades”, comenta.

Donke comenta que esta mudança é positiva para o desenvolvedor, uma vez que um visual padrão facilita o desenvolvimento do projeto. “O botão compartilhar estará sempre no mesmo lugar em todas as aplicações. Da mesma maneira ocorre se o usuário quer imprimir um documento. O desenvolvedor dispensa a preocupação de escolher o melhor local para exibir cada funcionalidade. É só implementar e usar”, explica.

4 – Segurança – A Microsoft criou uma loja virtual de aplicativos para o Windows 8 chamada Windows Store. Segundo Donke, a empresa possui controle de qualidade para validar a aplicação antes de publicar cada um dos projetos. “A aprovação leva, em média, uma semana”. Ainda de acordo com o desenvolvedor, este método diminuirá, por exemplo, a distribuição de software infectado por vírus.

Já o executivo da Microsoft afirma que a loja virtual foi criada com o objetivo de mostrar ao profissional o estado de cada etapa de distribuição do aplicativo. “O desenvolvedor consegue acompanhar todas as etapas. Não é um sistema fechado e ainda ajuda a evitar a pirataria. Além disso, evita conteúdos ofensivos e promove a alta qualidade da loja”, comenta.

5 – Suporte – O site da Microsoft fornece todo o conteúdo necessário para criar uma aplicação compatível com o Windows 8. É possível baixar gratuitamente, por exemplo, um pacote com 200 exemplos de códigos, o Kit de Desenvolvimento de Software (sigla SDK, em inglês), componentes de design para aplicativos estilo Metro, livros digitais grátis e participar de um treinamento sobre design de experiência de usuário.

Além disso, o site oficial da empresa possui um tutorial que ensina a divulgar a aplicação na Windows Store, a loja virtual de apps da Microsoft.

Segundo Iudicibus, a Microsoft fornece também webcasts e templates prontos para criar, por exemplo, apps de notícias e jogos. A empresa também promove treinamentos em 16 centros em diferentes regiões e promove os hackathons, competições hacker de desenvolvimento. “Há também a Microsoft Virtual Academy com treinamentos em português sobre programação”, diz.

Fontes e Direitos Autorais: , de INFO Online • Segunda-feira, 26 de novembro de 2012 – 09h07.

Windows Phone 7.8 deve chegar nesta semana, diz site


São Paulo – A Microsoft deve liberar a atualização de sua plataforma móvel para a versão Windows Phone 7.8 na próxima quarta-feira, 28. As informações são do site WMPoweruser.

Segundo o site, fontes internas da Microsoft afirmaram que a atualização para o  Windows Phone 7.8 será liberada esta semana e trará aos dispositivos algumas características encontradas no Windows Phone 8, como uma nova tela inicial, tela de bloqueio com busca habilitada pelo Bing e permissão para deixar o Wi-Fi ativo em dispositivos Nokia que estiverem em modo suspenso.

Devido a limitações no hardware, aparelhos Windows Phone 7 e 7.5 não podem ser atualizados para a nova versão do sistema, o Windows Phone 8.

A versão Windows Phone 7.8 foi a solução encontrada pela Microsoft para atualizar os antigos aparelhos com algumas das novas características do Windows Phone 8, como a interface renovada da tela inicial.

Rumores recentes também apontam que a Microsoft poderá manter a atualização dos aparelhos com Windows Phone 7.8 de forma constante, evitando assim uma aposentadoria precoce destes dispositivos.

Fontes e Direitos Autorais: , de INFO Online • Segunda-feira, 26 de novembro de 2012 – 11h33.

MS libera por engano autenticação para Windows 8 pirata


São Paulo – Quando a cópia final do Windows 8 vazou na web em meados de agosto, crackers trabalharam para obter acesso à tecnologia de ativação da Microsoft.

As tentativas envolveram o uso dos servidores Key Management Services (KMS) para ativar uma cópia do Windows 8 por 180 dias, requerendo uma reativação a cada seis meses.

Esta manobra dos crackers permitiu a utilização do Windows 8 pirata temporariamente, mas um engano da Microsoft pode ter facilitado ainda mais o uso do novo sistema sem a necessidade de pagar por uma chave de autenticação.

A Microsoft divulgou um plano de upgrade do Media Center para usuários do Windows 8 Pro até 31 de janeiro de 2013. E os crackers descobriram que a chave fornecida pela empresa autentica a cópia pirata do sistema que até então estava sendo utilizada com uma chave KMS temporária.

O aparente engano da empresa significa que crackers podem baixar uma cópia pirata do Windows 8, temporariamente ativá-la pelo KMS e então realizar o upgrade para uma cópia original e completa do sistema.

O site Windows Wave, que identificou a falha, testou e verificou a veracidade do upgrade. A Microsoft até o momento não comentou o erro e a oferta continua disponível para versões piratas do Windows 8.

A pirataria envolvendo a última versão do Windows era esperada. A Microsoft sofre com as cópias ilegais desde as primeiras versões do sistema. E a empresa vem tomando iniciativas, aparentemente por engano, para combater a pirataria e migrar sua base de usuários para o novo sistema.

Recentemente usuários também relataram que o upgrade para o Windows 8 Pro pode ser feito em computadores que rodam uma versão pirata do Windows 7, Vista ou XP.

Fonte e Direitos Autorais: , de INFO Online • Quarta-feira, 21 de novembro de 2012 – 11h27.

4 estratégias de manipulação no trabalho e como fugir delas


Imagens de Adolf Hitler em exposição: quando a falta de objetividade entra em cena, uma estratégia de manipulação pode estar em curso
São Paulo – Quase que por definição, a vida corporativa (independente do setor e cargo) é tecida por negociações. E isso sempre implica em ceder algumas vezes, ganhar em outras. Quando elas são feitas com base em argumentos, você cresce na carreira.

O problema está quando a emoção, as informações evasivas ou falsas entram em cena. Consciente ou inconscientemente, você assume o papel de vítima ou criador de uma manipulação.

“Argumentar é uma arte difícil, não seduz todo mundo”, afirma Marie-Josette Brauer. Lançar mão de estratégias que impulsionem o outro a fazer o que você quer tende a ser mais fácil. Porém, quase nunca é a opção mais ética.

Aprenda quais são as estratégias de manipulação mais comuns e qual o comportamento para se esquivar de cada uma delas:

Estratégia de manipulação

1 – Favores em cascata – Uma das estratégias mais comuns de manipulação, segundo Marie-Josette, é pedir um favor mais simples e, assim que ele for cumprido, pedir outro. É mais ou menos assim: “A pessoa pede para o outro digitar um relatório. Dali, meia hora a atividade está pronta e, diante disso, é feito outro pedido”, exemplifica. Sem ter muito como contra argumentar, a “vítima” acaba aceitando o novo pedido.

 

2 – O impossível que induz ao sim – Colocar o outro em uma clássica “sinuca de bico” é outra estratégia clássica usada no ambiente corporativo.

O chefe chega e sugere uma missão impossível (como trabalhar no fim de semana para colocar tudo em dia). Você responde que não pode. Em resposta, ele pede o que realmente queria: o prolongamento do expediente atual. Sem ter como responder um outro não, você aceita – sem maiores ressalvas.

“A pessoa pede uma coisa impossível para então pedir pelo que realmente quer. Desse jeito, não há como você recusar”, descreve a especialista.

 

3 – Perguntas que impelem para um sim automático – A armadilha psicológica é até simples: o manipulador faz um tiroteio de perguntas que necessariamente pressupõem um sim para, depois, pedir um favor. O resultado é certeiro: “É muito difícil depois de responder vários ‘sim’ dizer um ‘não’”, afirma a especialista.

 

4 – Colocar medo para depois trazer o “alívio” – Uma das metáforas mais clássicas para manipuladores é a imagem de um lobo em pele de cordeiro. E a figura não é gratuita. Para ter o que quer, manipuladores tendem a cercar suas vítimas de medos para, então, oferecer uma proposta que ofereça ‘alívio’ e proteção contra o terror – que eles mesmos instalaram.

Ao longo da história, diversos governos totalitários se valeram desta tática para dominar populações inteiras. Da mesma forma que industrias, todos os dias, nos bombardeiam com informações ditas científicas para vender este ou aquele produto.

No mundo corporativo, a estratégia também é comum – apesar de mais sutil. Imagine a seguinte cena: você chega sempre atrasado ao trabalho. Seu chefe direto há muito tempo está incomodado com este hábito, mas não quer se indispor com você. Então, inventa que o chefe do chefe dele reclamou dos seus horários e que você deveria ficar esperto. Com medo de ser demitido, queimar sua reputação ou outros desvarios corporativos, você entra no papo dele e nunca mais perde hora.

 

Como escapar

“A manipulação acontece quando existem agendas ocultas. Quando um lado tem um interesse que não está explicito, nem exposto”, afirma o coach Homero Reis. Por isso, a principal estratégia para driblar uma estratégia de manipulação é confrontar o manipulador com perguntas que exijam clareza de intenções e argumentos.

Afinal, uma das bases da manipulação é a falta de objetividade. “A pessoa diz que fala, mas não fala. Diz e desdiz”, descreve Reis. Diante de um discurso manco e emocional assim, o antidoto mais eficaz é manter-se firme e claro – em seus interesses e questionamentos. Não fique em cima do muro, nem se deixe levar. “A manipulação nunca se sustenta diante da assertividade e de uma conversa clara”, afirma o especialista.

Fontes e Direitos Autorais: , de EXAME.com • Quinta-feira, 22 de novembro de 2012 – 10h36

Material de Apoio – Novembro de 2012.


Salve, Salve Comunidade.

Estou de volta com mais uma relação de arquivos que podem ajudar em suas atividades diárias, vocês poderam encontrar códigos de exemplo sobre:

  • Criação de Tabelas;

  • Criando Common Table Expression;

  • Identificando a quantidade de Casas Decimais;

  • Identificando Transações em Cache no Plano de Execução;

  • Trabalhando com Stored Procedure e Variáveis;

  • Realizando Testes de Erro com o comando @@Error;

  • Refazendo a Número do comando Identity;

  • Utilizando Constrainst na criação de tabelas; e

  • Utilizando GetDate em conjunto com Stored Procedures.

Todos os arquivos listados nesta relação foram renomeados com a extensão .doc por questões de compatibilidade com a Plataforma do WordPress.com. Segue abaixo a relação de Arquivos:

Fique a vontade para compartilhar com os seus contatos.

Mais uma vez obrigado por sua visita.

Até mais.

SQL Server 2012 Build List


Pessoal, bom dia.

Como vocês já devem estar sabendo, foi lançado nos últimos dias o Service Pack 1 para o Microsoft SQL Server 2012, com isso, temos mais uma mudança na versão final do Build.

Com base no artigo do Steve Jones, segue abaixo a Lista de Evoluções do Build do SQL Server 2012, desde o CTP3 até o Service Pack 1.

Major Builds

Build KB Article Title Description
11.0.3000 2674319         Service Pack 1         The first service pack for SQL Server 2012.
11.0.2100         RTM         Release of Manufacturing of SQL Server 2012         The first public, supported version of SQL Server 2012

Observe que os Service Packs incluem todas as compilações abaixo desse nível de Service Pack. Assim qualquer compilações listadas abaixo Serviço Pack 1 estão incluídas no Service Pack 1.

Build KB Article URL Description
11.00.1103   CTP1
11.00.1440   CTP3
11.00.1750   RC 0
11.00.1913   RC1
11.00.2100   RTM
11.00.2214 2685308 http://support.microsoft.com/kb/2685308/ Fix
11.00.2316 2679368 http://support.microsoft.com/kb/2679368/en-us CU 1
11.0.2325 2703275 http://support.microsoft.com/kb/2703275 CU2
11.0.2332 2723749 support.microsoft.com/kb/2723749 CU 3
11.0.2383 2758687 support.microsoft.com/kb/2758687 CU 4

Aqueles abaixo de Service Pack 2 (incluindo o Service Pack 1), estão incluídas no SP2, etc. Hotfixes pode ou não incluir atualizações abaixo deles porque há duas árvores de código. As atualizações cumulativas inclui todos os hotfixes antes deles.

Vale ressaltar que esta não é uma lista final e podemos encontrar outras Build Lists, em algumas listas não são consideradas as evoluções de Build após aplição de Hotfixs.

Fontes e Direitos Autorais: Steve Jones,     2012/11/12 (first published: 2012/04/17).