Grupo de trabalho do servidor MSSQL 2005.
Eu tenho um banco de dados que está servindo como um "Armazém" para outro banco de dados/aplicativo cobol mais antigo e mais lento.
Recentemente, movi o depósito de uma instância do SQL Server para uma nova instância, para manter o armazenamento que estou fazendo separado de outros bancos de dados de produção.
O problema que estou tendo me deixa perplexo. A tabela que tenho, como cópia do banco de dados antigo, possui, para o propósito desta questão, 4 campos: ID, LName, FName, MI, FullName - todos NÃO NULL. No servidor de relatório, tenho um campo calculado FullName: LastName, FName MI:
FullName = LName + ', ' + FName + ' ' + MI;
O que está acontecendo é que os nomes não estão se juntando consistentemente, e isso me deixou completamente perplexo.
DECLARE @ID int;
SET @ID = 1;
SELECT ID, 'LName' FName, LName Field FROM TABLE WHERE ID IN (@ID) UNION
SELECT ID, 'FName' FName, FName Field FROM TABLE WHERE ID IN (@ID) UNION
SELECT ID, 'MI' FName, MI Field FROM TABLE WHERE ID IN (@ID) UNION
SELECT ID, 'LFM' FName, LName + ', ' + FName + ' ' + MI Field FROM TABLE WHERE ID IN (@ID)
Isso gera o esperado:
1 FName Jack
1 MI T
1 LName Frost
1 LFM Frost, Jack T
Mas se eu mudar para um ID diferente, recebo:
2 FName Joe
2 MI E
2 LName Schmoe
2 LFM Schmoe
Não é um problema com nulos (Três campos possuem dados). Aparar, aglutinar, diferentes combinações de nome (LFM, MFL, LF, MF, etc) acabam iguais: Ou a pessoa tem nome completo... ou a pessoa tem o primeiro listado.
Que eu saiba, não tive esse problema na outra instância. A nova instância está no mesmo servidor.
Instância do servidor original: 2005 9.0.3042 Serv\SQL2005 Nova instância do servidor: 2005 9.0.1399 Serv\DataWarehouse
Observação: a consulta ao banco de dados "original" funciona conforme o esperado. A consulta em um relatório criado nesse warehouse funciona conforme o esperado.
Portanto, Banco de Dados Original > Data Warehouse > Relatório. Original funciona bem. Relatório funciona bem. Data warehouse não. Armazém e Relatório estão na mesma instância, mas em bancos de dados diferentes.
Com base em seus dados de amostra, os dados que você está realmente consultando ID = 1396779 são diferentes
Nenhuma quantidade de guarnições, isnulls, etc., mudará
Schmoe
paraFrost
ouJack
paraJoe
.Portanto, os dados são diferentes.
Caso contrário, você terá alguma confusão de banco de dados ou servidor acontecendo. Um relatório baseado no DataWarehouse não pode fornecer dados corretos se sua consulta ao DataWarehouse estiver errada.
Observe que um banco de dados cruzado Synonyms ou View, ou uma tabela em um esquema diferente (sua consulta não usa,
dbo.PCDB_VISIT
por exemplo) pode enganá-lo. Ou você tem algum alias de cliente que significa que você está apontando para o servidor errado do SSMS, mas o relatório está correto.Tente isso para ter certeza de que você está onde pensa que está
Faca no escuro:
O que isso traz para você?
Se eu definir resultados para texto, 50 caracteres por coluna e executar esta consulta, obtenho um comportamento semelhante: