数据库用的是ODBC连接我用VS2010 installer 打包
按照网上的别人写的方法,我把注册表里的:ODBC路径项和数据源导出,然后导入到目标机器
内容如下:
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
"myODBCname"="SQL Server"[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\CarManager]
"Driver"="C:\\Windows\\system32\\SQLSRV32.dll"
"Server"="计算机名\\SQLEXPRESS"
"LastUser"="Administrator"
"Trusted_Connection"="Yes"
"Database"="myDBname"解决方案->属性->系统必备里选择了:sql server2008 express edition在虚拟机(XP)运行安装程序成功,运行却找不到数据库。打开ODBC寻找问题有两个:
1:数据源myDBname的 服务器(s):里"计算机名\\SQLEXPRESS"这个是明显的错误,改成目标机器计算机名OK,我写安装程序时候应该如何获得目标机器计算机名?2:DSN设置第三步 更改默认的数据库为(D):myDBname 。这也是明显错误,目标机器上找不到我的数据库myDBname.mdf,我应该如何在这里添加上我的数据库?因为目标机器没有sql server manager我也无法添加。我应该如何设置我的安装程序使得在这里可以有我自己的数据库?以便使得连接成功。综上所述两个问题:
1、ODBC的DSN配置如何写服务器名
1、ODBC的DSN配置如何使目标机器上数据库表里有我的数据库
第一次用MFC+SQL SERVER,查一夜资料没找到答案,麻烦下大家了。恳请得到帮助,全部分送上。

解决方案 »

  1.   

    你整全自动化部署? 人工干预地方太多了,风险太大。不然也不会有实施工程师这个职位了。很多都要技术人员到场的。1.GetComputerName可以得到DNS对应的计算机名。2.我们以前配置都是准备一个database的bak文件直接导入形成新的数据库结构的。但是最初的数据库还是要自己建的。
    (现在看来,目标机器的数据库不是你安装和部署的,那你得到的信息太少了。不可能做到直连的。你自己玩数据库也清楚ConnectionString这些都要自己填写配置的)
      

  2.   

    re: tiger9991多谢您的回答,但是我知道的像 金蝶 管家婆这类软件他们是怎么实现安装和部署的?我记得好像都是自动完成
      

  3.   

    还有就是,我目标机器上只安装了SqlExpress2008,没有sql server manager如何进行备份恢复或者重新创建数据库?
      

  4.   

    金蝶的话,他们数据库,客户端服务器软件从头到尾都是他们安装和配置的。自然他们控制起来就很方便了。他们肯定用代码写注册表,参数可以根据当前的函数来得出的。你是用reg文件写的,reg文件是死的。要手动修改。自然不能直接获取了
      

  5.   

    用代码写注册表没有问题,我做一个首次运行判断就OK了。ODBC连接我用写注册表的形式可以。但是如何在目标机器上建立数据库呢?可能我没表达清楚,我就是想实现在目标机器上运行我自己写好的数据库。即目标机器 在ODBC->DSN 配置里 更改默认数据库为:里面有我写的数据库。用back恢复也好,用.sql脚本创建也行。我没弄过,不知道从哪里下手。应该把恢复、或者创建的代码写在哪里?
      

  6.   

    目标机器上,不就是你自己的机器么?有区别么?难道你要远程连接建立数据库?不就是SQL语句CREATE DATABASE详解:
    http://topic.csdn.net/u/20100705/10/C6B2822B-9088-4A30-9F4F-9D374967F221.html
      

  7.   

    真的谢谢你。我感觉又绕了,按照你的思路,我在 CREATE之前,首先要建一个DSN以用来连接,而且不能选择默认数据库。否则连接失败。然后在MFC代码里CREATE DATABASE mydb1然后通过写注册表修改这个DSN的默认数据库为mydb1这样是不是绕了??还是我糊涂了.. 或者说 m_database.open("my_dsn")之后用  use mydb1 ?
      

  8.   

    所有你在第三方软件里的操作,都有相应代码的。
    你要做的,就是将鼠标的操作转成SQL的相应语句。