CORRECÇÃO: Erro 7359 quando executa uma consulta contra uma função definida pelo utilizador ou uma vista que utiliza um sinónimo de um servidor ligado em SQL Server 2005, SQL Server 2008 ou SQL Server 2008 R2

Aplica-se a: Microsoft SQL Server 2005 Service Pack 3Microsoft SQL Server 2005 Service Pack 4SQL Server 2008 Service Pack 2

A Microsoft distribui Microsoft SQL Server 2005, Microsoft SQL Server 2008 e Microsoft SQL Server 2008 R2 correcções como um ficheiro para transferência. Uma vez que as correcções são cumulativas, cada nova versão inclui todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2005, Microsoft SQL Server 2008 e do SQL Server 2008 R2 anterior.A correcção descrita neste artigo está disponível para as seguintes versões do SQL Server:
  • Microsoft SQL Server 2005 Service Pack 3 (SP3)
  • Microsoft SQL Server 2005 Service Pack 4 (SP4)
  • Microsoft SQL Server 2008 Service Pack 1 (SP1)
  • Microsoft SQL Server 2008 Service Pack 2 (SP2)

Sintomas


Considere o seguinte cenário:
  • Criar um servidor ligado num computador que esteja a executar o Microsoft SQL Server 2005, o Microsoft SQL Server 2008 ou o Microsoft SQL Server 2008 R2. O servidor ligado aponta para uma origem de dados OLE DB num servidor remoto.
  • Criar um sinónimo para uma tabela no servidor ligado.
  • Criar uma função definida pelo utilizador que utiliza o sinónimo ou criar uma vista que utilize o sinónimo. Em seguida, executar uma consulta contra a função definida pelo utilizador ou a vista.Nota Quando executa a consulta, um plano de execução é colocado em cache.
  • Efectuar uma operação num servidor remoto para actualizar a versão de esquema da tabela no servidor ligado. Por exemplo, reconstruir o índice da tabela no servidor remoto para actualizar a versão de esquema da tabela no servidor ligado.
  • Outra consulta pode executar a função definida pelo utilizador ou na vista.
Neste cenário, recebe uma mensagem de erro semelhante à seguinte:
Servidor: Msg 7359, nível de Número de nívelde estado Número de estado, linha Número da linhado fornecedor de OLE DB "nome do fornecedor" para o servidor ligado "nome do servidor ligado" comunicou uma alteração na versão de esquema entre tempo de compilação (" Tempo de compilação") e execute a hora ("Tempo de execução") para a tabela"nome da tabela ligada".
NotaNome do fornecedor é um marcador de posição que representa o nome do fornecedor de OLE DB. Nome da tabela ligada é um marcador de posição que representa o nome da tabela que se encontra no servidor ligado.

Causa


Este problema ocorre porque o plano de execução existentes não é limpo correctamente. Isto faz com que a versão de esquema alterar, uma vez que a função definida pelo utilizador ou a vista é novamente compilada quando a segunda consulta é executada. Por conseguinte, o erro ocorre.

Resolução


Informações de actualização cumulativa

SQL Server 2008 R2 Service Pack 1

A correcção deste problema publicada pela primeira vez em 1 de actualização cumulativa para o SQL Server 2008 R2 Service Pack 1. Para mais informações sobre como obter este pacote de actualização cumulativa, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2544793 Pacote de actualização cumulativa 1 para SQL Server 2008 R2 Service Pack 1
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2008 R2 anterior. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. 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 Cria o SQL Server 2008 R2 que foram disponibilizadas após o lançamento do SQL Server 2008 R2 Service Pack 1

SQL Server 2008 R2

A correcção deste problema publicada pela primeira vez na actualização cumulativa 7. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008 R2, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2507770 Pacote de actualização cumulativa 7 para SQL Server 2008 R2
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2008 R2 anterior. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:
981356 Cria o SQL Server 2008 R2 que foram disponibilizadas após o lançamento do SQL Server 2008 R2

Para o SQL Server 2005 SP3

A correcção para este problema foi primeiro disponibilizada em 15 de actualização cumulativa. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2005 SP3, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2507766 Pacote de actualização cumulativa 15 para SQL Server 2005 SP3
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2005 SP3 anterior. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:
960598 Cria o SQL Server 2005 que foram disponibilizadas após o lançamento do SQL Server 2005 SP3

Para o SQL Server 2005 SP4

A correcção deste problema publicada pela primeira vez na actualização cumulativa 3. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2005 SP4, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2507769 Pacote de actualização cumulativa 3 para SQL Server 2005 SP4
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2005 SP4 anteriores. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:
937137 Cria o SQL Server 2005 que foram disponibilizadas após o lançamento do SQL Server 2005 SP4

Para o SQL Server 2008 SP1

A correcção para este problema foi primeiro disponibilizada em 13 de actualização cumulativa. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008 SP1, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2497673 Pacote de actualização cumulativa 13 para o SQL Server 2008 SP1
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2008 SP1 anterior. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:
970365 Cria o SQL Server 2008 que foram disponibilizadas após o lançamento do SQL Server 2008 SP1

Para o SQL Server 2008 SP2

A correcção deste problema publicada pela primeira vez na actualização cumulativa 3. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008 SP2, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2498535 Pacote de actualização cumulativa 3 para SQL Server 2008 SP2
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2008 SP2 anterior. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:
2402659 Cria o SQL Server 2008 que foram disponibilizadas após o lançamento do SQL Server 2008 SP2

Estado


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

Mais Informações


Para mais informações sobre como utilizar o Transact-SQL para criar um sinónimo, visite o seguinte Web site da Microsoft Developer Network (MSDN):