问题描述:
开发环境:VB+SQL 2k+win2k server
数据源连接:ODBC
涉及问题:dtspkg.dll,sqlsvr32.dll
打包软件:wise installation v9.02
现象描述:
      由于采用服务器为2k server+sqlserver2k ,程序中使用了sql server2k的dts导出。程序打包后,在win98上安装,发现安装前98能够用odbc连接到sql server2k的数据库上,但程序安装完毕后就不行了!后来自行解决了问题,问题症结在sqlsvr32.dll上。程序安装后,sqlsvr32.dll 变为460k,但如果用vb打包,安装后就为496k,将496k的文件替换460k的文件,98的odbc连通到了sql server的数据库上。但后来发现dts在98上不能创建对象,错误代码为492:activex can't create object.于是,在98上安装sql server2k的客户端,结果安装失败。分析问题后,得出问题还是出在496k的sqlsvr32.dll上,于是替换为461k的文件。sql server客户端安装完成。sql客户端注册服务器到server上。但是出现的问题是连接超时,而且odbc完全不能连接sql server.再次将496k的sqlsvr32.dll替换461k的那个,odbc通
但sql 客户端不通。dts 可以使用,但最后gopackage.excute的时候报错。说无法连接到sql server端!!
两难境地:
      即要用odbc,也要用dts(dts导出excel).不知该如何解决这个问题阿。 

解决方案 »

  1.   

    UP
    UP
    UP
    UP
    UP
    UP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  2.   

    有可能是打包不够彻底, 漏掉了某个 dll
      

  3.   

    重装一下98后,安装SQL客户端
      

  4.   

    我的经验,2000中的程序在98中使用,需要MDAC 2.7
      

  5.   

    客戶端不要安裝sql客戶端僅連接工具,你在sql安裝碟中找一個叫"SQLREDIS.exe",執行就可以連接到sql server,這個文件我找了好久才發現的.
    你試試看.用我的方法,也許就沒有你那種問題存在拉.
      

  6.   

    mdac 没问题。
    我尝试一下mike820513的方法
      

  7.   

    for i=0 to 99
      up
    next
      

  8.   

    for i=0 to 99
      up
    next
    msgbox "Give Me Same Points,Thank you!"
      

  9.   

    打包的问题!
    所以找不到DLL文件。
    才会那样的啊!
      

  10.   

    为什么一定要用ODBC呢?
    不过,用ODBC的解决移动问题,偶到是有一种方法,当然不是用打包setup来配置ODBC这样的确会遇到很多问题,你可以试试改改代码,让程序在启动时,动态配置ODBC以便后面供你使用。
    代码如下:'动态配置ODBC的API
    Public Declare Function SQLConfigDataSource Lib "odbccp32" (ByVal hwnd As Long, ByVal wRequest As Integer, ByVal lpDriver As String, ByVal lpAttributes As String) As Boolean
    下面的放到程序的启动部分
    If False = SQLConfigDataSource(0, 1, "Microsoft Access Driver (*.mdb)", "dsn=Equipment;description=VBtest;dbq=" & App.Path & "\InfoDb.mdb;fil=MicrosoftAccess;defaultDIR=" & App.Path) Then
    MsgBox "设置数据源出错!", , "错误"
    End If
    上面的第三个参数你选择Sql Sever的就行了
      

  11.   

    在win98上安将最新版ADO驱动引擎!
      

  12.   

    如果是我,我会选择这样:1、删除整个有问题的98并重新安装
    2、安装SQL2k客户端
    3、制作安装程序的时候,只打包主程序(其他乱七八糟的DLL一概不要)因为打包程序经常出现错误判断,导致很多DLL混乱的。没有十足的把握,尽量不要把DLL也打包。
    仅提供建议,仅供参考~~~~~~~~
      

  13.   

    用ODBC不太好,起码安全性得不到保障!
      

  14.   

    我也遇到同样的问题,但是你可以不用DTS,你可以直接把数据导出到EXCEL,网上有很多相关代码
      

  15.   

    下一个visualstudio的比较新一点的servicepack补上,然后再编译,打包应该可以解决了。
      

  16.   

    你的意思是 SQL server 和 odbc 无法在98 上面同时工作? 不大可能吧.
      

  17.   

    数据转换服务 (DTS) 
    ----------------------------------------------
    文件名 描述
    ----------------------------------------------
    sqlresld.dll 卫星资源 DLL 装载器
    dtsffile.dll DTS 平面文件 OLE DB 提供程序
    dtsffile.rll DTS 资源文件
    dtspkg.dll DTS 包
    dtspkg.rll DTS 资源文件
    dtspump.dll DTS 数据抽取
    dtspump.rll DTS 资源文件
    axscphst.dll DTS ActiveX 脚本主机
    axscphst.rll DTS 资源文件
    dtsrun.exe 用于执行 DTS 包的命令行实用程序
    dtsrun.rll DTS 资源文件
    sqlunirl.dll SQL Server Unicode/ANSI 转换层
    custtask.dll DTS 自定义任务文件
    custtask.rll DTS 自定义任务资源文件数据转换服务 (DTS) 安装说明
    ---------------------------------------------------------
    下列文件须用 regsvr32.exe 实用程序注册:
    dtsffile.dll
    dtspkg.dll
    dtspump.dll
    axscphst.dllSqlunirl.dll 文件应驻留在系统文件夹中(即:\winnt\system32 或 \windows\system)。SQLREDIS.EXE(在sql安装盘中)
    ----------------------------------------------------------------------
    此包中含有以下可再发行的组件:
    ----------------------------------------------------------------------
    Jet 4.0
    Jet OLE DB 4.0
    用于桌面数据库的 ODBC 驱动程序
    SQL Server 2000 网络库
    SQL ODBC 驱动程序
    SQL OLEDB 提供程序
    SQL XML 提供程序
    Microsoft 数据访问组件 (MDAC) 2.6 版
      

  18.   

    一定要在WIN98上安装吗?W2000试一下。
      

  19.   

    只有顶了……
    ---------------------------------------
    欢迎来我的小站
    http://dreamworld2004.yeah.net
    这是我负责的论坛
    http://www.309s.com/list.asp?boardid=37
      

  20.   

    觉得还是由于你安装时,有些文件没有能够注册
    可以把系统升级为2000,(这个可是一个笨办法)或者装一下MDAC。2。7以下版本
      

  21.   

    客户机什么都不用安装就能访问了
    在2000的软件在98使用要装mdac_type2.7
      

  22.   

    在 Win98 下重新打包。
      

  23.   

    总结一下:
    ----------------------
    重新用VB打包,重装sql 客户端,odbc和sql server 都没问题了。发现还是在打包问题上。
    所以,以上的都有分了。
    ----------------------
    出现新问题:
    用dts导出时,报了一个错,
    ------------------------------
    copy data from 结果 to 结果 步骤 failed
    Microsoft ole db provider for sql server 用户 'Null' 登陆失败.原因:未与信任 sql server 连接相关联。
    ------------------------------
    我的部分代码
    '------------- a new connection defined below.
    'For security purposes, the password is never scriptedSet oConnection = goPackage.Connections.New("SQLOLEDB.1")
            oConnection.ConnectionProperties("Integrated Security") = "SSPI"
            oConnection.ConnectionProperties("Persist Security Info") = True
            oConnection.ConnectionProperties("Initial Catalog") = "HR"'数据库名
            oConnection.ConnectionProperties("Data Source") = "22.196.72.1"'server地址
            oConnection.ConnectionProperties("Application Name") = "DTS 导入/导出向导"
            
            oConnection.Name = "连接1"
            oConnection.ID = 1
            oConnection.Reusable = True
            oConnection.ConnectImmediate = False
            oConnection.DataSource = "22.196.72.1"   'server 地址
            oConnection.ConnectionTimeout = 60
            oConnection.Catalog = "HR"
            oConnection.UseTrustedConnection = True
            oConnection.UseDSL = False
            
            'If you have a password for this connection, please uncomment and add your password below.
            oConnection.UserId = "HR" '特意添加的用户名
            oConnection.Password = "HR" '特意添加得密码
    '与odbc 及 数据库的用户名和密码都相同。
      

  24.   

    98下好像不支持oConnection.ConnectionProperties("Integrated Security") = "SSPI"
    你换成SQL Server分配的用户名密码看看
      

  25.   

    总结:
    1、2000 server 传向 98 或2000 ,客户端开通一个共享目录。权限设定为完全。
    csdn中有详细的代码贴出。
    2、打包时候,一定要用mdac 2.7以上的.mdac 2.6以下的就会出现本标题的问题!
    3、oConnection.ConnectionProperties("Integrated Security") = "SSPI"
    以及oConnection.ConnectionProperties("Persist Security Info") = True 注释掉!
    98不支持 sspi,如果不注释的话,就会出现用户名为'NULL'使人莫名其妙!
    并且 presist security info =true的话,就会报你无权限登陆!
    '------------- a new connection defined below.
    'For security purposes, the password is never scriptedSet oConnection = goPackage.Connections.New("SQLOLEDB")        'oConnection.ConnectionProperties("Persist Security Info") = True '注释掉
            oConnection.ConnectionProperties("User ID") = "hr"
            oConnection.ConnectionProperties("Initial Catalog") = "hr"
            oConnection.ConnectionProperties("Data Source") = "22.196.72.1"
            oConnection.ConnectionProperties("Application Name") = "DTS 导入/导出向导"
            
            oConnection.Name = "连接1"
            oConnection.ID = 1
            oConnection.Reusable = True
            oConnection.ConnectImmediate = False
            oConnection.DataSource = "22.196.72.1"
            oConnection.UserId = "hr"
            oConnection.ConnectionTimeout = 60
            oConnection.Catalog = "hr"
            oConnection.UseTrustedConnection = False
            oConnection.UseDSL = False
            
            'If you have a password for this connection, please uncomment and add your password below.
            oConnection.Password = "hr"