DSN、ODBC:如何使用不同的 Windows 帐户创建 DSN

DSN、ODBC:如何使用不同的 Windows 帐户创建 DSN

是否有可能使用与当前计算机登录帐户不同的 Windows 帐户创建 DSN(ODBC 到 SQL Server)?我正在尝试创建到 SQL Server 的系统 DSN,并且我想使用我的管理员帐户通过 Windows 身份验证创建此连接。我正在使用我的普通 Windows 帐户创建此 DSN。

答案1

根据定义,系统 DSN 适用于整个计算机,而不管使用哪个登录帐户,所以(如果我正确理解了你的问题)这意味着(1)答案是“是”,并且(2)你需要管理员权限才能创建 DSN。

顺便问一下,您是否考虑过无 DSN 的连接?我相信它们更适合您的要求,并且在使用您的应用程序之前也无需进行客户端配置。

答案2

您还可以使用“runas”命令在以普通帐户登录时启动管理员帐户下的 ODBC 数据源管理器。这样您就可以配置和测试连接,而不会收到“用户未与受信任的 SQL 连接关联”错误。

以下是命令提示符命令的示例:

runas /netonly /user:domain\adminusername "C:\Windows\System32\odbcad32.exe"

正如 Jimmy 所说,DSN 定义不会与管理员帐户绑定,但稍后使用连接时会使用您登录的任何 Windows 身份验证帐户。 (因此,除非您以管理员帐户登录,否则您需要再次使用“runas”来启动使用该连接的任何程序。)

答案3

我要补充一下 Mac 的回答,是的,这绝对可以设置 ODBC 连接,而且确实可以工作一段时间。可能只要 Kerberos 身份验证保持活动状态,它就会一直工作。不幸的是,这不是我希望的系统 DSN 的永久身份验证。这是我用来启动 odbcad32.exe 的批处理文件:

net use \\dbserver-host /user:DOMAIN\username
runas /netonly /user:DOMAIN\username C:\Windows\syswow64\odbcad32.exe

请注意,这可能会导致您被提示登录两次,但它似乎比单独使用 runas 更有效。

答案4

我发现使用 Windows 凭据管理器效果很好。您可以直接添加 Windows 凭据。诀窍是您需要有包括端口在内的完全限定域名,以及带有域限定符的完整 Active Directory 用户名,因此类似于mydb.myinternaldomain.com:1433和 以及myinternaldomain\myusername您的密码。然后您可以添加mydb.myinternaldomain.com为 ODBC 源,Windows 将神奇地交换正确的凭据。这也适用于 Sql Server Management Studio。

它似乎不适用于非 Windows 原生应用程序,您仍然需要 runas。

相关内容