请问用VB如何访问远程SQL Server2000服务器.配置如下:
1.服务器装有 Win2003 Server,SQL Server2000服务器版(有数据库db_APGRLC,数据表tb_Det)
2.客户机装有 WinXP,VB
请问如何在客户机的VB中用Adodc控件访问服务器的数据表tb_Det,
服务器的SQL Server2000要如何设置?请详细点,本人刚学SQL 2000.谢谢!

解决方案 »

  1.   

    Public Function cnstr() As String
      cnstr = "Provider=SQLOLEDB;Persist Security Info=False;User ID=sa;Initial Catalog=db_Csell"
    End Function
    Public Function Cnn() As ADODB.Connection    '定义函数
      Set Cnn = New ADODB.Connection
      '返回一个数据库连接
     Cnn.Open "Driver={SQL Server};Server=(local);Database=db_Csell;Uid=sa;Pwd="
    End Function
    Private Sub cmdOK_Click()
      Static intMyTimes As Integer
      Dim rs1 As New ADODB.Recordset
      Dim rs2 As New ADODB.Recordset
      rs1.Open "权限信息表", Cnn, adOpenStatic, , adCmdTable
      If rs1.RecordCount > 0 Then
        If txtUserName.text = "" Then
            MsgBox "请输入用户名!", , "提示窗口"
            txtUserName.SetFocus
            Exit Sub
        End If
        rs2.Open "权限信息表 where 操作员='" + txtUserName.text + "'", Cnn, adOpenKeyset, adLockOptimistic
        If rs2.RecordCount > 0 Then
          If txtPassword.text = "" Then
            MsgBox "请输入密码!", , "提示窗口"
            txtPassword.SetFocus
            Exit Sub
          End If
          If txtPassword = rs2.Fields("密码") Then
              Load frm_main
              frm_main.Show
              czy = txtUserName
              Unload Me
          Else
             If intMyTimes > MaxTimes Then
                MsgBox "您无权使用该软件!", , "提示窗口"
                End
             Else
               MsgBox "密码不正确,请重新输入!", , "提示窗口"
               intMyTimes = intMyTimes + 1
               txtPassword.SetFocus
              End If
          End If
        Else
          MsgBox "用户名不正确,请重新输入!", , "提示窗口"
          txtUserName.SetFocus
        End If
        rs2.Close
      Else
        MsgBox "初次登录本系统,请在进入系统后,立即设置操作员及其密码,以确保系统的安全!", , "提示窗口"
        Load frm_main
        frm_main.Show
        Unload Me
      End If
      rs1.Close
    End Sub
      

  2.   

    sql server 2000的设置参考如下,VB的不知道.远程连接sql server 2000服务器的解决方案  一 看ping 服务器IP能否ping通。   这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。   二 在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。   如telnet 202.114.100.100 1433   通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。   如果这一步有问题,应该检查以下选项。   1 检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。   2 检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开 开始菜单-> 程序-> Microsoft SQL Server-> 服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。   3 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。   事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。   4 如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。   5 检查服务器是否在1433端口侦听。如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入   netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。如果没有,则通常需要给sql server 2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。   如果以上都没问题,这时你再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。恭喜你,你马上可以开始在企业管理器或查询分析器连接了。   三 检查客户端设置   程序-> Microsoft SQL Server -> 客户端网络使用工具。像在服务器网络实用工具里一样,确保客户端tcp/ip协议启用,并且默认端口为1433(或其他端口,与服务器端保持一致就行)。   四 在企业管理器里或查询那分析器连接测试   企业管理器-> 右键SQlserver组-> 新建sqlserver注册-> 下一步-> 写入远程IP-> 下一步-> 选Sqlserver登陆-> 下一步-> 写入登陆名与密码(sa,password)-> 下一步-> 下一步-> 完成   查询分析器-> 文件-> 连接-> 写入远程IP-> 写入登录名和密码(sa,password)-> 确定   通常建议在查询分析器里做,因为默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是4秒,而查询分析器是15秒。   修改默认连接超时的方法:   企业管理器-> 工具-> 选项-> 在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡-> 连接设置-> 在 登录超时(秒) 后面的框里输入一个较大的数字   查询分析器-> 工具-> 选项-> 连接-> 在 登录超时(秒) 后面的框里输入一个较大的数字   通常就可以连通了,如果提示错误,则进入下一步。   五 错误产生的原因通常是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接。解决方法如下所示:   1 在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server。   2 展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡。   3 在"身份验证"下,选择"SQL Server和 Windows "。   4 重新启动SQL Server服务。(在dos或命令行下面net stop mssqlserver停止服务,net start mssqlserver启动服务,也是一种快捷的方法)。 
      

  3.   

    --定义数据库连接,连接字符串
    dim CN as ADODB.Connection,strCon as string
    Set CN = new ADODB.Connection
    strCon = "Provider = Sqloledb; User ID = " & Userid & ";Password = " & UserPWD & "; Initial Catalog = " & DatabaseName & "; Data Source = " & ServerName
    MsgBox strCon
    CN.CursorLocation = adUseClient
    --数据库连接
    CN.Open strCon
      

  4.   

    --定义数据库连接,连接字符串
    --你要VB->工程—>引用 microsoft activex data objects 2.*  library
    dim CN as ADODB.Connection,strCon as string
    Set CN = new ADODB.Connection
    strCon = "Provider = Sqloledb; User ID = " & Userid & ";Password = " & UserPWD & "; Initial Catalog = " & DatabaseName & "; Data Source = " & ServerName
    MsgBox strCon
    CN.CursorLocation = adUseClient
    --数据库连接
    CN.Open strConcn.execute "select * from tb_Det"
      

  5.   

    推荐用1楼的代码,但1楼用的是本地数据库而不是远程数据库所以在连接串中要将server指向远程数据库的IP地址
      

  6.   

    'VB/VBA中实现数据库中的文件存取'示例数据库为ACCESS数据库,用SQL数据库的话,只需要改连接字符串
    '
    '*************************************************************************
    '**
    '** 使用 ADODB.Stream 保存/读取文件到数据库
    '** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
    '**
    '** ----- 数据库连接字符串模板 ---------------------------------------
    '** ACCESS数据库
    '** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
    '**     ";Data Source=数据库名"
    '**
    '** SQL数据库
    '** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
    '**     "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
    '**
    '*************************************************************************
    '
    '保存文件到数据库中
    Sub s_SaveFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConcStr As String
        
        'ACCESS数据库的连接字符串
        iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=F:\My Documents\客户资料1.mdb"
        
    'SQL数据库的连接字符串
        iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
            "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
        '读取文件到内容
        Set iStm = New ADODB.Stream
        With iStm
            .Type = adTypeBinary    '二进制模式,如果是用text/ntext字段保存纯文本数据,则改用 adTypeText
            .Open
            .LoadFromFile "c:\test.doc"
        End With
        
        '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "表", iConc, adOpenKeyset, adLockOptimistic
            .AddNew         '新增一条记录
            .Fields("保存文件内容的字段") = iStm.Read
            .Update
        End With
        
        '完成后关闭对象
        iRe.Close
        iStm.Close
    End Sub'从数据库中读取数据,保存成文件
    Sub s_ReadFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConc As String
        
        '数据库连接字符串
        iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=\\xz\c$\Inetpub\zj\zj\zj.mdb"
        
        '打开表
        Set iRe = New ADODB.Recordset
        iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
        iRe.Filter = "id=64"    if iRe("img").ActualSize>0 Then     '保存到文件
        Set iStm = New ADODB.Stream
        With iStm
            .Mode = adModeReadWrite
            .Type = adTypeBinary '二进制模式,如果是用text/ntext字段保存纯文本数据,则改用 adTypeText
            .Open
            .Write iRe("img")
            .SaveToFile "c:\test.doc"
        End With
        
        '关闭对象
        iStm.Close
    End If    iRe.Close
    End Sub
      

  7.   

    多谢2楼,SQL2000的连接问题已解决.
    现在就差VB的连接问题了,我用下面代码连接.
    CnnStr = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=db_APGRCL;Data Source=cadvb"
    adoCon.Open (CnnStr)
    就出现"SQL Server 不存在或拒绝访问"的错误.
    cadvb为服务器名.
    如果把"cadvb"改为"."本地数据库就没问题.请问各位高手如何解决?