【发布时间】: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