关于DSN

关于最原始时的理解是,window上连接数据库要先去控制面板配DSN,以让程序能找到数据库。

我想现在虽然是简单的这么一句表述,但对于最开始没有任何这方面经验的人来,确是一个很大沟,难以理解:“DSN是什么东西,怎么操作?

”就算图书馆的某本书上有点零星的介绍,但也不会完全理解和掌握。

配合DB2的经验基础,我认为,其实就是做一个“编目”,术语叫做“catalog”,但是对于DB2来说,本地是默认已编目(服务端),对于客户

端才“真需要”来个catalog,其实就是配上IP,告诉我数据库在哪里。

我相比window上的DSN也应该是相同概念,但目前我草草的扫描了下,没有发现需要写上IP的地方,或者就算是本地也是要配置下DSN,我是奇

怪,为何。

看了了DEMO,其实可以“直连”,
SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"Microsoft Access Driver (*.mdb)/0",cpConfig)
就是在程序运行时我才去“动态”告诉程序我的库在哪里。

这才发现,其实大家都共通,都是如此这般。配置面板的方式,也太死板了,都不能挪程序或数据库了。。。。

PS:寥寥数语,也没什么逻辑和排版,就是把我的目前肤浅认识,但想必对带着问题通过"baigo"搜到这篇短文
的兄弟,有个大致的概念。

如此足矣~


                                                           蓝灵
                                                        19:10 2007-12-23 

### 关于网络 DSN 的概念与配置 #### 网络 DSN 的基本定义 数据源名称(DSN, Data Source Name)是用于标识特定数据库连接的信息集合。在网络环境中,DSN 可以通过 ODBC 或其他驱动程序来实现跨设备的数据访问[^1]。 #### 网络 DSN 的分类 通常,网络环境中的 DSN 被分为三种主要类型:系统 DSN、用户 DSN 和文件 DSN。 - **系统 DSN** 是可供同一台计算机上所有用户使用的全局数据源。 - **用户 DSN** 则仅限当前登录用户的会话范围内有效。 - **文件 DSN** 存储在一个 `.dsn` 文件中,可以被复制到不同的机器上共享使用[^2]。 #### 配置方法概述 为了使应用程序能够通过网络访问远程数据库,需要正确设置相应的 DSN 并指定目标服务器地址和其他必要参数。以下是具体操作指南: ##### 手动创建 DSN 可以通过 Windows 控制面板完成此过程: 1. 进入“控制面板”-> “管理工具” -> “ODBC 数据源 (32/64位)”; 2. 在弹出窗口中切换至“系统 DSN”标签页或者“文件 DSN”视图; 3. 单击“添加”,选择合适的驱动器类型(如 MySQL ODBC Driver),并点击下一步继续填写详细信息,包括但不限于主机 IP 地址、端口号以及认证凭证等字段[^4]。 ##### 自动化脚本示例 对于批量部署场景下可能更倾向于利用编程接口自动生成所需的 DSN 设置。下面给出一段 Python 示例代码展示如何借助 pyodbc 库动态建立一个新的 SQL Server 类型的 DSN 定义: ```python import subprocess def create_dsn(server_name, database_name, dsn_name): command = f'odbcconf.exe CONFIGSYSDSN "SQL Server" "DSN={dsn_name}|Server={server_name}|Database={database_name}"' result = subprocess.run(command, shell=True) if result.returncode != 0: raise Exception(f"Failed to create DSN {dsn_name}") create_dsn('my_server', 'test_db', 'MyNewDsn') ``` 上述函数接受三个参数分别代表目标服务器实例名、要链接的目标库名字还有新构建出来的 DSN 名字,并调用操作系统自带命令行工具 odbcconf 来执行实际新增动作[^3]。 #### 注意事项 当涉及到网络安全策略时,请务必确认所选通信协议已启用加密传输选项;另外还需注意防火墙规则是否允许外部客户端发起针对内部 DBMS 的请求行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值