Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sommario
Questo articolo illustra come verificare quale driver o provider ole DB (Object Linking and Embedding Database) per SQL Server è installato in un computer Windows, come verificare che funzioni e come tracciarne la registrazione nel Registro di sistema Windows. Usare questi controlli quando un'applicazione non riesce a connettersi a SQL Server e si sospetta che il driver OLE DB sia mancante o non registrato.
Convalidare il driver OLE DB o il provider tramite PowerShell
Per trovare le versioni del driver OLE DB per SQL Server installate nel sistema operativo, eseguire il cmdlet di PowerShell seguente come amministratore.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*MSOLEDBSQL*" } |
ForEach-Object { Get-ItemProperty $_.PSPath }
Se nel sistema operativo è installata la versione 18 e 19, l'output potrebbe essere simile al seguente.
InstalledVersion : 18.7.4.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSOLEDBSQL
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : MSOLEDBSQL
PSProvider : Microsoft.PowerShell.Core\Registry
InstalledVersion : 19.4.1.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSOLEDBSQL19
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : MSOLEDBSQL19
PSProvider : Microsoft.PowerShell.Core\Registry
InstalledVersion : 18.7.4.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSOLEDBSQL
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft
PSChildName : MSOLEDBSQL
PSProvider : Microsoft.PowerShell.Core\Registry
InstalledVersion : 19.4.1.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSOLEDBSQL19
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft
PSChildName : MSOLEDBSQL19
PSProvider : Microsoft.PowerShell.Core\Registry
Il InstalledVersion valore mostra la compilazione esatta di ogni driver installato. Microsoft OLE DB Driver 19 per SQL Server (MSOLEDBSQL19) si installa affiancato a Microsoft OLE DB Driver 18 per SQL Server (MSOLEDBSQL), quindi è normale che siano presenti entrambe le chiavi. Per verificare se si esegue la versione più recente, confrontare il valore con la build di disponibilità generale corrente elencata in Download Microsoft OLE DB Driver per SQL Server.
Verificare la presenza di un'installazione di SQL Server Native Client (SQLNCLI)
Per verificare la presenza di un'installazione dell'interfaccia del provider OLE DB (SQLNCLI), eseguire il cmdlet di PowerShell seguente come amministratore.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*SQLNCLi*" } |
ForEach-Object { Get-ItemProperty $_.PSPath}
Annotazioni
SQL Server Native Client (SNAC SQLNCLI o SQLNCLI11) e il provider OLE DB legacy Microsoft per SQL Server (SQLOLEDB) non vengono forniti con SQL Server 2022 (16.x) e versioni successive o con SQL Server Management Studio 19 e versioni successive. Non sono consigliati per lo sviluppo di nuove applicazioni. Usare invece il Microsoft OLE DB Driver per SQL Server. Questo articolo usa ancora SQLNCLI negli esempi perché è ancora comune nei sistemi esistenti di cui si risolvono i problemi.
Convalidare il driver OLE DB tramite un file UDL
Uno dei modi più semplici per testare un driver OLE DB consiste nell'usare un file UDL (Universal Data Link). Un file UDL apre la finestra di dialogo Proprietà collegamento dati , che elenca i provider OLE DB registrati nel computer e consente di testare una connessione senza un'applicazione completa.
Per creare e aprire un file UDL, seguire questa procedura:
- Assicurarsi che le estensioni di file siano attivate in Esplora file in modo che sia possibile modificare l'estensione.
- Creare qualsiasi file di testo in Esplora file e quindi rinominarlo in modo da avere l'estensione udl . Selezionare Sì quando Windows avvisa di modificare l'estensione del nome file.
- Fare doppio clic sul file per aprire la finestra di dialogo Proprietà collegamento dati , in cui è possibile visualizzare i provider installati e testarne le connessioni.
- Selezionare OK nella finestra di dialogo per confermare la configurazione.
Suggerimento
Se facendo doppio clic sul file non viene aperta la finestra di dialogo Proprietà collegamento dati ( ad esempio, il file viene aperto in un editor di testo o restituisce un errore), provare una delle alternative seguenti:
Fare clic con il pulsante destro del mouse sul file .udl, quindi selezionare Proprietà. Nella maggior parte dei sistemi, questa azione apre anche la finestra di dialogo Proprietà collegamento dati .
Aprire la finestra di dialogo direttamente eseguendo il comando seguente, dove C:\temp\test.udl è il percorso del file:
Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\temp\test.udl
Per aprire la finestra di dialogo a 32 bit in un sistema operativo a 64 bit, vedere Avviare un file UDL.
Per istruzioni dettagliate sul test di una connessione tramite ogni provider, vedere Testare la connettività OLE DB a SQL Server usando un file UDL.
Esaminare il contenuto del file UDL per ottenere un stringa di connessione
Se si apre il file UDL in un editor di testo, è possibile copiare la stringa di connessione da usare nell'applicazione. Di seguito sono riportati due esempi:
Provider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog=master;Data Source=localhost;Initial File Name="";Server SPN="";Authentication="";Access Token=""
Provider=SQLNCLI11.1;Integrated Security="";Persist Security Info=False;User ID=sa;Initial Catalog=AdventureWorks;Data Source=tcp:SQLProd01.contoso.com,1433;Initial File Name="";Server SPN=""
Tracciare un provider OLE DB nel registro di Windows
Per convalidare un driver, controllare prima di tutto se il nome viene visualizzato nell'elenco dei provider installati in una finestra di dialogo UDL a 64 bit o a 32 bit, come illustrato nella sezione precedente. In caso contrario, reinstallare il provider o contattare il fornitore.
Se il provider è elencato ma le connessioni non riescono, tracciare il percorso del driver nel Registro di sistema. Il nome del driver è un ProgID COM. È possibile trovarlo in HKEY_CLASSES_ROOT.
Associare un ProgID a un nome del provider
Usando il driver SQL Server Native Client come esempio, l'immagine seguente mostra il mapping tra ProgID SQLNCLI11.1 e il nome del provider SQL Server Native Client 11.0.
Il ProgID dei provider a 32 bit e a 64 bit viene visualizzato nella stessa chiave.
Oltre a SQLNCLI11.1, è disponibile anche un ProgID denominato SQLNCLI11. Il motivo è che uno sviluppatore di provider potrebbe consentire l'installazione affiancata di più versioni dello stesso provider, ognuna con un suffisso numerico diverso. Il nome non numerato è il ProgID indipendente dalla versione. Le applicazioni possono puntare a questo e essere reindirizzate alla versione più recente del provider.
Per tutte le finalità e gli scopi, questi due nomi ProgID diversi devono essere equivalenti. Tuttavia, potrebbero esserci casi in cui non lo sono. In questi casi, le applicazioni che usano il nome indipendente dalla versione non possono connettersi, ma possono connettersi se usano il ProgID con versione. Il motivo è che le due voci puntano a valori CLSID diversi, che indicano come individuare la DLL del provider.
Individuare la DLL del provider a partire dal CLSID
Il CLSID è il GUID COM. L'infrastruttura COM individua il GUID dal ProgID. Viene quindi cercata sotto la HKEY_CLASSES_ROOT\CLSID chiave una chiave il cui GUID corrisponde al nome della chiave:
Il InProcServer32 valore punta alla DLL del provider.
Per i provider a 32 bit, COM usa lo stesso GUID ma lo cerca in HKEY_CLASSES_ROOT\Wow6432Node\CLSID.
In questo caso, il provider si trova nella cartella SysWow64 .
Annotazioni
Questi esempi provengono da computer a 64 bit. Nei sistemi a 32 bit, Wow6432Node non è presente nel Registro di sistema.
Percorsi del Registro di sistema da verificare per SQL Server Native Client 11.0
Queste chiavi del Registro di sistema sono i percorsi per SQL Server Native Client 11.0 nell'editor del Registro di sistema per computer a 64 bit:
HKEY_CLASSES_ROOT\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32
Questi sono i percorsi nell'editor del Registro di sistema per i computer a 32 bit:
HKEY_CLASSES_ROOT\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Supporto dei provider OLE DB non Microsoft
Il supporto tecnico per i provider OLE DB non Microsoft è limitato alla convalida del fatto che ProgID punti a un CLSID valido e che la InProcServer32 sottochiave punti alla DLL corretta. Se il percorso non è corretto o la voce del Registro di sistema non esiste, reinstallare il provider o contattare il fornitore.
Registrare manualmente una DLL del provider usando regsvr32
Se i file esistono ma le voci del Registro di sistema non lo sono, è possibile registrare manualmente il provider usando REGSVR32. Per registrare una DLL COM, eseguire il comando seguente al prompt dei comandi con privilegi elevati:
Regsvr32 sqlncli11
Se sono presenti versioni a 32 bit e a 64 bit del provider, eseguire il comando su entrambe le DLL. Utilizzare un prompt dei comandi a 32 bit per registrare la DLL a 32 bit.