【问题标题】:VB.NET connect to Win2008 SQL server DBVB.NET连接Win2008 SQL server DB
【发布时间】:2012-09-17 03:25:24
【问题描述】:

我在我的 Windows XP Professional SP3 机器上运行 Visual Studio 2008。

服务器在 Windows 2008 R2 Enterprise SP1 上

服务器在我们的网络上,我可以通过连接字符串中使用的 DNS 名称以及 IP 地址 ping 它。

在 ObjDa.Fill(dsReturn) 语句期间,出现此错误。

没有可用的错误信息,结果代码: DB_E_ERRORSOCCURRED(0x80040E21)。

    Dim strQuery As String = "select * from sys.Tables" 
    Dim strConn As String = "Server=dev.xxxxxxx.vmc;" & _
              "Uid=xxxx;PWD=xxxxx;Database=report1;Integrated Security=False;"

    Dim ObjDa As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(strQuery, strConn)

    Try
        Dim dsReturn As DataSet = New DataSet
        ObjDa.Fill(dsReturn)
        ObjDa.Dispose()
        Return dsReturn
    Catch ex As Exception
        Dim strError as string = ex.Message()
    End Try

编辑


根据 Tim 的评论建议,我已将代码更改为使用以下行

Dim ObjDa As SqlDataAdapter = New SqlDataAdapter(pStrQuery, strConnection)

现在,我收到了这条消息

用户“vmc\adam”登录失败。

当我通过远程桌面连接连接到该服务器时,使用我的 Windows 凭据登录,然后启动 SQL Management Studio...身份验证类型是“VMC\adam”的“Windows 身份验证”,而我没有t 输入密码。

但是,当我在连接字符串中使用相同的凭据时,它会出错。想法?


编辑


我发现一个网站建议在连接字符串中使用以下设置,并删除用户名和密码,以启用 Windows 身份验证。

现在可以正常工作了。

integrated security=SSPI;persist security info=False; Trusted_Connection=Yes;

【问题讨论】:

  • 你为什么用OleDbDataAdapter而不是SqlDataAdapter?您还应该使用SqlConnection。也使用Using-Statement 连接和数据适配器,以确保即使在出现异常的情况下也能处理(并关闭)它们。

标签: sql sql-server vb.net connection dataadapter


【解决方案1】:

当您指定 uid/密码组合并将集成安全设置为 false 时,它​​会尝试查找 sql server 登录而不是 windows 登录。如果要使用 Windows 身份验证,则需要将连接字符串更改为此。

Server=dev.xxxxxxx.vmc;Database=report1;Integrated Security=True;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多