xp_logininfo retorna erro de agrupamento

2

Eu tenho um SQL Server de produção que é definido com bancos de dados do sistema como Latin1_General_CI_AS mas nem todos os bancos de dados do usuário são iguais, alguns criados com SQL_Latin1_General_CP1_CI_AS e vários outros - eles foram criados como parte de instalações de aplicativos de terceiros etc.

A execução do Exec xp_logininfo nesses bancos de dados causa um erro típico de COLLATION.

Existe alguma maneira de contornar isso? (copiar e recodificar xp_logininfo versões para agrupamentos alternativos? Alterar todos os dbs para ser mesmo agrupamento e sofrer fallout de aplicativos falhando ..?)

todos os pensamentos são apreciados.

Editar # 1 Eu estou tentando rever e, eventualmente, avançar para o gerenciamento de segurança e usuários / logins. Atualmente, se eu correr:

use DB1  
GO  
exec xp_logininfo  
go  
exec xp_logininfo 'domain\groupname'  
go  
exec xp_logininfo 'domain\username'  
go  

Eu recebo 3 conjuntos de dados, 1 uma lista de todos os usuários, 2 detalhes do acesso de grupos e 3 como (em virtude da participação em grupo) o login especificado acessa os dados no DB1

No entanto, se eu executar:

use DB2  
GO  
exec xp_logininfo   
go  
exec xp_logininfo 'domain\groupname'  
go  
exec xp_logininfo 'domain\username'  
go  

Eu recebo 3 x 'Não é possível resolver o conflito de intercalação entre "SQL_Latin1_General_CP1_CI_AS" ...'

DB1 tem agrupamento de Latin1_General_CI_AS
O DB2 tem o agrupamento de SQL_Latin1_General_CP1_CI_AS

todas as bases de dados do sistema são Latin1_General_CI_AS

espero que isso explique um pouco mais ...

Se alguém souber de uma boa ferramenta de auditoria de segurança, então é para onde estou indo. Eu tenho duas perguntas simples:
1 - Quem pode acessar esse banco de dados?
2 - Quais bancos de dados esse usuário pode acessar?

    
por Fatherjack 01.06.2009 / 16:45

3 respostas

3

Qual versão do SQL você está usando - não obtenho o problema no SQL 2005 com bancos de dados do sistema em Latin1_General_CI_AS e banco de dados ativo em SQL_Latin1_General_CP1_CI_AS. É específico para uma versão específica do SQL?

    
por 01.06.2009 / 19:02
3

Na verdade, recebo o mesmo problema no meu Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64). Então fiz alguns testes. Eu descobri se eu mudar o contexto do banco de dados para dominar-se, o erro não ocorre. Em seguida eu fiz um truque simples, em vez de chamar: EXEC xp_logininfo @CurrentUser Eu fiz: EXEC master.sys.xp_logininfo @CurrentUser e o erro NÃO ocorreu. Isso pode funcionar para você também, mesmo se você estiver em outra versão.

    
por 03.08.2012 / 15:37
2

Paijack,

Você poderia fornecer mais detalhes? Você está usando algum parâmetro com xp_logininfo? Você está rodando dentro de cada banco de dados? Além disso, qual é o objetivo final (ou seja, você está armazenando as informações em algum lugar, ou este é um aplicativo que está tentando executar o xp_logininfo?)

Pode haver uma solução alternativa com alguns outros processos do sistema, mas antes de sugerir algo, preciso saber mais sobre o que você está tentando realizar. hmmm ... eu acho que essa é a minha maneira de dizer "quais são os requisitos?"

    
por 01.06.2009 / 17:35