Come correggere l'errore del client nativo "La connessione è occupata con i risultati di un altro comando"?

StackOverflow https://stackoverflow.com/questions/39928

  •  09-06-2019
  •  | 
  •  

Domanda

Sto ricevendo un Connection Busy With Results From Another Command errore da un driver SQLServer Native Client quando è in esecuzione un pacchetto SSIS.Solo quando si parla con SQLServer 2000.Una parte diversa che comunica con SQLServer 2005 sembra funzionare sempre bene.qualche idea?

È stato utile?

Soluzione

Articolo della Knowledge Base di Microsoft 822668 è rilevante qui:

AGGIUSTARE:Il messaggio di errore "La connessione è occupata con i risultati di un altro comando" viene visualizzato quando si esegue una query sul server collegato

Sintomi

In condizioni di stress, potresti ricevere il seguente messaggio di errore quando si esegue l'attività del server collegato:

Server: Msg 7399, Level 16, State 1, Procedure <storedProcedureName>, Line 18 OLE DB provider 'SQLOLEDB' reported an error. 
OLE/DB Provider 'SQLOLEDB' ::GetSchemaLock returned 0x80004005:

OLE DB provider SQLOLEDB supported the Schema Lock interface, but returned 0x80004005 for GetSchemaLock .]. 
OLE/DB provider returned message: Connection is busy with results for another command 
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ::CreateSession returned 0x80004005.

Nota L'origine OLE DB dell'errore può variare.Tuttavia, tutte le varianti del messaggio di errore includono il testo "La connessione è occupata con risultati per un altro comando".

Risoluzione

Per risolvere questo problema, ottenere il service pack più recente per Microsoft SQL Server 2000.

Come notato lì, il problema è stato corretto per la prima volta in SQL Server 2000 Service Pack 4.

Questo post sul blog di Mark Meyerovich, Senior Software Engineer presso RDA Corp, fornisce anche alcuni spunti (ora archiviati, perché il collegamento originale è morto):

Aggiornamento del service pack di SQL Server

Una rapida ricerca su Google restituisce il seguente articolo (http://support.microsoft.com/kb/822668):AGGIUSTARE:Il messaggio di errore "La connessione è occupata con i risultati di un altro comando" viene visualizzato quando si esegue una query sul server collegato.

Sostanzialmente implica che il problema sia un bug e consiglia un aggiornamento al Service Pack 4.Abbiamo iniziato con SQL Server 2000 SP3 e abbiamo alcuni server collegati nell'equazione, quindi proviamolo.Dopo l'aggiornamento a SP4 – stesso risultato.

Altri suggerimenti

Come ho appena scoperto, questo può accadere anche su SQL 2005 se non hai MARS abilitato.Non sapevo nemmeno che fosse disabilitato per impostazione predefinita, ma lo è.E assicurati di utilizzare il tipo di connessione "Native OLEDB SQL Native Client".Se stai utilizzando la connessione di tipo "OLEDB.1" (o qualsiasi altra cosa...) MARS non è nemmeno un'opzione e ottieni il comportamento SQL 2000, che è sgradevole.

È possibile abilitare MARS aprendo le proprietà della connessione, facendo clic su "Tutto" e scorrendo verso il basso in Management Studio.

So che la tua domanda ha già avuto risposta da tempo, ma la sto semplicemente lanciando per il prossimo idiota come me che ne rimarrà scottato.

Si è verificato questo errore oggi con la connessione MS ODBC Driver 11 per SQL Server per Linux a SQL Server.Volevo aiutare il prossimo ricercatore considerando che questo era il primo risultato di ricerca di Google quando ho effettuato la ricerca.

È necessario impostare MARS_Connection in /etc/odbc.ini come segue:

[ConnName]
Driver=ODBC Driver 11 for SQL Server
Server=192.168.2.218,1433
Database=DBNameHere
MARS_Connection=yes

A proposito del driver MS ODBC Linux:È un vero peccato affrontarlo, ma ho insistito per utilizzare la soluzione nativa.Ho riscontrato troppi muri, soprattutto lavorando con ZF2, tuttavia, posso dire che ogni problema ha una soluzione con il driver.Giusto per incoraggiare le persone che lo utilizzano invece ad arrendersi rapidamente.

Se qualcuno ha riscontrato questo fastidioso bug durante l'utilizzo di PHP PDO con ODBC, utilizza closeCursor() metodo dopo l'esecuzione della query.

Solo per informazione se qualcun altro ha il problema.Ho provato a connettermi tramite NetCobol di Fujitsu su un SQLEXPRESS tramite ODBC con sql incorporato e per risolvere il problema ho dovuto modificare un valore nel registro ovvero

\HKLM\Software\ODBC\ODBC.INI\MyDSN

con MyDSN come valore stringa:

Name - MARS_Connection
Value - Yes

Ho appena messo le informazioni qui se possono aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top