我们有一个旧版 CRM,它使用带有 Windows 身份验证的 DSN 连接到 SQL Server 2005 实例(SBS 2003 Premium 的一部分)。我们将很快进行一次重大迁移,使我们没有 Windows 域 - 据我了解,这意味着我们需要使用替代身份验证方法。我们还计划在同一时间范围内从 SQL Server 2005 迁移到 SQL Server Express 2008 R2。
不幸的是,无法对 CRM 进行修改。
撇开明显的安全问题不谈,是否可以在系统 DSN 中硬编码用户名和密码?或者,这是我缺少的另一种明显的身份验证方法吗?
- 编辑
DSN在 Windows 客户端控制面板的“管理工具”部分的ODBC 数据源管理器中定义。
--编辑2
由于乔纳森的回答,我放弃了尝试在 DSN 中执行此操作。幸运的是,我发现了一个 .ini 文件,我可以在其中插入一个固定的用户名/密码来替换占位符 - 问题解决了。
系统 DSN 存储在注册表中,无法存储密码。如果要存储密码,则必须使用文件 DSN,这需要更改 CRM 以使用文件 DSN,您说这是不可能的。通常使用系统 DSN 的应用程序依赖于用户的 SQL Server 身份验证来确保其安全性。当应用程序打开时,它应该提示用户登录,这是用于连接到数据库服务器的系统 DSN 信息的用户名和密码。如果 DSN 使用 Windows 身份验证并且您正在消除 Windows 域,那么您将陷入困境。您必须更改 CRM 以使其以不同的方式工作。
DSN 因提供商而异。我刚刚为系统 DSN 硬编码了 Microsoft Oracle ODBC 的密码。情况:MS Access 2010 不保存链接表的密码
\HKLM\Software\ODBC\ODBC.INI{DSN 名称}\PWD
编辑后,首次访问数据源时,Access 不再提示输入密码。
使用如下所示的 PowerShell,我能够为 Sybase SQL Anywhere 数据库创建一个存储凭据的系统 DSN: