Linux 上的 SQL Server:来自 Windows 的 ODBC 连接有效,应用程序无效



我有一个带有Linux Ubuntu 16.04'服务器'的测试环境,运行MS SQL Server 17,其中托管了公司数据库。我的客户端计算机是 Windows 7 计算机。

  • 我已经设法将数据库导入Linux服务器,并且能够从Windows客户端创建并成功测试ODBC连接。
  • Windows PC上的SQL Server
  • Management Studio能够在Linux上的SQL Server实例上创建/删除表,创建用户,对象等。

我在VB 6.0中按如下方式连接

Dim rec1 As ADODB.Recordset 
Set rec1 = New ADODB.Recordset 
rec1.Open "Select * from tblSysReg", gstrDefaultDB, adOpenDynamic, adLockOptimistic 
  • gstrDefaultDB 是包含已注册和测试的 ODBC 连接的名称的字符串。
  • 连接测试凭据为:系统管理员 (sa( 和密码。
  • 连接设置为使用 SQL Server 身份验证

这是生成错误的位置,如下所示:

  • 自动化错误代码 -2147217843

但是,当我从Windows客户端运行软件程序时,它无法从数据库表(tblSysReg(中"读取"并生成自动化错误。

成功的 ODBC 连接参数如下:

  • 类型: TCP/IP
  • 服务器:10.0.0.3
  • 端口:1433

我以"sa"身份登录,使用我在 Linux 上的 SQL Server 的 SQL Server 密码。

我正在努力了解连接测试是如何成功的,使用连接的程序无法从 Linux 上的 SQL Server 数据库中的任何表中读取

?提前谢谢你。

根据注释中的代码,您尝试将连接字符串传递给rec1.Open()而不是连接对象。 您需要使用 Connection 对象打开与数据库的连接,然后在打开 Recordset 时使用该对象。

像这样的东西

Dim conn as ADODB.Connection
Dim rec1 As ADODB.Recordset
Set conn = New ADODB.Connection
Set rec1 = New ADODB.Recordset
conn.Open gstrDefaultDB
rec1.Open "Select * from tblSysReg", conn, adOpenDynamic, adLockOptimistic
... [do more stuff] ...
rec1.Close
conn.Close

还可以在Connection上使用Execute方法返回记录集。

Dim conn as ADODB.Connection
Dim rec1 As ADODB.Recordset
Set conn = New ADODB.Connection
conn.Open gstrDefaultDB
Set rec1 = conn.Execute("Select * from tblSysReg")
... [do more stuff] ...
rec1.Close
conn.Close

查看此页面以获取更多示例:
https://support.microsoft.com/en-us/help/168336/how-to-open-ado-connection-and-recordset-objects

相关内容

  • 没有找到相关文章

最新更新