0

我在我的 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

编辑


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

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

现在,我收到此消息

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

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

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


编辑


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

现在正在工作。

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

1 回答 1

0

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

Server=dev.xxxxxxx.vmc;Database=report1;Integrated Security=True;
于 2012-09-25T15:52:48.573 回答