2011-09-21 63 views
2

我们有一个使用一个.mdb Microsoft Access数据库的.exe应用程序。使用链接服务器通过SQL Server公开Microsoft Access数据库

我需要通过Microsoft SQL Server访问访问文件中的数据。我们已将SQL Server 2008 R2 Enterprise链接到指向此Access文件的服务器,并且可以使用SQL语句运行选择/更新查询。

SELECT * FROM [LinkedServerAccessDB]...[SomeTable] 

如何配置,这个链接的服务器,我的Access数据库,直接公布为“数据库”时,一些应用程序试图连接到使用SQL Server实例的名称,用户名和密码,我的SQL Server。我应该使用哪个“数据库名称”来使用直接链接的服务器?

谢谢

+1

+1 to @ p.campbell的答案在下面,但我很好奇为什么需要SQL Server组件。是否有理由不想直接从应用程序连接到Access文件? – Bryan

+0

嗨,是的,很少有应用程序需要从这个Access文件访问数据,它只支持直接MSSQL,并且我不能将所有数据都更改为MSSQL,它需要在当前Access文件中保留原始数据。谢谢 –

回答

3

这听起来像你想使用你的MS Access链接服务器对象的数据库(即在SSMS的“数据库”文件夹中)。这是不可能的,直接。

建议您创建一个模仿该Access数据库名称的新SQL Server数据库。将用户映射到您上面获得的登录名。允许用户针对链接的服务器运行查询。

+0

好的,当我创建新的SQL数据库时,如何创建模仿并将登录映射到Access呢?我的应用程序需要仅支持标准MSSQL,并且我需要(用于其他原因)数据保留在当前形状/访问数据库中。谢谢 –

1

您可以像这样使用CREATE SYNONYM

USE ASQLServerDB 
GO 

CREATE SYNONYM Sometable FOR LinkedServerAccessDB...SomeTable 

一旦做到这一点,你可以写SELECT [...] from SomeTable好像它是数据库中的一员ASQLServerDB

我只能得到它在对象级别的工作,所以你必须这样做为每个你想要暴露的对象。如果您希望获得“以数据库方式发布”的感觉,可以创建一个只包含这些同义词的空数据库。

--This doesn't work 
CREATE SYNONYM Sometable FOR LinkedServerAccessDB... 
+0

嗨,我已经手动为一张桌子创建了synonim,非常感谢你,并且选择和更新查询正常工作。然而,我的应用程序在“Tables”里面看起来不是同义词,所以仍然不能使用数据,例如在带有BCS或某些其他应用程序的Sharepoint中。可以以某种方式在MSSQL管理工作室的“表”部分中提供同义词吗?谢谢 –

相关问题