簡體   English   中英

如何獲取ms-access作為其他用戶連接到ms-sql?

[英]How do I get ms-access to connect to ms-sql as a different user?

我如何獲得ms-access連接(通過ODBC)作為與其Active Directory ID不同的用戶連接到ms-sql數據庫?

我不想在ODBC連接中指定一個帳戶,我想在ms-access端進行該操作以將其隱藏在我的用戶之外。 在ODBC連接中執行此操作會讓我重新回到我想要避免的原始狀態。

是的,這與先前的問題有關: http//www.stackoverflow.com/questions/50164/

如果你使用“ODBC DSN-LESS連接”,我想你可以按照你想要的方式工作

如果需要,請使用Windows身份驗證將ODBC DSN保留在用戶的計算機上。 為您的用戶提供對數據庫的只讀訪問權限。 (如果他們創建一個新的mdb文件並鏈接表,他們將只能讀取數據。)

創建一個對數據庫具有讀/寫權限的SQL登錄。

編寫一個VBA例程,它循環遍歷鏈接表並重置連接以使用SQL登錄,但一定要使用“DSN-Less”語法。

"ODBC;Driver={SQL Native Client};" &
       "Server=MyServerName;" & _
       "Database=myDatabaseName;" & _
       "Uid=myUsername;" & _
       "Pwd=myPassword"

將此例程稱為啟動代碼的一部分。

關於這種方法的幾點注意事項:

  • 一旦從“讀/寫”更改為“只讀”並嘗試返回“讀/寫”而不關閉並重新打開數據庫(mde / mdb)文件,Access似乎就會出現連接信息問題。 如果您可以在啟動時將其更改為讀/寫,並且在會話期間不更改此解決方案應該可以正常工作。

  • 通過使用DSN - Less連接,您可以在代碼中隱藏用戶的憑據(假設您給他們一個mde文件,您應該沒問題)。 通常硬編碼連接字符串不是一個好主意,但由於你正在處理一個內部應用程序,你應該可以使用這種方法。

為什么不使用集成/ Windows安全性。 您可以向活動目錄組授予您希望用戶使用的權限,然后將用戶帳戶添加到該組。 我相信您還可以使用sql server的角色功能來限制基於所使用的客戶端應用程序的功能。

我認為您必須在要用於連接的帳戶下啟動MS Access流程。 有各種工具可以讓你這樣做,比如CPAU 此工具也允許您加密密碼。

我們在此承認您正在使用ODBC連接到您的數據庫並啟用了集成安全性,因此您沒有/不想在連接字符串中寫入用戶名/密碼值(根據我的正確選擇)。

在這種情況下,幸運的是,在連接數據時無法“模擬”另一個用戶。 承認我能夠做出這樣的事情將是集成安全性的巨大突破!

我從您之前的帖子中了解到,您希望用戶能夠更新數據,具體取決於他們使用的客戶端界面。 據我所知,我們的想法是為每個表創建一個鏈接的“不可更新”視圖。 比方說,一個名為每個表Table_Blablabla創建視圖(=在Access查詢)稱為View_Table_Blablabla ...)。

使用Access時,您可以在運行時決定是否要打開可更新表或只讀視圖。 這可以在運行時,在form_Open事件中,通過將表單recordsource設置為表或視圖來完成。

@Philippe
我假設你使用admit這個詞大致等同於理解或者同意 ; 否認相反。

我理解讓所有用戶使用一個ID和密碼登錄數據庫(並將它們存儲在應用程序中)的含義。 對我而言,這比我現在面臨的問題風險要小。
@off

問題的更多背景知識:我在使用Windwos NT身份驗證的每個用戶工作站上設置了ODBC連接。 大多數情況下,用戶使用MDE設置連接以使用該ODBC連接 - 在這種情況下,他們總是能夠添加/更新/刪除數據。

問題在於,一些用戶已經足夠了解MS-Access以創建新的mdb並將其鏈接到MS-SQL服務器。 然后,他們可以在表格中編輯數據,而不是通過執行一定量驗證和手持的應用程序。 而且他們喜歡這樣做,但有時會把它弄得亂七八糟,給我帶來麻煩。

我希望做的(我剛剛嘗試過)是為每個表刷新數據庫的鏈接(注意:我已將ODCB連接切換為此實驗的SQL Server身份驗證,並將帳戶添加到SQL服務器: readonly - 不能進行任何更新, readwrite - 對表有完全權限)。

myTable.Connect = _
                "ODBC;" & _
                "DATABASE=" & "MyTestDB" & ";" & _
                "UID=readonly;" & _
                "PWD=readonly_password;" & _
                "DSN=" & "MyTestDB" & ";"
myTable.RefreshLink

這會阻止他們編輯,但我無法讓以后的readwrite工作

myTable.Connect = _
                "ODBC;" & _
                "DATABASE=" & "MyTestDB" & ";" & _
                "UID=readwrite;" & _
                "PWD=readwrite_password;" & _
                "DSN=" & "MyTestDB" & ";"
myTable.RefreshLink

看來,無論我先與誰聯系,都要堅持不懈。 如果我開始readwrite然后轉到readonly,則表保持readwrite權限

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM