将数据库连接字符串提供程序名称映射到dll

问题描述 投票:0回答:1

我正在查看SQL Server连接字符串。看起来像这样:

数据源= xxxxxxxx;初始目录= xxxxxxxx;提供程序= SQLNCLI11.1;集成安全性= SSPI

我的问题是:提供者名称(通常)如何映射到特定的DLL或库?

这是第二个示例(对于Oracle):

数据源= xxxxxxxx;用户ID = xxxxxxxx;提供程序= OraOLEDB.Oracle.1;持久安全信息=真实;

相同的问题。如何从提供程序名称获取代码所在的dll或库?

sql-server database-connection connection-string
1个回答
0
投票

dll路径存储在注册表(HKEY_CLASSES \ CLSID)中的提供程序(GUID)的inprocserver32中

foreach ($provider in [System.Data.OleDb.OleDbEnumerator]::GetRootEnumerator())
{
    $v = New-Object PSObject        
    for ($i = 0; $i -lt $provider.FieldCount; $i++) 
    {
        Add-Member -in $v NoteProperty $provider.GetName($i) $provider.GetValue($i)
    }
    $reg = Get-ItemProperty "Registry::HKEY_CLASSES_ROOT\CLSID\$($v.SOURCES_CLSID)\InprocServer32" -ErrorAction SilentlyContinue
    Add-Member -in $v "Dll path" $reg.'(default)'

    $v
}
© www.soinside.com 2019 - 2024. All rights reserved.