我写了一个测试程序用于VB连接SQL Server2000(VB+ADO+SQLServer2000数据库).结果有些客户机运行后能够正常连接上,而有些客户机始终连接不上.显示错误信息:"用户'(null)'登录失败.原因:未与信任SQL Server连接相关联."; 我将连接不上服务器的客户机升级到MADC2.8,还是无济于事.是否和客户机所使用的操作系统有关系呢?有一台连接上的客户机安装的是Professional2000的操作系统,一台是Professional XP的操作系统;而连接不上的也是Professional2000的操作系统和Professional XP的操作系统,真是奇怪透了!请各位大虾指点一二!
其连接代码如下:Public Function ExecuteSQL(ByVal SQL As String, Msgstring As String) As ADODB.Recordset
Dim Lasan As Integer
Dim cnn As ADODB.Connection                                      '定义一个联接
Dim rst As ADODB.Recordset                                       '定义一个记录集
Dim stokens() As String                                          '定义字符串On Error GoTo ExecuteSQL_error                                   '异常处理stokens = Split(SQL)                                             '用Split函数产生一个包含各个子串的数组Set cnn = New ADODB.Connection                                   '创建联接cnn.ConnectionTimeout = 10                                       
cnn.Provider = "sqloledb"                                        
cnn.Properties("data source").Value = "192.168.0.110"            '服务器的名字或地址
cnn.Properties("initial catalog").Value = "VB+ADO+SQL连接测试"   '库名
cnn.Properties("integrated security").Value = "SSPI"             
cnn.Open                                                         '将数据库打开
Set rst = New ADODB.Recordset                                    '创建数据集对象
    rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic     '进行查询操作
    Set ExecuteSQL = rst                                           '将查询后的值赋值给函数ExecuteSQL
    Msgstring = "查询到" & rst.RecordCount & "条记录"              '操作结果说明executeSQL_Exit:
Set rst = Nothing                                                  '清空数据集对象
Set cnn = Nothing                                                  '中断联接
Exit FunctionExecuteSQL_error:                                                  '错误类型判断,并由字符串Msgstring带回
Msgstring = "查询错误:" & Err.Description
Lasan = MsgBox(Msgstring & "。程序不能正常运行,请检查本地数据库是否启动!", vbExclamation + vbOKCancel) 'Lasan返回一个对话框的结果
If Lasan = 1 Then
   End
Else
End If
Resume executeSQL_Exit
End Function

解决方案 »

  1.   

    是你的SQL中许可模式的许可客户端过少。
      

  2.   

    最好是不要用Windows验证登录,换成通过SQL Server用户登录比较好。
      

  3.   

    在工程/引用中把microsoft ado 2.6 改成 microsoft ado 2.0 试一下,我以前也碰见过这样改一下就好了,不知道为什么,非常奇怪的问题:)
      

  4.   

    数据库使用的是SQL 和 Windows身份验证.所有客户端都是一样的,使用SSPI方式登录的.试试将ado 2.6改为 ado2.0能登陆上的还是能登上,不能登的始终不能登上.郁闷!
      

  5.   

    直接用连接字符串连接看看。
    StrConn="Provider=SQLOLEDB.1;Password=9588;Persist Security Info=True;User ID=sa;Initial Catalog=GSJBBH;Data Source=192.168.0.110"
    Cnn.Open StrConn
      

  6.   

    有的机器上可以登录说明连接代码中的连接方法是可行的
    所以要检查一下用户权限和网络状况等等
    同意TechnoFantasy(冰儿马甲www.applevb.com) 的看法,换成通过SQL Server用户登录比较好