只是为了奠定基础:
- 在 64 位 Windows 服务器上,我们安装了 64 位 SQL Server 2008 R2
- 我们在同一台机器上安装了 32 位版本的 SQL Server Express
使用 32 位 Express 版本,我们成功创建了到 Timberline 数据存储的链接服务器,如下所示:
EXEC sp_addlinkedserver @server = 'TimberlineTest', @provider = 'MSDASQL', @srvproduct='Timberline Data', @datasrc = 'TimberlineDSN'
然后返回所有表:
exec sp_tables_ex 'TimberlineTest'
我们还创建了一个用户,如下所示:
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'TimberlineTest',
@useself = 'False',
@rmtuser = 'sa',
@rmtpassword = 'xxxxxx'
GO
此外,在 SSMS 查询窗口中,这在针对主数据库运行时效果很好:
select * from timberlinetest.[c:\Training\Extended]..Master_PRM_Employee
只要我们从 SSMS 中执行查询,一切都会正常工作。但是,当我们启动任何可能尝试访问该链接服务器的第三方工具时,我们就会遇到麻烦。我们有一个小的查询测试工具,允许您输入连接字符串并运行查询。我们使用此连接字符串首先访问主数据库:
Provider=SQLOLEDB; Data Source=localhost\SQLEXPRESS32BIT; Libraries=Master; User ID=sa; Password=xxxxxx
该连接有效,我们可以 ping 服务器并查询主数据库。但是,当我们尝试相同的 Timberline 查询(从木材线测试中选择 *...)时,我们遇到了这个错误:
无法为链接服务器“timberline test”初始化 OLE DB 提供程序“MSDASQL”的数据源对象。链接服务器“timberline test”的 OLE DB 提供程序“MSDASQL”返回消息“[Sage Timberline Office][Sage Timberline Office ODBCDriver][DRM 文件库] 帐户名无效。”
需要注意的几件事......用于测试目的:
- 在
c:\Training\Extended
我们打开安全范围的目录上,设置Everyone
为完全读写权限 - 在 Timberline 本身中,我们禁用了安全性(工具 > 安全管理 > 安全设置 > 未选中“打开应用程序安全”)
我不确定在这里还能做什么。任何建议都会很棒。