java.sql.SQLException:[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序

本文解决了一个在32位环境下,通过WebService调用ODBC数据源时出现的异常问题。问题在于仅在用户DSN中添加了数据源,而未在系统DSN中添加,导致跨机调用失败。文章详细介绍了如何正确配置系统DSN以确保跨机调用成功。

环境:jdk1.7 32位+tomcat7 32位+odbc数据源32位+webservice服务端、客户端
事情的起因是:我把webservice服务端文件放到tomcat,在客户端调用时,却获取不到数据,但是通过本地idea运行服务端程序时,客户端是可以获取到数据的,通过查看tomcat的log日志,发现如下的报错:
java.sql.SQLException:[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序

这是由于没有找到我在程序中写的odbc数据源名称,
这是因为我在添加odbc数据源的时候,只在用户DSN添加了数据源,没有在系统DSN添加书数据源,造成上面的异常,由于我的odbc数据源为32位,位置在C:\Windows\SysWOW64\odbcad32.exe,打开后在系统DSN界面添加数据源即可。根据网络上的解释: 在控制面板-管理工具–数据源中设置ODBC数据源,在设置ODBC数据源时,要添加“系统DSN”,不要添加“用户DSN”,因为添加“用户DSN”,只能在本机使用,当把程序移植到其它计算机时,程序就无法正常运行。
在系统DSN中添加完odbc数据源后,webService就可以正常获取到数据额

在使用 Microsoft SQL Server Management Studio (SSMS) 还原数据库时,如果遇到错误提示“备份集中的数据库备份与现有数据库不同”,通常是因为目标数据库的名称与备份文件中记录的数据库名称不一致,或者目标数据库当前处于多用户模式,导致无法获取独占访问权限[^1]。 ### 解决方法 #### 1. 修改目标数据库名称 如果希望将备份文件还原为一个新名称的数据库,而不是覆盖原有的数据库,可以通过以下步骤实现: - 在 SSMS 中,右键点击“数据库”节点,选择“还原数据库”。 - 在“常规”页面中,选择“源设备”,并浏览到备份文件(`.bak` 文件)。 - 在“目标数据库”字段中,输入一个与备份文件中不同的数据库名称。 - 转到“选项”页面,勾选“覆盖现有数据库”选项,并确保“还原为新数据库”也被选中。 - 点击“确定”开始还原过程[^2]。 #### 2. 切换目标数据库为单用户模式 如果希望覆盖现有数据库,则需要确保目标数据库处于单用户模式,以避免其他连接干扰还原过程: - 在 SSMS 中,右键点击目标数据库,选择“属性”。 - 转到“选项”页面,在“限制访问”下拉菜单中选择“SINGLE_USER”。 - 如果切换模式时提示数据库正在使用,请手动关闭所有连接到该数据库的应用程序或服务。 - 再次尝试还原数据库,确保在“选项”页面中勾选“覆盖现有数据库”[^3]。 #### 3. 使用 T-SQL 命令行还原 如果通过图形界面操作仍然存在问题,可以使用 T-SQL 命令行方式还原数据库,这种方式更加灵活且可以指定更多参数: ```sql RESTORE DATABASE [目标数据库名称] FROM DISK = '备份文件路径' WITH REPLACE, -- 强制替换现有数据库 MOVE '逻辑数据文件名' TO '新的数据文件路径', MOVE '逻辑日志文件名' TO '新的日志文件路径'; ``` 例如: ```sql RESTORE DATABASE [MyDatabase] FROM DISK = 'C:\Backup\MyDatabase.bak' WITH REPLACE, MOVE 'MyDatabase_Data' TO 'C:\Data\MyDatabase.mdf', MOVE 'MyDatabase_Log' TO 'C:\Log\MyDatabase.ldf'; ``` 此命令会强制还原数据库,并将数据文件和日志文件移动到指定位置[^1]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值