Iniciar sessão com a Microsoft
Iniciar sessão ou criar uma conta.
Olá,
Selecione uma conta diferente.
Tem várias contas
Selecione a conta com a qual pretende iniciar sessão.

A Microsoft distribui as correções do Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) como um ficheiro transferível. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção do SqL Server 2008 R2 Service Pack 1 (SP1).

Sintomas

Considere o seguinte cenário:

  • Tem uma coluna do tipo datatimeoffset de dados numa tabela no Microsoft SQL Server 2008 R2 ou no Microsoft SQL Server 2012.

  • Cria-se um índice na coluna datatimeoffset.

  • Converter o tipo de dados de datatimeoff para um tipo de dados de data de pequena data utilizando a função CAST ou CONVERT sem o argumento de estilo, ou quando o valor do argumento de estilo é 0.

  • O resultado da função CAST ou CONVERT é utilizado num filtro numa consulta Transact-SQL.

  • Você dirige a consulta Transact-SQL.

Neste cenário, o resultado devolvido pela consulta é incorreto porque o filtro não funciona corretamente. Por exemplo, assuma que a coluna datatimeoffset que é denominada "Data" contém os seguintes valores:

  • 2011-05-21 23:00:00 -01:00

  • 2011-05-21 23:00:00 +00:00

  • 2011-05-21 23:00:00 +01:00

Execute a seguinte consulta:

SELECT Date FROM TestTable WHERE CAST(Date AS smalldatetime)= '2011-05-21 23:00:00'

O resultado da consulta retorna apenas uma linha. No entanto, o resultado esperado deverá voltar a ser o resultado dos três valores.

Resolução

Informação de atualização cumulativa

SQL Server 2012

A correção para este problema foi lançada pela primeira vez na Cumulativa Update 3 para SQL Server 2012. Para obter mais informações sobre este pacote de atualização cumulativa, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

2723749 Pacote de atualização cumulativo 3 para SQL Server 2012Nota Como as construções são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção SQL Server 2012. A Microsoft recomenda que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2692828 O SQL Server 2012 constrói que foram lançados após o lançamento do SQL Server 2012 Deve aplicar um hotfix SQL Server 2012 a uma instalação do SQL Server 2012.

Sql Server 2008 R2 Service Pack 2

A correção para este problema foi lançada pela primeira vez na Cumulativa Update 1 para SQL Server 2008 R2 Service Pack 2. Para obter mais informações sobre como obter este pacote de atualização cumulativa, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

2720425 Pacote de atualização cumulativo 1 para SQL Server 2008 R2 Service Pack 2Nota Como as construções são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção R2008 do SQL Server 2008. Recomendamos que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2730301 O SQL Server 2008 R2 constrói que foram lançados após o lançamento do SQL Server 2008 R2 Service Pack 2

SQL Server 2008 R2 SP1

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 7. Para obter mais informações sobre como obter este pacote de atualização cumulativa para o SQL Server 2008 R2 Service Pack 1, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

2703282 Pacote de atualização cumulativo 7 para SQL Server 2008 R2 SP1Nota Como as construções são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção do SqL Server 2008 R2 Service Pack 1. Recomendamos que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2567616 O SQL Server 2008 R2 constrói que foram lançados após o lançamento do SQL Server 2008 R2 SP1

Mais Informações

Para reproduzir a questão, siga estes passos:

  1. Executar a seguinte consulta de modo a criar uma tabela com uma coluna de datatimeoffset e inserir alguns registos:CREATE TABLE #TestTimeZones (dto datetimeoffset(0)); GO INSERT INTO #TestTimeZones(dto) VALUES ('2011-05-21 23:00:00 -01:00'), ('2011-05-21 23:00:00 +00:00'), ('2011-05-21 23:00:00 +01:00'); GO

  2. Faça a seguinte consulta e poderá ver que os três valores estão corretamente listados no resultado devolvido:DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withoutIndex FROM #TestTimeZones WHERE CAST(dto AS smalldatetime)=@t;

  3. Executar a seguinte consulta de modo a criar um índice na coluna "dto" e repetir a mesma consulta:CREATE INDEX IX_testTimeZones_Dto ON #TestTimeZones(dto); GO -- Repeat the same query DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withIndex FROM #TestTimeZones WHERE CAST(dto A smalldatetime)=@t; GO

  4. Executar a consulta no passo 2 novamente. Desta vez, a consulta retorna apenas uma linha.

  5. Faça a seguinte consulta para eliminar o índice e a tabela que criou:DROP INDEX IX_testTimeZones_Dto ON #TestTimeZones; GO DROP TALBE #TestTimeZones; GO

Referências

Para obter mais informações sobre as funções CAST e CONVERT, aceda ao seguinte website da MSDN:

Informações gerais sobre as funções CAST e CONVERT no SQL Server

Estado

A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.

Estas informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?
Ao selecionar submeter, o seu feedback será utilizado para melhorar os produtos e serviços da Microsoft. O seu administrador de TI poderá recolher estes dados. Declaração de Privacidade.

Obrigado pelo seu feedback!

×