seiti.eti.br

programming & gadgets


by seiti tt seiti

O MS SQL Management Studio (SMS) é uma ferramenta excelente para gerenciar seus bancos de dados. Isto não quer dizer que ele não tenha seus problemas.

O pior deles é que, ao se tentar listar os bancos de dados do sistema, e você não tiver permissão para visualizar um deles, o SMS graciosamente te apresentará esta mensagem de erro:

Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)

Additional information:
An exception occured while executing a Transact-SQL statement or batch.
(Microsoft.SqlServer.ConnectionInfo)
The server principal “Seiti” is not able to access the database “AlgumBanco” under the current security context. (Microsoft SQL Server, Error: 916)

Como então listar os bancos de dados? Não sou o único nem serei o último a enfrentar este problema, então é claro que alguém já blogou sobre isto e o resolveu, inclusive mais de uma pessoa.

O problema consiste-se nas informações que são apresentadas no Object Explorer Details – para visualizá-lo tecle F7. Note as colunas que existem na visualização padrão: Name, Policy Health State, Recovery Model, Compatibilty Level , Collation *e Owner*.

Observe a coluna Collation. O SMS lista os bancos e verifica as informações que devem constar no Object Explorer Details.  Você não tem permissão sobre um dos bancos listados. Mas para saber o collation do banco deve-se ter permissões sobre o mesmo. O SMS entra em pânico, interrompe tudo, deixa de fazer o que deveria e mostra a mensagem de erro acima. Simples.

Como resolver? Clique com o direito sobre os nones das colunas e remova o Collation. O SMS ficará feliz da vida e fará o que devia fazer.