是因为你对sql server没有访问权限而是这样的
用odbc连接:这样写
Provider=MSDASQL.1;User ID=用户名;Password=密码;Data Source=Dsn数据源;Initial Catalog=默认数据库
这样也可以:]
DSN=Dsn数据源;UID=用户名;PWD=密码;DATABASE=默认数据库一般我是用上面这种方式的。。不知道大家用哪种方式?

解决方案 »

  1.   

    cnn1.ConnectionString = "driver={SQL Server};" & _
          "server=srv;uid=sa;pwd=pwd"
       cnn1.Open strCnn
       cnn1.DefaultDatabase = "Pubs"
    Set cnn3 = New ADODB.Connection
       cnn3.Provider = "sqloledb"
       cnn3.Open "Data Source=srv;Initial Catalog=Pubs;", "sa", ""这是MS的例子。
      

  2.   

    black_fox(black_fox) :
      acev这个用户是没有访问数据库的权限,但我是通过odbc,odbc连接没有问题。
      我如果将acev权限放大:添加Administrators组,程序就可以正常运行了。
      与权限是有很大关联,但我总不能给所有要运行此程序的用户赋予adm权限。
      

  3.   

    因为你的ODBC没有写用户和密码。
    第一次。你用administrator登录,对数据库有访问权限。使用 "dsn=ymk;Database=ymk"肯定不会出错。这时就和用:dsn=ymk;uid=adminstator;pwd=你的密码;Database=ymk一样的
    第二次.你用acev登录,对数据库无访问权限,所以出错。这是就相当于用
    dsn=ymk;uid=acev;pwd=acev的密码;databaset=ymk。。肯定是不对的
    建议你在连接串中加入用户名和密码:
    如:dsn=ymk;uid=sa;pwd=sapassword;Database=ymk
    这样就肯定不会错了。