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?
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?
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?
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.
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?"