2016-11-10 3 views
1

Я включил репликацию RA-GRS на моей службе таблицы хранения 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

Нет, вы не можете. Вы используете параметры запроса при выполнении некоторой операции над таблицей. Я просто использовал пример листинга таблиц со вторичной конечной точки. –