使用 Windows Auth 從不受信任的電腦連接到 SQL Server 的 Excel 數據
我們有一個 Excel 電子表格,它使用與 SQL Server 數據庫的數據連接。數據庫伺服器已加入我們的域,並啟用了 Windows 身份驗證。
這是連接字元串的範例(顯示資訊被混淆):
Description=DataConnection;DRIVER=SQLServer; SERVER=10.x.y.z;UID=domain_user;Trusted_Connection=Yes; APP=Microsoft Office 2010;DATABASE=DatabaseName
並且身份驗證設置設置為“Windows 身份驗證”
這在加入域/受信任的機器上工作得很好。它甚至不要求提供憑據;當我點擊刷新時,它可以完美地工作。
如果我使用 SQL 身份驗證,它將在非域/不受信任的工作站上工作。但我們正試圖擺脫這一點。
同樣,如果我使用“runas”使用域憑據啟動 Excel,它將來自使用 Windows 身份驗證的非域電腦,如下所示:
runas /netonly /user:domain\user %path-to-excel%\excel.exe
但是,使用“runas”是一個雜項,我們的員工幾乎肯定會遇到問題……即使我要創建批處理文件來幫助自動化它。
從非域電腦正常啟動 Excel(不使用“runas”)時,當我點擊刷新時會出現此錯誤:
點擊確定後,我可以選擇取消選中“使用受信任的連接”並手動輸入使用者/密碼。我輸入了一個有效使用者,該使用者能夠從加入域的機器正常連接,或者使用“runas”工作正常。這是它給出的錯誤:
在這一點上,我不知道如何讓 Excel 成功連接來自非域電腦的域憑據。
想法?
我們的解決方案最終是 ShellRunas。
https://technet.microsoft.com/en-us/sysinternals/cc300361.aspx
通過使用 /netonly 開關創建自定義快捷方式來啟動 Excel,我們可以讓他們輸入其域憑據,然後打開所需的電子表格。它不是 100% 透明的,但已經足夠了。
您需要讓 SQL Server 知道將使用數據庫連接的人員的使用者名和密碼。然而,這是有風險的,因為人們離開了組織,職位發生了變化,安全許可也發生了變化。
在 SQL Server 中創建一個專用的只讀使用者(假設不需要從 Excel 更改數據到 SQL Server),該使用者對數據庫具有 DBREADONLY 權限。然後更改 Excel 數據連接上的憑據以引用創建的單個使用者。
最後,為此,您需要讓 Excel 知道它通過 FILE -> 選項等“信任”與外部數據源的 SQL 連接。最後一點必須在每個 Excel 本地安裝中完成. 如果 Excel 在雲端執行,它會變得更加棘手,因為您需要將連接器設置到您的數據庫伺服器。