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.
Object Linking and Embedding Database (OLE DB) è una tecnologia di accesso ai dati Microsoft usata per connettere le applicazioni a varie origini dati usando provider OLE DB. La risoluzione dei problemi relativi alle installazioni e alle convalide dei driver OLE DB può essere complessa, ma è fondamentale per un'interazione senza interruzioni del database. Questa guida alla risoluzione dei problemi mira a fornire informazioni dettagliate sull'installazione, la convalida e la risoluzione dei problemi relativi ai driver OLE DB.
Convalidare il driver OLE DB o il provider tramite PowerShell
Per verificare se nel sistema operativo è installato il driver OLE DB più recente per SQL Server, 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
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}
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). Creare qualsiasi file di testo in Esplora risorse e rinominarlo in modo che abbia l'estensione udl . Assicurarsi che le estensioni di file siano attivate per apportare la modifica. Fare doppio clic sul file per aprire una finestra di dialogo in cui è possibile visualizzare i provider installati e testarne le connessioni. Per altre informazioni, vedere Testare la connettività OLE DB a SQL Server usando un file UDL.
Selezionare OK nella finestra di dialogo per confermare la configurazione.
Esaminare il contenuto del file UDL
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=""
Convalidare un driver OLE DB
Il primo passaggio per la convalida di un driver consiste nel verificare se il nome viene visualizzato nell'elenco dei provider installati di una finestra di dialogo UDL a 64 bit o a 32 bit, come illustrato nella sezione precedente. In caso contrario, è necessario reinstallare il provider o consultare il fornitore.
È anche possibile tracciare il percorso del driver nel Registro di sistema. Il nome del driver è un PROGID COM ed è possibile trovarlo in HKEY_CLASSES_ROOT.
Usando il driver SQL Server Native Client come esempio, è possibile vedere nell'immagine seguente 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, possono verificarsi 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, ovvero come trovare la DLL del provider.
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 computer a 32 bit non Wow6432Node è presente nel Registro di sistema.
Queste chiavi del Registro di sistema sono i percorsi di SQL Native Client 11.0 nell'editor del Registro di sistema per computer a 64 bit:
HKEY_CLASSES_ROOT\SQLNCLI.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\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Supporto per provider non Microsoft
Il supporto tecnico per i provider OLE DB non Microsoft è limitato alla verifica che il ProgID punti a un CLSID valido e che la sottochiave InProcServer32 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. 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. Usare un prompt dei comandi a 32 bit per registrare la DLL a 32 bit.