我正在尝试使用 SQL (SQL 2016) 创建一个到访问数据库 (2013) 的链接服务器。我不想在访问中执行任何操作 - 只需从 SQL Studio Management 查询表即可。我尝试创建 ODBC 连接 - 但我只有 32 位选项 - 而不是 64 位。但是如果我创建 32 位(Microsoft Access 驱动程序 (*.mdb)),然后使用 Microsoft OLE DB Provider for ODBC 驱动程序创建链接服务器- 数据源 我正在使用系统 DSN 名称 我收到此消息:
链接服务器已创建,但连接测试失败。您想保留链接服务器吗?
======================================
执行 Transact-SQL 语句或批处理时发生异常。 (微软.SqlServer.ConnectionInfo)
活动地点:
在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(字符串sqlCommand,ExecutionTypes执行类型,布尔重试) 在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(字符串 cmd,布尔重试) 在 Microsoft.SqlServer.Management.Smo.LinkedServer.TestConnection() 在 Microsoft.SqlServer.Management.SqlManagerUI.LinkedServerProperties.DoPreProcessExecution(RunType runType、ExecutionMode&executionResult)
我确实有一些其他链接服务器 - 但都是 Oracle DB 的。我是不是错过了什么?
好吧,如果您的 SQL 服务器以 x64 位运行,那么您必须安装并使用 Access 数据引擎 (ACE) 的 x64 位副本。
您不能将 MS-access x32 与 x64 位版本的 SQL Server 一起使用。
x32 或 x64 位客户端可以轻松连接到 SQL Server?这是可行的,因为这是一个套接字连接。
但是对于 Access,它不是从 sql server 到 ACE 数据引擎的套接字连接。没有您连接到的“服务”。所以这是一个进程内的外部 .dll,由 SQL Server 直接使用和使用来打开 accDB 文件。
因此,使用 ACE 数据引擎的进程的位大小必须匹配。您可以在该服务器上安装 ACE x64 位数据引擎,然后就可以工作了。但是 SQL Server x64 不能使用任何类型的外部 x32 位 dll - 包括 ACE 数据引擎。
警告,ODBC 驱动程序不是线程安全的,只是 OLE Db 提供程序。 此外,Office 和 SQL Server 都不支持这种情况。驱动程序下载明确指出服务器应用程序不支持该驱动程序。