FIX: Eroare 7359 când executați o interogare împotriva o funcție definită de utilizator sau o vizualizare care utilizează un sinonim pe un server legat în SQL Server 2005, SQL Server 2008 sau SQL Server 2008 R2

Se aplică la: Microsoft SQL Server 2005 Service Pack 3Microsoft SQL Server 2005 Service Pack 4SQL Server 2008 Service Pack 2

Microsoft distribuie Microsoft SQL Server 2005, Microsoft SQL Server 2008 și Microsoft SQL Server 2008 R2 remediază ca un fișier descărcabil. Deoarece remedierile sunt cumulative, fiecare lansare nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în SQL Server 2005 anterior, Microsoft SQL Server 2008 și SQL Server 2008 R2 lansată.Fix care este descrisă în acest articol este disponibil pentru următoarele versiuni de 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)

Simptome


Să luăm în considerare următorul scenariu:
  • Creați un server legat pe un computer care execută Microsoft SQL Server 2005, Microsoft SQL Server 2008 sau Microsoft SQL Server 2008 R2. Punctele de server legat la o sursă de date OLE DB pe un server la distanță.
  • Creați un sinonim pentru un tabel pe server legat.
  • Creați o funcție definită de utilizator care utilizează sinonim sau creați o vizualizare care utilizează sinonim. Apoi, executați o interogare pentru funcția definite de utilizator sau vizualizarea.Notă Când executați interogarea, memorate în cache un plan de execuție.
  • Efectuați o operațiune pe un server la distanță pentru a actualiza versiunea de schemă a tabelului pe server legat. De exemplu, să reconstruiți indexul tabelul pe serverul la distanță pentru a actualiza versiunea de schemă a tabelului pe server legat.
  • Executați o altă interogare pentru funcția definite de utilizator sau vizualizarea.
În acest scenariu, primiți un mesaj de eroare asemănător cu următorul:
Server: Msg 7359 nivel, Numărul de nivel, stare Stare numărlinie Număr liniefurnizor OLE DB "nume furnizor" pentru server legat "nume de Server legat" a raportat o modificare în versiune schemă între compile time (" Compile Time") și executați time ("Executare timp") pentru tabel"nume de tabel legat".
NotăNume furnizor este un substituent care reprezintă numele de furnizorul OLE DB. Nume tabel legat este un substituent care reprezintă numele de tabel de pe server legat.

Cauză


Această problemă apare deoarece planul de executare existente nu este eliminat corect. Acest lucru determină versiunea de schemă pentru a modifica, deoarece funcția definite de utilizator sau vizualizarea este recompilat când se execută interogarea a doua. De aceea, se produce eroarea.

Rezolvare


Informații despre actualizarea cumulativă

SQL Server 2008 R2 Service Pack 1

Remedierea pentru această problemă a fost lansată prima dată în 1 de actualizare cumulativă pentru SQL Server 2008 R2 Service Pack 1. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
2544793 Pachetul de actualizare cumulativă 1 pentru SQL Server 2008 R2 Service Pack 1
Notă Deoarece compilările sunt cumulative, fiecare nouă lansare de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în anterioare SQL Server 2008 R2 lansată. Vă recomandăm să luaţi în considerare aplicarea celei mai recente lansări de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
2567616 SQL Server 2008 R2 se bazează pe care au fost lansate după lansarea SQL Server 2008 R2 Service Pack 1

SQL Server 2008 R2

Remedierea pentru această problemă a fost lansată prima dată în 7 de actualizare cumulativă. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2008 R2, faceţi clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
2507770 Pachetul de actualizare cumulativă 7 pentru SQL Server 2008 R2
Notă Deoarece compilările sunt cumulative, fiecare nouă lansare de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în anterioare SQL Server 2008 R2 lansată. Vă recomandăm să luaţi în considerare aplicarea celei mai recente lansări de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
981356 SQL Server 2008 R2 se bazează pe care au fost lansate după lansarea SQL Server 2008 R2

Pentru SQL Server 2005 SP3

Remedierea pentru această problemă a fost lansată prima dată în 15 de actualizare cumulativă. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2005 SP3, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
2507766 Pachetul de actualizare cumulativă 15 pentru SQL Server 2005 SP3
Notă Deoarece compilările sunt cumulative, fiecare nouă lansare de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în anterioare SQL Server 2005 SP3 lansată. Vă recomandăm să luaţi în considerare aplicarea celei mai recente lansări de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
960598 SQL Server 2005 compilările lansate după lansarea SQL Server 2005 SP3

Pentru SQL Server 2005 SP4

Remedierea pentru această problemă a fost lansată prima dată în actualizarea cumulativă 3. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2005 SP4, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
2507769 Pachetul de actualizare cumulativă 3 pentru SQL Server 2005 SP4
Notă Deoarece compilările sunt cumulative, fiecare nouă lansare de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în anterioare SQL Server 2005 SP4 lansată. Vă recomandăm să luaţi în considerare aplicarea celei mai recente lansări de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
937137 SQL Server 2005 compilările lansate după lansarea SQL Server 2005 SP4

Pentru SQL Server 2008 SP1

Remedierea pentru această problemă a fost lansată prima dată în 13 de actualizare cumulativă. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2008 SP1, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
2497673 Pachetul de actualizare cumulativă 13 pentru SQL Server 2008 SP1
Notă Deoarece compilările sunt cumulative, fiecare nouă lansare de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în anterioare SQL Server 2008 SP1 lansată. Vă recomandăm să luaţi în considerare aplicarea celei mai recente lansări de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
970365 Compilările SQL Server 2008 lansate după lansarea SQL Server 2008 SP1

Pentru SQL Server 2008 SP2

Remedierea pentru această problemă a fost lansată prima dată în actualizarea cumulativă 3. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2008 SP2, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
2498535 Pachetul de actualizare cumulativă 3 pentru SQL Server 2008 SP2
Notă Deoarece compilările sunt cumulative, fiecare nouă lansare de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în anterioare SQL Server 2008 SP2 lansată. Vă recomandăm să luaţi în considerare aplicarea celei mai recente lansări de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
2402659 Compilările SQL Server 2008 lansate după lansarea SQL Server 2008 SP2

Stare


Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.

Mai multe informații


Pentru mai multe informații despre cum se utilizează Transact-SQL pentru a crea un sinonim, vizitați următorul site Web Microsoft Developer Network (MSDN):