public DataSet MultiShardQuery(string commandText) { DataSet _ds = new DataSet(); try { RetryPolicy.DefaultExponential.ExecuteAction(() => { using (MultiShardCommand cmd = new MultiShardConnection(lsm.GetShards(), shardConnectionString).CreateCommand()) { cmd.CommandText = commandText; cmd.CommandType = CommandType.Text; cmd.ExecutionOptions = MultiShardExecutionOptions.None; //04/23/2015 by Mark Berman - switched to Partial results versus CompleteResults as timeout exception was being thrown cmd.ExecutionPolicy = MultiShardExecutionPolicy.PartialResults; using (MultiShardDataReader sdr = cmd.ExecuteReader()) { if (sdr.Read()) { // the multi-shard query does not return a dataset or datarow. // we have to manually re-create a table structure, then fill it with data. object[] sqlValues = new object[sdr.FieldCount]; sdr.GetSqlValues(sqlValues); DataTable dtValues = new DataTable(); foreach (var column in sqlValues) { dtValues.Columns.Add(new DataColumn { DataType = column.GetType() }); } _ds.Tables.Add(dtValues); _ds.Tables[0].Rows.Add(sqlValues); while (sdr.Read()) { sdr.GetSqlValues(sqlValues); _ds.Tables[0].Rows.Add(sqlValues); } } } } }); } catch { _ds = null; } return(_ds); }