[英]How do I Use Count Function for different values of the same column in 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.