2

只是为了奠定基础:

  • 在 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 本身中,我们禁用了安全性(工具 > 安全管理 > 安全设置 > 未选中“打开应用程序安全”)

我不确定在这里还能做什么。任何建议都会很棒。

4

1 回答 1

1

(在问题编辑中回答。转换为社区 wiki 答案。请参阅没有答案的问题,但问题在评论中解决(或在聊天中扩展)

OP写道:

问题解决了。

我将连接字符串更改为:

Provider=SQLOLEDB; Data Source=.\sqlexpress32bit; Libraries=master; Trusted_Connection=Yes

那行得通!

于 2015-01-31T15:44:27.193 回答