共用方式為


用來存取彈性資料庫用戶端程式庫的認證

適用於:Azure SQL 資料庫

彈性資料庫用戶端程式庫會使用三種不同的認證來存取分區對應管理員。 視需要而定,使用可能的最低存取層級認證。

  • 管理認證:用於建立或操作分區對應管理員。 (請參閱詞彙)。
  • 存取認證:用於存取現有的分區對應管理員,以取得分區的相關資訊。
  • 連線認證:用於連線至分區。

另請參閱管理 Azure SQL Database 中的資料庫和登入

關於管理認證

管理認證可用於為操作分區對應的應用程式,建立 ShardMapManager (Java.NET) 物件。 (如需範例,請參閱使用彈性資料庫工具新增分區資料相依路由)。 彈性擴展用戶端程式庫的使用者會建立 SQL 使用者和 SQL 登入,並確定每個使用者也獲得全域分區對應資料庫和所有分區資料庫的讀/寫權限。 執行對分區對應的變更時,這些認證可用來維護全域分區對應和本機分區對應。 例如,使用管理認證來建立分區對應管理員物件 (使用 GetSqlShardMapManager (Java.NET):

// Obtain a shard map manager.
ShardMapManager shardMapManager = ShardMapManagerFactory.GetSqlShardMapManager(smmAdminConnectionString,ShardMapManagerLoadPolicy.Lazy);

變數 smmAdminConnectionString 是包含管理認證的連接字串。 使用者 ID 和密碼提供分區對應資料庫和個別分區的讀/寫存取權。 管理連接字串也包含伺服器名稱和資料庫名稱,以識別全域分區對應資料庫。 以下是針對該用途的一般連接字串:

"Server=<yourserver>.database.windows.net;Database=<yourdatabase>;User ID=<yourmgmtusername>;Password=<yourmgmtpassword>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"

請勿以 "username@server" 的形式使用值,而僅使用 "username" 值。 這是因為認證必須同時針對可能位於不同伺服器上的分區對應管理員資料庫和個別分區運作。

存取認證

在未管理分區對應的應用程式中建立分區對應管理員時,請使用具有全域分區對應唯讀權限的認證。 從這些認證下的全域分區對應擷取的資訊會用於資料相依路由,並在用戶端上填入分區對應快取。 認證是透過 GetSqlShardMapManager 的相同呼叫模式提供:

// Obtain shard map manager.
ShardMapManager shardMapManager = ShardMapManagerFactory.GetSqlShardMapManager(smmReadOnlyConnectionString, ShardMapManagerLoadPolicy.Lazy);  

請注意,使用 smmReadOnlyConnectionString 來反映代表非系統管理員使用者使用此存取的不同認證:這些認證不得在全域分區對應上提供寫入權限。

連線認證

使用 OpenConnectionForKey (Java, .NET) 方法存取與分區金鑰關聯的分區時,需要額外的認證。 這些認證需要提供權限,才能以唯讀方式存取位於分區上的本機分區對應資料表。 這需要針對分區上的資料相依路由執行連線驗證。 此程式碼片段允許資料相依路由內容中的資料存取:

using (SqlConnection conn = rangeMap.OpenConnectionForKey<int>(targetWarehouse, smmUserConnectionString, ConnectionOptions.Validate))

在此範例中,smmUserConnectionString 會保留使用者認證的連接字串。 針對 Azure SQL Database,以下是使用者認證的典型連接字串:

"User ID=<yourusername>; Password=<youruserpassword>; Trusted_Connection=False; Encrypt=True; Connection Timeout=30;"  

如同管理員認證,請勿使用格式為 "username@server" 的值。 改為僅使用 "username"。 另請注意,連接字串不包含伺服器名稱和資料庫名稱。 這是因為 OpenConnectionForKey 呼叫會根據金鑰,自動將連線導向正確的分區。 因此,不會提供資料庫名稱和伺服器名稱。

另請參閱

管理 Azure SQL Database 中的資料庫和登入

保護 SQL Database

彈性資料庫工作

尚未使用彈性資料庫工具? 請參閱使用者入門指南。 如有疑問,請在 SQL Database 的 Microsoft Q&A 問題頁面上與我們連絡。如有功能要求,請在 SQL Database 意見反應論壇中新增想法或投票支持現有的想法。