ID do artigo: 956031 - Última revisão: quarta-feira, 8 de abril de 2009 - Revisão: 3.0

CORRECÇÃO: Mensagem de erro quando estimar a compactação em uma tabela no SQL Server 2008: "Subconsulta retornou mais de 1 valor"

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Bug #: 50003626 (Hotfix do SQL)
A Microsoft distribui correções do Microsoft SQL Server 2008 como um arquivo para download. Como as correções são cumulativas, cada versão nova contém todos os hotfixes e todas as correções segurança que foram incluídas com o SQL Server 2008 anteriores corrigir lançamento.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Quando você usa o procedimento sp_estimate_data_compression_savings armazenados em uma tabela que tenha uma chave primária que não estão em cluster e um ou mais índices que não estão em cluster no Microsoft SQL Server 2008, você receberá a seguinte mensagem de erro:
Msg 512, nível 16, estado 1, procedimento sp_estimate_data_compression_savings, 251 de linha
Subconsulta retornou mais de 1 valor. Isso não é permitido quando a subconsulta segue =,! =, <, < =, >, > = ou quando a subconsulta é usada como expressão.
Embora você receber essa mensagem de erro, o resultado é retornado. No entanto, as estimativas de compactação para alguns índices que não estão em cluster são incorretas.

Esse problema ocorre se existe um índice de cluster ou não.

Resolução

Informações sobre o service pack

Para resolver esse problema, obtenha o service pack mais recente para o SQL Server 2008. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
968382  (http://support.microsoft.com/kb/968382/ ) Como obter o service pack mais recente para o SQL Server 2008

Informações da atualização cumulativa

A correção para esse problema foi lançada primeiro na atualização cumulativa 2. Para obter mais informações sobre como obter esse pacote de atualizações cumulativas para o SQL Server 2008, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
958186  (http://support.microsoft.com/kb/958186/ ) Pacote de atualizações cumulativas 2 do SQL Server 2008
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e todas as correções segurança que foram incluídas com o SQL Server 2008 anteriores corrigir lançamento. Recomendamos que você considere a aplicação a versão de correção mais recente que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
956909  (http://support.microsoft.com/kb/956909/ ) O SQL Server 2008 compilações que lançadas foram após o lançamento SQL Server 2008 foi lançado

Como Contornar

Para contornar este problema, especifique @ index_id parâmetro quando você executa sp_estimate_data_compression_savings procedimento armazenado. Você deve executar o procedimento armazenado uma vez para cada índice para o qual você deseja calcular.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a". Esse problema foi corrigido primeiro no SQL Server 2008 Service Pack 1.

Mais Informações

O procedimento sp_estimate_data_compression_savings armazenado é usado para retornar o tamanho atual de tabelas. O procedimento sp_estimate_data_compression_savings armazenados também estima o tamanho da tabela para o estado de compactação solicitada.

Etapas para reproduzir o problema

  1. Inicie o SQL Server Management Studio e, em seguida, conecte-se a uma instância do SQL Server 2008.
  2. Crie uma nova consulta e, em seguida, execute as seguintes instruções.
    CREATE DATABASE TEST
    GO
    USE Test
    GO
    
    CREATE TABLE REPRO(i int primary key nonclustered, a int)
    GO
    
    CREATE NONCLUSTERED INDEX NONCLUSTERED_REPRO ON REPRO(a)
    GO
    
    EXEC SP_ESTIMATE_DATA_COMPRESSION_SAVINGS @schema_name = 'dbo', @object_name = 'repro', @index_id = NULL, @partition_number = NULL, @data_compression = 'PAGE'
    
Para mais informações sobre quais arquivos são alterados e para obter informações sobre quaisquer pré-requisitos para aplicar o pacote de atualização cumulativa que contém o hotfix descrito neste artigo, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
958186  (http://support.microsoft.com/kb/958186/LN/ ) Pacote de atualizações cumulativas 2 do SQL Server 2008

Referências

Para obter mais informações sobre a lista de compilações disponibilizadas após o lançamento do SQL Server 2008, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
956909  (http://support.microsoft.com/kb/956909/ ) O SQL Server 2008 compilações que lançadas foram após o lançamento SQL Server 2008 foi lançado
Para obter mais informações sobre o modelo incremental de serviços para o SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
935897  (http://support.microsoft.com/kb/935897/ ) Há um modelo incremental de serviços da equipe do SQL Server para fornecer hotfixes para problemas relatados
Para obter mais informações sobre o esquema para nomeação para atualizações do SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
822499  (http://support.microsoft.com/kb/822499/ ) Novo esquema para nomeação para pacotes de atualização de software do Microsoft SQL Server
Para obter mais informações sobre terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684  (http://support.microsoft.com/kb/824684/ ) Descrição da terminologia padrão que é usada para descrever as atualizações de software

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Standard
Palavras-chave: 
kbmt sql2008relnotedatabaseengine sql2008relnote kbbug kbqfe kbfix kbexpertiseadvanced kbprb KB956031 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 956031  (http://support.microsoft.com/kb/956031/en-us/ )