Performing a case insensitive table storage query: Storage client 3.0

I'm using Storage Client 3.0 and performing queries against entity properties such as a string value for email address.
I'm using the TableQuery class and my query looks something like this:
CloudTable accountsTable = tableClient.GetTableReference(Settings.AccountTable);
TableQuery<Account> rangeQuery = new TableQuery<Account>().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "account"),
TableOperators.And,
TableQuery.GenerateFilterCondition("Email", QueryComparisons.Equal, email)));
var results = accountsTable.ExecuteQuery(rangeQuery).ToList();
This works fine when the entity I'm searching for matches the case of my search term.  But how can I perform a case insensitive search?  I think this was possible when using linq queries but how do I accomplish this in the new storage client?
thanks

Hi,
As far as I know, azure table storage didn't support some linq operator, such as this page  (http://msdn.microsoft.com/en-us/library/dd135725.aspx) shown. You could use some common
linq methods, as those sample (http://blogs.msdn.com/b/kylemc/archive/2010/11/22/windows-azure-table-storage-linq-support.aspx).
Also, I suggest you could refer to same thread (http://stackoverflow.com/questions/8805759/azure-table-storage-query-in-net-with-property-names-unknown-at-design-time).
You could change your code to linq format and try it.
Thanks.
Any question, please let me know.
Thanks.
Will
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey.

Similar Messages

  • How to hide "Note that the search is case insensitive" text from Query Region

    Hi,
    When create a search page with Query region : Autocustomizationcriteria mode, page is showing automatically "Note that the search is case insensitive" text is showing automatically.
    this is not needed. can you please let me know how to hide this one from page.
    Regards,
    Ram

    Check this link:
    https://forums.oracle.com/message/9227812#9227812
    --Sushant

  • ADF table: case-insensitive sorting

    I have an <af:table> that uses a SortableModel as it's data source. I have sorting enabled on the table, but it's sorted according to case sensitivity.
    My data source has mixed case, and I'd like to be able to sort regardless of case. Is there anyway to change the behavior so it does a case-insensitive sort instead?
    Thanks

    In case anyone else is looking for this, I went ahead and wrote an extension of CollectionModel that performs a case insensitive sort on String objects. I'm posting it here in the hopes it will help others in the same jam I was. It would really have been helpful if Oracle had made the source code to SortableModel available. I hope I did things properly with the rowKey stuff since there are no examples to work from.
    Anyway, here it is:
    package com.fhm.mwb.ui.model;
    import oracle.adf.view.faces.model.CollectionModel;
    import oracle.adf.view.faces.model.SortCriterion;
    import org.apache.commons.beanutils.BeanComparator;
    import org.apache.commons.collections.comparators.ComparableComparator;
    import org.apache.commons.collections.comparators.ComparatorChain;
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import javax.faces.FacesException;
    import javax.faces.model.DataModelEvent;
    import javax.faces.model.DataModelListener;
    * This class provides a sortable data model that uses case insensitive sort order when processing
    * String objects.  All other objects in the data must implement Comparable and are sorted using
    * Comparable.compare().
    public class CaseInsensitiveSortableModel extends CollectionModel {
        private static BasicComparator _comparator = new BasicComparator();
         * Default constructor.
        public CaseInsensitiveSortableModel() {
         * Construct on top of a list of data.
         * @param list List of data to wrap in the model
        public CaseInsensitiveSortableModel(List list) {
            setWrappedData(list);
         * Set the sort criteria for this model
         * @param criteria List of SortCriterion objects
        public void setSortCriteria(List criteria) {
            _sortCriteria = criteria;
            if((criteria != null) && (criteria.size() > 0)) {
                // Sort our model data using this new criteria
                ComparatorChain chain = new ComparatorChain();
                for(int i = 0; i < criteria.size(); i++) {
                    SortCriterion crit = (SortCriterion) criteria.get(i);
                    chain.addComparator(new BeanComparator(crit.getProperty(), _comparator),
                        !crit.isAscending());
                List list = (List) getWrappedData();
                Collections.sort(list, chain);
                setWrappedData(list);
            } else {
                // Clear out our sort order
                _sortCriteria = new ArrayList();
         * Get the current sort criteria.
         * @return List of sort criteria
        public List getSortCriteria() {
            return _sortCriteria;
         * Determine if a given column is sortable.
         * @param column Name of the column to test
         * @return boolean true if the column is sortable
        public boolean isSortable(String column) {
            return true;    // Everything is sortable for now
         * Sets up a value at a particular rowKey to be the current value. The current value
         * is returned by calling {@link #getRowData}.
         * @param rowKey the rowKey of the value to make current. Use null to clear the current value.
        public void setRowKey(String rowKey) {
            if(rowKey == null) {
                setRowIndex(-1);
            } else {
                setRowIndex(Integer.valueOf(rowKey).intValue());
         * Gets the rowKey of the current value. The current value is returned by
         * calling {@link #getRowData}.
         * @return the rowKey of the current value, or null if there is no current value
        public String getRowKey() {
            return isRowAvailable() ? String.valueOf(_rowIndex) : null;
         * Set the list data we are wrapping
         * @throws ClassCastException if data is
         *  non-null and is not a List
        public void setWrappedData(Object data) {
            _wrappedList = (List) data;
            if(_wrappedList == null) {
                setRowIndex(-1);
         * Return the object representing the data wrapped by this model, if any.
        public Object getWrappedData() {
            return _wrappedList;
         * Return true if there is wrappedData
         * available, and the current value of rowIndex is greater
         * than or equal to zero, and less than the size of the list.  Otherwise,
         * return false.
         * @exception FacesException if an error occurs getting the row availability
        public boolean isRowAvailable() {
            return ((_rowIndex < 0) || (_rowIndex > getRowCount())) ? false : true;
         * If there is wrappedData available, return the
         * length of the list.  If no wrappedData is available,
         * return -1.
         * @exception FacesException if an error occurs getting the row count
        public int getRowCount() {
            return (_wrappedList == null) ? (-1) : _wrappedList.size();
         * If row data is available, return the list element at the index
         * specified by rowIndex.  If no wrapped data is available,
         * return null.
         * @exception IllegalArgumentException if now row data is available
         *  at the currently specified row index
        public Object getRowData() {
            if(_wrappedList == null) {
                return null;
            } else if(!isRowAvailable()) {
                throw new IllegalArgumentException("No row data available");
            } else {
                return wrappedList.get(rowIndex);
         * Return the zero-relative index of the currently selected row.  If
         * we are not currently positioned on a row, or no wrappedData
         * is available, return -1.
         * @exception FacesException if an error occurs getting the row index
        public int getRowIndex() {
            return _rowIndex;
         * Set the zero-relative index of the currently selected row, or -1
         * to indicate that we are not positioned on a row.  It is
         * possible to set the row index at a value for which the underlying data
         * collection does not contain any row data.  Therefore, callers may
         * use the isRowAvailable() method to detect whether row data
         * will be available for use by the getRowData() method.
         * If there is no wrappedData available when this method
         * is called, the specified rowIndex is stored (and may be
         * retrieved by a subsequent call to getRowData()), but no
         * event is sent.  Otherwise, if the currently selected row index is
         * changed by this call, a {@link DataModelEvent} will be sent to the
         * rowSelected() method of all registered
         * {@link DataModelListener}s.
         * @param rowIndex The new zero-relative index (must be non-negative)
         * @exception FacesException if an error occurs setting the row index
         * @exception IllegalArgumentException if rowIndex
         *  is less than -1
        public void setRowIndex(int rowIndex) {
            if(rowIndex < -1) {
                throw new IllegalArgumentException("Row index must be >= 0");
            int old = _rowIndex;
            _rowIndex = rowIndex;
            if(_wrappedList == null) {
                return;
            DataModelListener[] listeners = getDataModelListeners();
            if((old != _rowIndex) && (listeners != null)) {
                Object rowData = null;
                if(isRowAvailable()) {
                    rowData = getRowData();
                DataModelEvent event = new DataModelEvent(this, _rowIndex, rowData);
                int n = listeners.length;
                for(int j = 0; j < n; j++) {
                    if(null != listeners[j]) {
                        listeners[j].rowSelected(event);
        private List _wrappedList = new ArrayList();
        private List _sortCriteria = new ArrayList();
        private int _rowIndex = -1;
         * Internal class to provide a general Comparator that treats Strings in a case
         * insensitive manner.  All other types are assumed to be instances of Comparable
         * and handled as such.
        private static class BasicComparator implements Comparator, Serializable {
            private static final Comparator INSENSITIVE_COMPARATOR = String.CASE_INSENSITIVE_ORDER;
            private static final Comparator NORMAL_COMPARATOR = ComparableComparator.getInstance();
            public BasicComparator() {
            public int compare(Object o1, Object o2) {
                if(o1 instanceof String && o2 instanceof String) {
                    return INSENSITIVE_COMPARATOR.compare(o1, o2);
                } else {
                    return NORMAL_COMPARATOR.compare(o1, o2);
    }

  • Case insensitive search in SE16

    Hello Community,
    We have a Z table which contains the field "filename," containing both upper & lowercase alphanumeric values. 
    I was surprised to find that it is not so easy to perform a case insensitive search against those field values using SE16.
    It would be perfect if:
       1. a search in SE16 for `file.txt` will find the results of all records related to the file "file.txt"
       2. a search in SE16 for `FiLe.TxT` will also find all records related to the file "file.txt"
    Can someone help me to accomplish this ?
    Thanks!
    Keith Helfrich

    Hi everyone,
    The goal is to perform a case insensitive search in SE16.  Is there no way to do this ?
    While there are a variety of work-arounds, for example : it is possible to store all the values in the table in UPPERCASE, these work-arounds do not solve our problem. 
    The values in the table need to be stored with the accurate case, exactly as the file is named at the UNIX level.  Since UNIX is also case sensitive, we need to be accurate with the case when storing statistics data about the files. 
    Yet, when searching in SE16, it is problematic because we don't always know the correct case.  For that reason, a case insensitive search is required.
    This seems to be a very basic function that I am surprised SAP doesn't provide...

  • QueryFilter Case Insensitive search

    Hi Guys,
    I am using QueryFilter in my application service and trying to query a string field in my entity service. The QueryFilter performs a case sensitive search. My requirement is to perform a case insensitive search. Is this possible? Can't find anything in the QueryFilter javadoc.
    Thanks

    bump

  • Case insensitive comparison

    Is there a way or setting at instance level by which all character value comparisons can happen in case insensitive manner ( For example "ABC" = "Abc" or = "abc" ) without requiring to use upper or lower functions in every query

    No there isn't a way currently. You can create a function based index which improves the performance of case insensitive searches. For example:
    SQL> CREATE INDEX case_insensitive_ind ON my_table(NLS_UPPER(empname));
    SQL> SELECT * FROM my_table WHERE NLS_UPPER(empname) = 'KARL';

  • What is the best way to do a case insensitive search?

    Hi Guys,
    hopefully a quick one, anyone know what the best way to perform a case-insensitive search is? at the moment many of our stored procedures perform selects against un-indexed fields (e.g. product title) and to avoid casing problems we have an UPPER around the field name and the variable e.g.
    AND (nvcproducttitle IS NULL OR
    UPPER(p.NVCTITLE) LIKE '%' || UPPER(nvcproducttitle) || '%')
    This seems to work just fine but on a large catalogue (10 million+) it can take 50-60 seconds to return.
    Any pointers would be appreciated,
    J

    user7186902 wrote:
    Hi Guys,
    hopefully a quick one, anyone know what the best way to perform a case-insensitive search is? at the moment many of our stored procedures perform selects against un-indexed fields (e.g. product title) and to avoid casing problems we have an UPPER around the field name and the variable e.g.
    AND (nvcproducttitle IS NULL OR
    UPPER(p.NVCTITLE) LIKE '%' || UPPER(nvcproducttitle) || '%')
    This seems to work just fine but on a large catalogue (10 million+) it can take 50-60 seconds to return.
    Any pointers would be appreciated,
    JYou could either ensure you have a function based index for your column e.g.
    create or replace index fn_idx on prodtable (upper(nvctitle));
    nb. syntax not checked
    or you could use regular expressions. REGEXP_LIKE allows for case insensitive like searches.
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/conditions007.htm#SQLRF00501

  • Make the relationship in between multiple table storage's tables will affect the performance

    Hi,
    i'm going to develop business application,the product ID needs to be generic one and it should automatically generate the unique id(like identity in sql ) but,it has to be generate in formatted way 
    for example the ID would be "cityCode+areaCode+uniqueNumber" . here, cityCode and areaCode are going to maintain in separate table. while generate the product id, going to find the cityCode table and AreaCode table the generate  unique
    number by merge all the respective information.
    1) while doing all this will affect the performance Azure table storage performance and  web application ?
    2) making multiple relationship among multi-Table Storage will decrease the performance ?. 

    Hello,
    When you say tables, are referring to Azure Storage Tables or Relational Databases?
    Please note Windows Azure tables do not function in the same manner as tables in a relational database since they do not make use of relationships or have schemas.
    And if you are referring to relational databases, the latency in performance would depend on the logic used to generate the unique ID.
    You should be able to use the logic in an On-Prem SQL database and check for the latency.
    Regards,
    Malar.

  • How to improve performance for Azure Table Storage bulk loads

    Hello all,
    Would appreciate your help as we are facing a challenge.
    We are tried to bulk load Azure table storage. We have a file that contains nearly 2 million rows.
    We would need to reach a point where we could bulk load 100000-150000 entries per minute. Currently, it takes more than 10 hours to process the file..
    We have tried Parallel.Foreach but it doesn't help. Today I discovered Partitioning in PLINQ. Would that be the way to go??
    Any ideas? I have spent nearly two days in trying to optimize it using PLINQ, but still I am not sure what is the best thing to do.
    Kindly, note that we shouldn't be using SQL/Azure SQL for this.
    I would really appreciate your help.
    Thanks

    I'd think you're just pooling the parallel connections to Azure, if you do it on one system.  You'd also have a bottleneck of round trip time from you, through the internet to Azure and back again.
    You could speed it up by moving the data file to the cloud and process it with a Cloud worker role.  That way you'd be in the datacenter (which is a much faster, more optimized network.)
    Or, if that's not fast enough - if you can split the data so multiple WorkerRoles could each process part of the file, you can use the VM's scale to put enough machines to it that it gets done quickly.
    Darin R.

  • Oracle Table Storage Parameters - a nice reading

    bold Gony's reading excercise for 07/09/2009 bold -
    The below is from the web source http://www.praetoriate.com/t_%20tuning_storage_parameters.htm. Very good material.The notes refers to figures and diagrams which cannot be seen below. But the text below is ver useful.
    Let’s begin this chapter by introducing the relationship between object storage parameters and performance. Poor object performance within Oracle is experienced in several areas:
    Slow inserts Insert operations run slowly and have excessive I/O. This happens when blocks on the freelist only have room for a few rows before Oracle is forced to grab another free block.
    Slow selects Select statements have excessive I/O because of chained rows. This occurs when rows “chain” and fragment onto several data blocks, causing additional I/O to fetch the blocks.
    Slow updates Update statements run very slowly with double the amount of I/O. This happens when update operations expand a VARCHAR or BLOB column and Oracle is forced to chain the row contents onto additional data blocks.
    Slow deletes Large delete statements can run slowly and cause segment header contention. This happens when rows are deleted and Oracle must relink the data block onto the freelist for the table.
    As we see, the storage parameters for Oracle tables and indexes can have an important effect on the performance of the database. Let’s begin our discussion of object tuning by reviewing the common storage parameters that affect Oracle performance.
    The pctfree Storage Parameter
    The purpose of pctfree is to tell Oracle when to remove a block from the object’s freelist. Since the Oracle default is pctfree=10, blocks remain on the freelist while they are less than 90 percent full. As shown in Figure 10-5, once an insert makes the block grow beyond 90 percent full, it is removed from the freelist, leaving 10 percent of the block for row expansion. Furthermore, the data block will remain off the freelist even after the space drops below 90 percent. Only after subsequent delete operations cause the space to fall below the pctused threshold of 40 percent will Oracle put the block back onto the freelist.
    Figure 10-83: The pctfree threshold
    The pctused Storage Parameter
    The pctused parameter tells Oracle when to add a previously full block onto the freelist. As rows are deleted from a table, the database blocks become eligible to accept new rows. This happens when the amount of space in a database block falls below pctused, and a freelist relink operation is triggered, as shown in Figure 10-6.
    Figure 10-84: The pctused threshold
    For example, with pctused=60, all database blocks that have less than 60 percent will be on the freelist, as well as other blocks that dropped below pctused and have not yet grown to pctfree. Once a block deletes a row and becomes less than 60 percent full, the block goes back on the freelist. When rows are deleted, data blocks become available when a block’s free space drops below the value of pctused for the table, and Oracle relinks the data block onto the freelist chain. As the table has rows inserted into it, it will grow until the space on the block exceeds the threshold pctfree, at which time the block is unlinked from the freelist.
    The freelists Storage Parameter
    The freelists parameter tells Oracle how many segment header blocks to create for a table or index. Multiple freelists are used to prevent segment header contention when several tasks compete to INSERT, UPDATE, or DELETE from the table. The freelists parameter should be set to the maximum number of concurrent update operations.
    Prior to Oracle8i, you must reorganize the table to change the freelists storage parameter. In Oracle8i, you can dynamically add freelists to any table or index with the alter table command. In Oracle8i, adding a freelist reserves a new block in the table to hold the control structures. To use this feature, you must set the compatible parameter to 8.1.6 or greater.
    The freelist groups Storage Parameter for OPS
    The freelist groups parameter is used in Oracle Parallel Server (Real Application Clusters). When multiple instances access a table, separate freelist groups are allocated in the segment header. The freelist groups parameter should be set the number of instances that access the table. For details on segment internals with multiple freelist groups, see Chapter 13.
    NOTE: The variables are called pctfree and pctused in the create table and alter table syntax, but they are called PCT_FREE and PCT_USED in the dba_tables view in the Oracle dictionary. The programmer responsible for this mix-up was promoted to senior vice president in recognition of his contribution to the complexity of the Oracle software.
    Summary of Storage Parameter Rules
    The following rules govern the settings for the storage parameters freelists, freelist groups, pctfree, and pctused. As you know, the value of pctused and pctfree can easily be changed at any time with the alter table command, and the observant DBA should be able to develop a methodology for deciding the optimal settings for these parameters. For now, accept these rules, and we will be discussing them in detail later in this chapter.
    There is a direct trade-off between effective space utilization and high performance, and the table storage parameters control this trade-off:
    For efficient space reuse A high value for pctused will effectively reuse space on data blocks, but at the expense of additional I/O. A high pctused means that relatively full blocks are placed on the freelist. Hence, these blocks will be able to accept only a few rows before becoming full again, leading to more I/O.
    For high performance A low value for pctused means that Oracle will not place a data block onto the freelist until it is nearly empty. The block will be able to accept many rows until it becomes full, thereby reducing I/O at insert time. Remember that it is always faster for Oracle to extend into new blocks than to reuse existing blocks. It takes fewer resources for Oracle to extend a table than to manage freelists.
    While we will go into the justification for these rules later in this chapter, let’s review the general guidelines for setting of object storage parameters:
    Always set pctused to allow enough room to accept a new row. We never want to have a free block that does not have enough room to accept a row. If we do, this will cause a slowdown since Oracle will attempt to read five “dead” free blocks before extending the table to get an empty block.
    The presence of chained rows in a table means that pctfree is too low or that db_block_size is too small. In most cases within Oracle, RAW and LONG RAW columns make huge rows that exceed the maximum block size for Oracle, making chained rows unavoidable.
    If a table has simultaneous insert SQL processes, it needs to have simultaneous delete processes. Running a single purge job will place all of the free blocks on only one freelist, and none of the other freelists will contain any free blocks from the purge.
    The freelist parameter should be set to the high-water mark of updates to a table. For example, if the customer table has up to 20 end users performing insert operations at any time, the customer table should have freelists=20.
    The freelist groups parameter should be set the number of Real Application Clusters instances (Oracle Parallel Server in Oracle8i) that access the table.

    sb92075 wrote:
    goni ,
    Please let go of 20th century & join the rest or the world in the 21st century.
    Information presented is obsoleted & can be ignored when using ASSM & ASSM is default with V10 & V11I said the same over here for the exactly same thread, not sure what the heck OP is upto?
    Oracle Table Storage Parameters - a nice reading
    regards
    Aman....

  • Case insensitive query from a JSP

    I am using JDeveloper 3.1 to create JSP applications using the wizard for business components for JSP application.
    The default query screen allows a search to be performed on all the fields on the table (using the Findform web bean).
    How can I change the search such that the query is Case Insensitive ?
    Many Thanks,
    Ketan.
    Many Thanks,
    Ketan.

    Forms is not really instrumented to query clobs directly. Google "oracle forms and clob" to see some suggestions on how to handle clobs in Forms

  • 403 Error when access Table Storage using SAS token

    I have Azure Mobile Service which has a custom API to generate a sas token for accessing Table Storage from Windows Store app.
    I get following error in Windows Store app while accessing table storage using sas token:
    Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
    Example of sas token generated:
    se=2014-09-12T03%3A10%3A00Z&sp=rw&spk=MicrosoftAccount%3A005d92ef08ec5d83081afed1e08641d2&epk=MicrosoftAccount%3A005d92ef08ec5d83081afed1e08641d2&sv=2014-02-14&tn=Folders&sig=91c7S1QM0byNdM80JncwRribXqsWS1iKmOH8cRvHWhQ%3D
    Azure Mobile Services API Code that generates sas token:
    exports.get = function(request, response) {
    var azure = require('azure-storage');
    var accountName = 'myAccountName';
    var accountKey = 'myAccountKey';
    var host = accountName + '.table.core.windows.net';
    var tableService = azure.createTableService(accountName, accountKey, host);
    var sharedAccessPolicy = {
    AccessPolicy: {
    Permissions: 'rw', //Read and Write permissions
    Expiry: dayFromNow(1),
    StartPk: request.user.userId,
    EndPk: request.user.userId
    var sasToken = tableService.generateSharedAccessSignature('myTableName', sharedAccessPolicy);
    response.send(statusCodes.OK, { sasToken : sasToken });
    function dayFromNow(days){
    var result = new Date();
    result.setDate(result.getDate() + days);
    return result;
    Windows Store app code that uses sas token:
    public async Task TestSasApi()
    try
    var tableEndPoint = "https://myAccount.table.core.windows.net";
    var sasToken = await this.MobileService.InvokeApiAsync<Azure.StorageSas>("getsastoken", System.Net.Http.HttpMethod.Get, null);
    StorageCredentials storageCredentials = new StorageCredentials(sasToken);
    CloudTableClient tableClient = new CloudTableClient(new Uri(tableEndPoint), storageCredentials);
    var tableRef = tableClient.GetTableReference("myTableName");
    TableQuery query
    = new TableQuery().Where(TableQuery.GenerateFilterCondition("PartitionKey",
    QueryComparisons.Equal,
    this.MobileService.CurrentUser.UserId));
    TableQuerySegment seg = await tableRef.ExecuteQuerySegmentedAsync(query, null);
    foreach (DynamicTableEntity ent in seg)
    string str = ent.ToString();
    catch (Exception ex)
    string msg = ex.Message;
    Exception:
    Any help is appreciated.
    Thanks in advance!
    Thanks, Vinod Shinde

    Hi Mekh,
    Thanks for the links. I checked them and mostly they are due to date time on client and server.
    But this is not the case in this scenario.
    here is the Request and Response from Fiddler.
    Request:
    GET
    https://myaccount.table.core.windows.net/Folders?se=2014-09-13T02%3A33%3A26Z&sp=rw&spk=MicrosoftAccount%3A005d92ef08ec5d83081afed1e08641d2&epk=MicrosoftAccount%3A005d92ef08ec5d83081afed1e08641d2&sv=2014-02-14&tn=Folders&sig=YIwVPHb2wRShiyE2cWXV5hHg0p4FwQOGmWBHlN3%2FRO8%3D&api-version=2014-02-14&$filter=PartitionKey%20eq%20%27MicrosoftAccount%3A005d92ef08ec5d83081afed1e08641d2%27
    HTTP/1.1
    Accept: application/atom+xml, application/xml
    Accept-Charset: UTF-8
    MaxDataServiceVersion: 2.0;NetFx
    x-ms-client-request-id: b5d9ab61-5cff-498f-94e9-437694e9256c
    User-Agent: WA-Storage/4.2.1 (Windows Runtime)
    Host: todoprime.table.core.windows.net
    Response:
    HTTP/1.1 403 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
    Content-Length: 437
    Content-Type: application/xml
    Server: Microsoft-HTTPAPI/2.0
    x-ms-request-id: 22c0543b-0002-0049-7337-da39f4000000
    Date: Thu, 11 Sep 2014 02:33:28 GMT
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
      <code>AuthenticationFailed</code>
      <message xml:lang="en-US">Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
    RequestId:22c0543b-0002-0049-7337-da39f4000000
    Time:2014-09-11T02:33:29.6520060Z</message>
    </error>
    Do you see anything different in this request/response?
    Thanks, Vinod Shinde

  • Table storage got 4 times slower from day to day

    Hi, I've run tasks which added data to the table storage on my cloudapp each night for the last months, but since Friday 13th (yeah 13th, thats what I thought), the tasks have been executing 4 times slower.
    The exact Work being done, is around 250,000 calls to 'ExecuteBatch' split up on three workers - thursday I got around 20 ops, and since Friday I've been getting around 5 ops. See the storage graph below. It clearly shows that the requests has dropped
    significantly...
    Does the azure table storage limit bandwidth in some cases, or what could have happened?
    Has anyone experienced this or something similar before?

    Hi APMadsen,
    I guess the azure table storage may be affected by larger and larger data. If so, I suggest you could pay attention to your query code and spend on the query code optimization (refer to this thread
    http://social.msdn.microsoft.com/Forums/windowsazure/en-US/5326d280-513f-47a3-826d-2db97ebd9ace/why-is-this-azure-table-storage-query-so-slow). Also, I suggest you could refer to this big data sample (http://www.troyhunt.com/2013/12/working-with-154-million-records-on.html
    ) and this blog (http://robertgreiner.com/2012/06/why-is-azure-table-storage-so-slow/ ).
    Hope it helps.
    Will
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Is this the best design for asynchronous notifications (such as email)? Current design uses Web Site, Azure Service Bus Queue, Table Storage and Cloud Service Worker Role.

    I am asking for feedback on this design. Here is an example user story:
    As a group admin on the website I want to be notified when a user in my group uploads a file to the group.
    Easiest solution would be that in the code handling the upload, we just directly create an email message in there and send it. However, this seems like it isn't really the appropriate level of separation of concerns, so instead we are thinking to have a separate
    worker process which does nothing but send notifications. So, the website in the upload code handles receiving the file, extracting some metadata from it (like filename) and writing this to the database. As soon as it is done handling the file upload it then
    does two things: Writes the details of the notification to be sent (such as subject, filename, etc...) to a dedicated "notification" table and also creates a message in a queue which the notification sending worker process monitors. The entire sequence
    is shown in the diagram below.
    My questions are: Do you see any drawbacks in this design? Is there a better design? The team wants to use Azure Worker Roles, Queues and Table storage. Is it the right call to use these components or is this design unnecessarily complex? Quality attribute
    requirements are that it is easy to code, easy to maintain, easy to debug at runtime, auditable (history is available of when notifications were sent, etc...), monitor-able. Any other quality attributes you think we should be designing for?
    More info:
    We are creating a cloud application (in Azure) in which there are at least 2 components. The first is the "source" component (for example a UI / website) in which some action happens or some condition is met that triggers a second component or "worker"
    to perform some job. These jobs have details or metadata associated with them which we plan to store in Azure Table Storage. Here is the pattern we are considering:
    Steps:
    Condition for job met.
    Source writes job details to table.
    Source puts job in queue.
    Asynchronously:
    Worker accepts job from queue.
    Worker Records DateTimeStarted in table.
    Queue marks job marked as "in progress".
    Worker performs job.
    Worker updates table with details (including DateTimeCompleted).
    Worker reports completion to queue.
    Job deleted from queue.
    Please comment and let me know if I have this right, or if there is some better pattern. For example sake, consider the work to be "sending a notification" such as an email whose template fields are filled from the "details" mentioned in
    the pattern.

    Hi,
    Thanks for your posting.
    This development mode can exclude some errors, such as the file upload complete at the same time... from my experience, this is a good choice to achieve the goal.
    Best Regards,
    Jambor  
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • SELECT Query to get the Values in Case insensitive Format

    Hi ,
    This is hari,
    I want to select the user name in a table ex: username="HARI" or username='Hari' or username="HaRi" like this
    If i wrote the query like
    select username from userdb where username="Hari";
    it is displaying the records which only matches "Hari" only .
    can anybody help me out on this query asap please....
    the query should return all the results
    which matches any of the following strings as inputs "HARI" or "HaRi" or "hAri" or the like.
    Awaiting for Response,
    Thanks & Regards
    Hari

    Another solution is setting NLS_SORT to CI - case insensitive (or whatever_your_language_is_CI) and NLS_COMP to ANSI:
    SQL> with t as (
      2             select 'HARI' name from dual union all
      3             select 'Hari' name from dual union all
      4             select 'HaRi' name from dual
      5            )
      6  select  *
      7    from  t
      8    where name = 'hArI'
      9  /
    no rows selected
    SQL> alter session set nls_sort = binary_ci
      2  /
    Session altered.
    SQL> alter session set nls_comp=ansi
      2  /
    Session altered.
    SQL> with t as (
      2             select 'HARI' name from dual union all
      3             select 'Hari' name from dual union all
      4             select 'HaRi' name from dual
      5            )
      6  select  *
      7    from  t
      8    where name = 'hArI'
      9  /
    NAME
    HARI
    Hari
    HaRi
    SQL> SY.

Maybe you are looking for