2011-09-21 82 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管理工作室的「表」部分中提供同義詞嗎?謝謝 –

相關問題