简体   繁体   English

使用链接服务器通过SQL Server公开Microsoft Access数据库

[英]Expose Microsoft Access database over SQL Server using linked server

We have one .exe application that uses one .mdb Microsoft Access database. 我们有一个使用一个.mdb Microsoft Access数据库的.exe应用程序。

I need to access data inside access file over Microsoft SQL Server. 我需要通过Microsoft SQL Server访问访问文件中的数据。 We have SQL Server 2008 R2 Enterprise that has linked server pointed to this Access file and I can run select / update query using SQL statement. 我们有SQL Server 2008 R2 Enterprise,它已链接服务器指向此Access文件,我可以使用SQL语句运行select / update查询。

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

How can I configure that this linked server, my Access database, is directly published as "Database" when some application tries to connect to my SQL Server using SQL Server instance name, and username and password. 当某些应用程序尝试使用SQL Server实例名称,用户名和密码连接到我的SQL Server时,如何配置此链接服务器(我的Access数据库)直接发布为“数据库”。 Which "database name" should I use to use directly linked server ? 我应该使用哪个“数据库名称”来使用直接链接的服务器?

Thank you 谢谢

It sounds like you want your MS Access Linked Server object available as a database (ie available in the 'Databases' folder in SSMS). 听起来您希望将MS Access Linked Server对象用作数据库(即,在SSMS的“ Databases”文件夹中可用)。 This isn't possible, directly. 直接是不可能的。

Suggest you create a new SQL Server database that mimics the name of that Access database. 建议您创建一个模仿该Access数据库名称的新SQL Server数据库。 Map a user to that login you've got above. 将用户映射到上面的登录名。 Allow the user to run queries against the linked server. 允许用户对链接服务器运行查询。

You can use CREATE SYNONYM like so. 您可以像这样使用CREATE SYNONYM

USE ASQLServerDB
GO

CREATE SYNONYM Sometable FOR LinkedServerAccessDB...SomeTable

Once this is done you can write SELECT [...] from SomeTable as though it was a member of the database ASQLServerDB 完成此操作后,您可以SELECT [...] from SomeTable编写SELECT [...] from SomeTable就好像它是数据库ASQLServerDB的成员一样。

I was only able to get it to work at the object level so you'll need to do this for each object you want to expose. 我只能使它在对象级别起作用,因此您需要对要公开的每个对象执行此操作。 You could create an empty database that just contained these Synonyms if you wanted to get that "published as a database" feel. 如果您想获得“作为数据库发布”的感觉,则可以创建一个仅包含这些同义词的空数据库。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM