Предоставить доступ к базе данных Microsoft Access через SQL Server, используя связанный сервер - PullRequest
2 голосов
/ 21 сентября 2011

У нас есть одно приложение .exe, которое использует одну базу данных Microsoft Access .mdb.

Мне нужно получить доступ к данным внутри файла доступа через Microsoft SQL Server. У нас есть SQL Server 2008 R2 Enterprise, на котором связанный сервер указывает на этот файл Access, и я могу выполнить запрос выбора / обновления с помощью оператора SQL.

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

Как настроить, чтобы этот связанный сервер, моя база данных Access, был напрямую опубликован как «База данных», когда какое-либо приложение пытается подключиться к моему SQL Server, используя имя экземпляра SQL Server, а также имя пользователя и пароль. Какое «имя базы данных» я должен использовать, чтобы использовать напрямую связанный сервер?

Спасибо

Ответы [ 2 ]

3 голосов
/ 21 сентября 2011

Звучит так, как будто вы хотите, чтобы ваш объект MS Access Linked Server был доступен в качестве базы данных (то есть в папке «Базы данных» в SSMS).Это невозможно, напрямую.

Предложите вам создать новую базу данных SQL Server, которая имитирует имя этой базы данных Access.Привяжите пользователя к тому логину, который вы указали выше.Разрешить пользователю выполнять запросы к связанному серверу.

1 голос
/ 21 сентября 2011

Вы можете использовать CREATE SYNONYM примерно так.

USE ASQLServerDB
GO

CREATE SYNONYM Sometable FOR LinkedServerAccessDB...SomeTable

Как только это будет сделано, вы можете написать SELECT [...] from SomeTable, как если бы он был членом базы данных ASQLServerDB

Мне удалось заставить его работать только на уровне объекта, поэтому вам нужно будет делать это для каждого объекта, который вы хотите выставить. Вы могли бы создать пустую базу данных, которая просто содержала бы эти синонимы, если бы вы хотели, чтобы это чувство было опубликовано как база данных.

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