Error 40532 坑,趕緊紀錄一下!
2022/4/27 坑
開發時會遇到連線失敗,主體名稱不正確之類的訊息
結論:需要信任伺服器端憑證
TrustServerCertificate=true
Server=10.10.0.2;Database=test;user id=test;password=test;TrustServerCertificate=true;
說明:
應該是因為原本憑證是發給 database.windows.net
但是我們這邊用的是用 IP 導致憑證驗證失敗
所以在地端開發時直接信任伺服器端憑證
發佈到 Azure App Service 時
如果是直接連 TestDbServerName.database.windows.net
就不需要設定 TrustServerCertificate=true
2021/8/31 坑
VPN 連線後 SQL Server 發生「無法產生 SSPI 內容」錯誤 | The Will Will Web (miniasp.com)
結論:SQL 登入帳號後面要加上 @伺服器名稱
例如原本 SQL Server = TestDbServerName.database.windows.net
登入帳號為 Admin
用 VPN 在 SSMS 的帳號欄位要輸入 Admin@TestDbServerName
否則會得到錯誤:40532
參照:在使用者名中明確提供伺服器名稱,用於Azure SQL DB、MySQL 和后格雷斯QL - 微軟技術社區 (microsoft.com)
Step 1:建立 Azure VPN Getway
這邊見的時候可能先看一下目前自己的內網 IP 網段是甚麼
在建立 Vnet 的時候網段要錯開
比如公司內網 10.0.0.x
手機分享網路 192.168.0.x
那建立 Vnet 的時候就不要用 10.0.x.x or 192.168.x.x
參照:使用 P2S VPN 連線至 VNet & 憑證驗證:入口網站 - Azure VPN Gateway | Microsoft Docs
Step 2:建立 SQL 私人端點
建完就有個內網 IP 稍微記一下等等連到資料庫的時候要用
參照:Tutorial: Connect to an Azure SQL server using an Azure Private Endpoint - Portal | Microsoft Docs
Step 3:安裝 VPN 並連線
就把 Step 1 的私人憑證匯入到每個要連線的電腦
然後把從 Azure 下載回來的 CA 可能也要匯入到信任的根憑證
再安裝 Azure 下載的 x64 VPN Clinet
就會在電腦右下網路裡面看到該 VPN
按連線理論上就可以成功了
Step 4:測試連線
設定完並連結 VPN 後可以在 PowerShell (電源殼?) 輸入以下命令測試連線
Test-NetConnection 10.0.0.4 -Port 1433
P.S. 這邊假定 SQL 私人端點分配的內網 IP 為 10.0.0.4 請依照實際分配位置輸入
注意:這邊一定要指定 1433 Port, ping 應該是關掉不會過的, 回想起來我因此卡了很久
Step 5:使用 SSMS 登入
輸入 SQL 私人端點分配的內網 IP 當作 SQL Server Host
然後將帳號後面加上 @SQL伺服器名稱 (參照開頭的結論部分)
密碼就一樣
理論上就可以不用開 WAN IP 白名單
也可以連到 Azure SQL
Note: