2016-11-10 35 views
1

我在Azure存儲表服務上啓用了RA-GRS複製。即使沒有故障轉移,是否有從次要中讀取的選項。在連接字符串中需要做什麼修改,而不是在帳戶名稱中添加-condary?Azure表服務 - 從中​​讀取

+0

你直接消耗存儲REST API或使用某種類型的SDK(.NET爲例) ? –

+0

我正在使用.NET SDK。我通過追加-secondary來更改連接字符串並嘗試讀取。它會拋出一個說明「403禁止」身份驗證失敗的異常。 – Shetty

回答

2

讀取地理位置冗餘存儲(RA-GRS)確實允許您在沒有故障切換事件的情況下從輔助端點讀取數據。爲此,您需要將secondary附加到連接字符串中的帳戶名稱。它應該看起來像youraccount-secondary.table.core.windows.net

0

如果您使用.Net SDK,則不必手動將-secondary附加到帳戶名稱。要連接到次要端點,您可以使用TableRequestOptions.LocationMode屬性,並且該屬性將自動連接到次要端點。

看看下面的代碼示例。它列出了從次要位置處存儲帳戶表:

static void ConnectToSecondary() 
    { 
     var cred = new StorageCredentials(accountName, accountKey); 
     var account = new CloudStorageAccount(cred, true); 
     var client = account.CreateCloudTableClient(); 
     var requestOptions = new TableRequestOptions() 
     { 
      LocationMode = Microsoft.WindowsAzure.Storage.RetryPolicies.LocationMode.SecondaryOnly 
     }; 
     var tables = client.ListTables(null, requestOptions); 
     foreach (var table in tables) 
     { 
      Console.WriteLine(table.Uri.AbsoluteUri); 
     } 
    } 

,這裏是從小提琴手輸出:

GET https://account-secondary.table.core.windows.net/Tables HTTP/1.1 
User-Agent: Azure-Storage/7.0.0 (.NET CLR 4.0.30319.42000; Win32NT 6.2.9200.0) 
x-ms-version: 2015-07-08 
Accept-Charset: UTF-8 
MaxDataServiceVersion: 3.0;NetFx 
Accept: application/json;odata=minimalmetadata 
x-ms-client-request-id: 0f123ca9-1f35-4e46-9590-ebca0912baa8 
x-ms-date: Fri, 11 Nov 2016 10:59:14 GMT 
Authorization: SharedKey account:sEsvrm3W0Tn7QhkHqHDrS5o2IvldI4NVUL4U276JudQ= 
Host: account-secondary.table.core.windows.net 
Connection: Keep-Alive 
+0

從表格中讀取我需要一個表格參考。像client.GetTableReference(tablename)。請求選項無法傳遞給此方法。 – Shetty

+0

不,你不能。在表格上執行某些操作時使用請求選項。我剛剛使用了次要端點列表表格的示例。 –