跳转至主内容

 none
Interruzione di esecuzione di una query eseguita su un linked server RRS feed

  • 问题

  • Ciao a tutti,

    sto operando da un database SQL 2017 in lettura verso un altro database SQL 2016 ubicato su un altro server mediante un linked server. Le query vengono eseguite tramite OPENQUERY con successo e non vi sono particolari problemi di esecuzione.

    Saltuariamente però alcune query si interrompono con la seguente segnalazione di errore:

    Il provider OLE DB "SQLNCLI11" per il server collegato "<linkedservername>" ha segnalato un errore. L'esecuzione è stata interrotta dal provider perché è stato raggiunto il numero di risorse massimo

    Vorrei innanzitutto capire se il problema dipenda da un limite impostato sul motore SQL del server collegato (come mi pare di intuire) o da un limite del provider definito sul mio motore SQL.

    Chiaramente, mi piacerebbe capire come poterlo risolvere (o quali indicazioni dare a chi gestisce l'altro server per poterlo risolvere).

    Grazie in anticipo

    2019年10月19日 11:24

答案

  • Ciao Alessandro,

    probabilmente l'errore che viene restituito dal Server è l'error message 7399.

    Se è così, stiamo ricevendo un messaggio di errore generico restituito dal provider, che indica che c'è stato un problema. Per avere maggiori informazioni sull'errore e sulle cause che lo hanno generato, potresti valutare l'attivazione del Trace Flag 7300 che permetterà di avere informazioni più dettagliate dal provider.

    Sospetto ci sia un errore di Time Out dietro le quinte, in questo articolo trovi maggiori informazioni:

    Error message when you execute a linked server query in SQL Server: "Timeout Expired"

    Dopo aver verificato che effettivamente la query incontra un timeout, modificherei l'opzione "Query Timeout" del Linked Server, qui trovi maggiori informazioni:

    Linked Server Properties (Server Options Page)

     

    Detto questo, quante righe restituisce tipicamente la query? Quanto è veloce e affidabile la connessione di rete tra i due Server?

    E' possibile che, ogni tanto, in funzione di alcuni valori/parametri venga restituito un data-set di dimensioni elevate e che questo impieghi troppo tempo per il trasferimento (oltre al tempo necessario per l'estrazione dei dati richiesti dalla query).

    Facci sapere come va a finire! :)

    Ciao!


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn

    2019年10月20日 16:52
    版主

全部回复

  • Ciao Alessandro,

    probabilmente l'errore che viene restituito dal Server è l'error message 7399.

    Se è così, stiamo ricevendo un messaggio di errore generico restituito dal provider, che indica che c'è stato un problema. Per avere maggiori informazioni sull'errore e sulle cause che lo hanno generato, potresti valutare l'attivazione del Trace Flag 7300 che permetterà di avere informazioni più dettagliate dal provider.

    Sospetto ci sia un errore di Time Out dietro le quinte, in questo articolo trovi maggiori informazioni:

    Error message when you execute a linked server query in SQL Server: "Timeout Expired"

    Dopo aver verificato che effettivamente la query incontra un timeout, modificherei l'opzione "Query Timeout" del Linked Server, qui trovi maggiori informazioni:

    Linked Server Properties (Server Options Page)

     

    Detto questo, quante righe restituisce tipicamente la query? Quanto è veloce e affidabile la connessione di rete tra i due Server?

    E' possibile che, ogni tanto, in funzione di alcuni valori/parametri venga restituito un data-set di dimensioni elevate e che questo impieghi troppo tempo per il trasferimento (oltre al tempo necessario per l'estrazione dei dati richiesti dalla query).

    Facci sapere come va a finire! :)

    Ciao!


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn

    2019年10月20日 16:52
    版主
  • Grazie della indicazione Sergio, sicuramente provo a verificare con il trace flag 7300 se è davvero un errore di timeout.

    La query restituisce da qualche migliaio a qualche decina di migliaia di righe. L'elaborazione di norma ci mette qualche secondo (lato mio) per ottenere i risultati. La connessione di rete tra i due server è stabile e performante. Quello che non so (e ho il sospetto che abbia qualche problema) è la configurazione di SQL server sul server remoto a cui mi collego.
    Comunque, approfondisco e ti faccio sapere.

    2019年10月21日 14:40