无法通过 Windows 2012 上的系统 dsn 使用 ODBC 连接连接到 SQL Server 2008
Posted
技术标签:
【中文标题】无法通过 Windows 2012 上的系统 dsn 使用 ODBC 连接连接到 SQL Server 2008【英文标题】:Unable to connect to SQL Server 2008 using ODBC connection via system dsn on windows 2012 【发布时间】:2015-04-14 21:28:14 【问题描述】:我有 Windows 2012 服务器,我可以通过创建数据连接通过 Visual Studio Server Explorer 连接到 SQL Server 2008 实例。我还可以使用 SQL Server Management Studio 并连接到该 SQL Server。但由于某种原因,当我尝试使用 ODBC 数据源管理器进行连接以设置 DSN 时,出现以下错误。
连接失败: SQLState: '01000' SQL 错误:1 [Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]ConnectionOpen (SECCreateCredentials())。 连接失败: SQLState: '08001' SQL 错误:18 [Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]SSL 安全错误
我似乎找不到任何关于这个的具体信息,想知道是否有人熟悉这个问题。
我要补充一点,客户端和服务器都不会强制加密,所以我会收到与 ssl 相关的错误,这让我有点困惑。
【问题讨论】:
【参考方案1】:打开 ODBC 日志记录后收到事件消息 创建 SSL 客户端凭据时发生致命错误。内部错误状态为 10013。
这并没有让我找到确切的问题,但确实让我解决了类似的错误。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client\ Enabled 需要从 0 翻转到 1
【讨论】:
谢谢!浪费了我一天中的大部分时间来解决这个问题。现在,正在寻找一种启用 TLS 1.2 的方法,而不必启用打开此漏洞。 有关 TLS 1.2 和 Sql Server 的信息:dba.stackexchange.com/questions/93127/…【参考方案2】:在带有 SQL Server 2016 的 Windows Server 2016 上,我禁用了 TLS 1.0 和 1.1,并且只有一个旧站点出现问题(服务器上的其他新网站运行正常)。
我尝试将目标版本从 4.0 更新到 4.7,但这并没有解决问题。
问题是一些非常旧的代码使用 OleDbDataReader
调用数据库,我将其升级为使用 SqlDataReader
并且成功了。
在其他任何地方都没有找到这个,所以认为这里的帖子将来可能会帮助其他人......
【讨论】:
【参考方案3】:如果您的 SQL Server 上禁用了 TLS 1.0 和 TLS 1.1(这是一种良好的安全做法),您可能需要在您的客户端计算机上禁用它。我有一个 Win 2012 R2 服务器,有这个问题。
在注册表中:
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\ ...
\TLS1.0\Client (and Server): set DisabledByDefault = 1, Enabled = 0
\TLS1.1\Client (and Server): set DisabledByDefault = 1, Enabled = 0
您可能需要重新启动机器才能使设置生效。
【讨论】:
【参考方案4】:在下面启用 本地安全策略 --> 本地策略 --> 安全选项 --> ‘系统加密:使用符合 FIPS 的算法进行加密、散列和签名
并运行 gpupdate /force
【讨论】:
以上是关于无法通过 Windows 2012 上的系统 dsn 使用 ODBC 连接连接到 SQL Server 2008的主要内容,如果未能解决你的问题,请参考以下文章
Mac 使用Microsoft Remote Desktop无法连接至远程服务器,显示无法验证身份
我无法在我的系统 windows 7 32 位上的 XAMPP 上启动 Apache
Windows 7 上的 VB6 应用程序无法访问映射驱动器
Windows Server 2012 AD DS环境下域用户自动加入本地管理员组