Sql-Server

用於只讀訪問的 Sql server/azure 連接字元串參數?

  • December 16, 2019

是否有可以在 SQL Server/Azure 連接字元串中使用的特定參數來指定連接應該是只讀的?

換句話說,只有 SELECT 查詢應該工作,但 INSERT/UPDATE/DELETE 和 DDL 語句應該返回錯誤。

我知道 ApplicationIntent=ReadOnly 參數,但我的理解是它的目的是連接到只讀副本。就我而言,目標伺服器可能沒有任何只讀副本。在這種情況下,ApplicationIntent=ReadOnly 是否足以使連接成為只讀,即使它連接到主節點?

不,很遺憾沒有這樣的連接字元串參數。SQL 驅動程序僅使用“ApplicationIntent=ReadOnly”選項來嘗試將您的連接路由到只讀副本。

我建議,如果有使用者或程序應該只有對該數據庫的讀取權限,您可以使用內置的 SQL Server 權限來完成此操作。換句話說,只有db_datareader當他們正在訪問表和直接查看時,才將這些使用者/程序添加到數據庫角色中。

如果他們通過儲存過程訪問數據,請注意只授予他們EXECUTE讀取過程的權限。

引用自:https://dba.stackexchange.com/questions/255734