可能依赖于用户的ODBC数据源?

时间:2014-07-14 09:19:17

标签: sql-server windows odbc

是否可以定义许多具有相同名称的ODBC数据源,每个数据源都分配给Windows Server 2012的不同用户(登录)?问题是应用程序使用这样的源连接到SQL Server。因此,该应用程序的每个用户都连接到同一个SQL Server实例并使用相同的数据库,这是不可取的。我希望应用程序使用具有相同名称的ODBC数据源连接到不同的SQL Server实例,具体取决于已登录到系统的用户。实际上,它在某种意义上就像虚拟数据源一样工作。

提前感谢任何建议。

2 个答案:

答案 0 :(得分:0)

如评论中所述,您应该可以通过在"用户DSN"中定义ODBC管理器中的DSN来手动执行此操作。选项卡而不是系统DSN"一。

http://support.microsoft.com/kb/213772有一节解释了系统和用户DSN之间的区别:

  

用户DSN

     

用户DSN是用户特定的数据源。一个用户   DSN存储在本地,但仅供创建的用户使用   它。 Microsoft Query不使用用户DSN。如果您使用Microsoft   Jet,ODBC或结构化查询语言(SQL)命令和绕过   Microsoft Query,用户DSN是必需的。

     

用户DSN存储在   Windows注册表位于以下键下:

  HKEY_CURRENT_USER\Software\Odbc\Odbc.ini\Odbc Data sources
     

系统DSN

     

与用户DSN不同,系统DSN不是特定于用户的。系统DSN是   存储在本地,不专用于特定用户。任何用户   登录到有权访问数据源的计算机   可以使用系统DSN。某些程序,如Microsoft SQL Server或   Microsoft Internet Information Server(IIS)需要系统DSN。   必须在程序所在的服务器上创建此DSN。

     

系统DSN存储在Windows注册表中,如下所示   关键:

  HKEY_LOCAL_MACHINE\Software\Odbc\Odbc.ini\Odbc Data sources

请注意,您需要确保每个支持操作的人都熟悉此操作,因为现在给定DSN的问题报告无法解析为单个数据库实例。

答案 1 :(得分:0)

我认为使用SQL Server可以为每次登录定义默认数据库。如果您这样做并将数据库名称保留在DSN之外,则应始终连接到该用户的默认数据库。