Home > Articoli > Linked Server from SQL Server 2008 (x64) to SQL Server 2000 (x86)

Linked Server from SQL Server 2008 (x64) to SQL Server 2000 (x86)

Recentemente ho avuto l’occasione di svolgere alcune attività per la migrazione di un server presso uno dei nostri clienti; più precisamente è stato sostituito il server che ospitava il software di gestione del magazzino automatico e la relativa istanza SQL Server 2000.

Come avviene di solito in queste situazioni, non appena il nuovo server è on-line, prima del passaggio in produzione, tutte le persone interessate verificano la propria area di competenza… io mi sono occupato di verificare la comunicazione e i collegamenti tra la nuova istanza SQL Server 2008 Enterprise x64 e l’istanza SQL Server 2000 (x86) in funzione su un altro server di produzione, quello che ospita l’installazione del sistema ERP.

Uno dei linked server migrati dalla vecchia istanza SQL 2000 alla nuova istanza SQL 2008 Enterprise x64 non riusciva più a raggiungere il server linkato: ovvero l’istanza SQL 2000 (x86) del sistema ERP.

La query di test, riportata di seguito, non poteva essere eseguita:

SELECT * FROM [Linked_Server_Name].[Database_Name].[Schema_Name].[Table_Name]

Questo il messaggio di errore:

OLE DB provider “SQLNCLI10” for linked server “<Linked_Srv_Name>” returned message ” Unspecified error.”.

OLE DB provider “SQLNCLI10” for linked server “<Linked_Srv_Name>” returned message ” Cannot find the stored procedures necessary to complete this operation. Contact your system administrator.”.

Message 7311, level 16, state 2, row 1 Cannot obtain the schema rowset “DBSCHEMA_TABLES_INFO” for OLE DB provider “SQLNCLI10” for linked server “<Linked_Srv_Name>”. The provider supports the interface, but returns a failure code when it is used.

Il problema è noto e Microsoft descrive la soluzione in quest’articolo della KB:

http://support.microsoft.com/kb/906954/en-us

Riassumendo, l’articolo consiglia di eseguire manualmente lo script Instcat.sql sull’istanza puntata dal linked server, nel mio scenario sull’istanza SQL Server 2000 (x86) del sistema ERP in produzione!! Lo script Instcat.sql è incluso nelle cartelle d’installazione di SQL Server 2000 SP3 o SP4.

Contento di aver trovato la soluzione, ma al tempo stesso preoccupato per eventuali side-effect che potessero insorgere durante l’esecuzione dello script (il cliente rappresenta una delle nostre installazioni più critiche). Per maggior sicurezza ho voluto riprodurre l’errore in ambiente di test sul quale ho anche eseguito, senza problemi, lo script Instcat.sql.

Parallelamente, però, non ho smesso di cercare soluzioni alternative; di fatto, l’unica anomalia che avevo riscontrato era questo errore sul linked server…

Volete sapere com’è andata a finire?

Ho provato e applicato in produzione la soluzione descritta da Roman Rehak in questo post:

Issue with 64-bit SQL Server using SQL 2000 linked server

Alcune volte (e per fortuna che è così) la soluzione è più semplice di quanto immaginiamo, basta solo trovarla.

Chi è Sergio Govoni

Sergio Govoni è laureato in Scienze e Tecnologie Informatiche. Da oltre 16 anni lavora presso una software house che produce un noto sistema ERP, distribuito a livello nazionale ed internazionale, multi azienda client/server su piattaforma Win32. Attualmente si occupa di progettazione e analisi funzionale, coordina un team di sviluppo ed è responsabile tecnico di prodotto. Lavora con SQL Server dalla versione 7.0 e si è occupato d'implementazione e manutenzione di database relazionali in ambito gestionale, ottimizzazione delle prestazioni e problem solving. Nello staff di UGISS si dedica alla formazione e alla divulgazione in ambito SQL Server e tecnologie a esso collegate, scrivendo articoli e partecipando come speaker ai workshop e alle iniziative del primo e più importante User Group Italiano sulla tecnologia SQL Server. Ha conseguito la certificazione MCP, MCTS SQL Server. Per il suo contributo nelle comunità tecniche e per la condivisione della propria esperienza con altri, dal 2010 riceve il riconoscimento SQL Server MVP (Microsoft Most Valuable Professional). Nel corso dell'anno 2011 ha contribuito alla scrittura del libro SQL Server MVP Deep Dives Volume 2 (http://www.manning.com/delaney/).

Leggi Anche

Automazione delle attività di manutenzione in Azure SQL Database (2 Parte)

Introduzione Nell’articolo Automazione delle attività di manutenzione in Azure SQL Database abbiamo descritto le attività …