Multiple Active Result Sets (MARS)

What's the meaning of Multiple Active Result Sets (MARS)?
Michael

MARS means not being limited to a single open DataReader per connection. MARS is an enhancement for the Sql Server client in .NET 2.0. Oracle never had this limitation to begin with.
David

Similar Messages

  • Report Control and Multiple Datasets/Result Sets

    I have four results sets, Plan, Forecast, Actual and SPLY per eight different product lines.  I want to add conditional formatting of background color if actual is above or below Plan and/or Forecast.  The report needs to export properly to Excel.
     Is there a way I can use one control rather than multiple text boxes to display the data, allow for conditional formatting and export to Excel.?  Thanks!
    Environment:
    SSRS 2010
    SQL Server 2012

    Hi blairv,
    If I understand correctly, you have a dataset in the report which include four fields: Plan, Forecast, Actual and SPLY. Each filed contains eight values.
    In SQL Server Reporting Services (SSRS), we can use table, matrix or list display report data in cells. The cells typically contain text data such as text, dates, and numbers but they can also contain gauges, charts, or report items such as images.
    Reference: http://technet.microsoft.com/en-us/library/dd220592.aspx
    In your case, we can use expression to configure these items background color. Please refer to the following steps:
    Click a specific text box in the report. Click BackgroundColor prompt in the Properties dialog box.
    Click Expression prompt. And fill with expression below:
    =IIF(Fields! Actual.Value>Fields! Plan.Valeu Or Fields! Actual.Value>Fields! Forecast.Valeu,”Red”,”Blue”)
    Reference: http://msdn.microsoft.com/en-us/library/ms157328.aspx
    If there are any miunderstanding, please feel free to let me know.
    Regards,
    Alisa Tang
    If you have any feedback on our support, please click
    here.
    Alisa Tang
    TechNet Community Support

  • How to get the number of records of a streaming result set

    Hi guys.
    So if it wasn't a streaming result set, I would have done this:
    {noformat}myResultSet<code class="jive-code jive-java">.last();
    {color:navy}*int*{color} numResults = </code>myResultSet<code class="jive-code jive-java">.getRow();
    </code>myResultSet<code class="jive-code jive-java">.beforeFirst();
    </code>{noformat}
    but being a streaming result set, beforeFirst() throws an exception...
    So how do you get the number of records in that result set? I wanna avoid an extra count(*) query, so I would appreciate other solutions than that.

    JoachimSauer wrote:
    vanwil wrote:
    you see, for now I just use a count(*) query to get the number of records, but that's adding a lot of extra waiting time...Iterating over the result twice will surely be slower then doing the count(*).great! so what I got now is actually the fastest way there is... awesome...
    If you get an exception, then you surely have a stack trace. That should tell you what happens, or at least where.com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:2066)
    Why do you need to know the number of elements beforehand, anyway?I need to know the number of elements because the incoming data goes into a table. Now of course, I could use ArrayList<String[]> or something, but wouldn't that require more memory resources than Object[][] ?
    No one can tell you that, at least not without more information (say, the stack trace for example).Here's the exception message:
    java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@10c0ef2 is still active. Only one streaming result set may be open and in use per-connection. Ensure that you have called .close() on  any active result sets before attempting more queries.

  • Problem opening 2 result sets

    Hi we are having problems with leaking database connections. We are using the jdbc debug features of oc4j (9.0.2).
    Basically we connect to database 1, do a query and open a result set, then create a connection to database 2 and try to execute a query on it. The problem is that if the first's resultset is open, the debugging complains that there are multiple open result sets. This is leading to database connections not getting release when they should be.
    Here's an example of the code we are using (which is in a stateless session bean):
    public void test(){
    try {
    Connection connection;
    DataSource dataSource;
    Context context = new InitialContext();
    dataSource = (DataSource) context.lookup(Constants.NHHDC_DATABASE);
    connection = dataSource.getConnection();
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    statement = connection.prepareStatement(" SELECT 'X' FROM DUAL");
    resultSet = statement.executeQuery();
    resultSet.next();
    DataSource reamsDataSource;
    Context reamsContext = new InitialContext();
    reamsDataSource = (DataSource) reamsContext.lookup(Constants.REAMS_DATABASE);
    Connection reamsConnection = reamsDataSource.getConnection();
    PreparedStatement reamsStatement = null;
    ResultSet reamsResultSet = null;
    reamsStatement = reamsConnection.prepareStatement("SELECT 'X' FROM DUAL");
    System.out.println("LAST STATEMENT");
    reamsResultSet = reamsStatement.executeQuery();
    System.out.println("FINISHED");
    reamsResultSet.close();
    reamsStatement.close();
    reamsConnection.close();
    resultSet.close();
    statement.close();
    connection.close();
    } catch (NamingException e) {
    System.out.println("naming error " + e.getMessage());
    } catch (SQLException e) {
    System.out.println("sql error " + e.getMessage());
    The error coming from the debug is:
    *********** OPEN SETS: ************
    java.lang.Exception: com.evermind.sql.DebugPreparedResultSet@5e9f1
    Is it not possible to have 1 resultset open on one database and a separate one on a different database? I know the example above could be written to close the result set first, but this is a simplified example of something we are doing just to hightlight the problem.
    Any ideas appricated on why this complains.
    Thanks
    Andrew Moore

    hi Andrew,
    Just a hint: we are using more than 1 database connections at the same time. but in this case all datasources have to be non-emulated.
    check this, maybe its the prob @ yours.
    4 non-emulated datasources check the server guide of oc4j ..
    http://technet.oracle.com/tech/java/oc4j/doc_library/902/servicesjun02/ds3.htm#1005742
    cu
    ed

  • Oracle 8.1.6 Thin Driver with Multiple Result Sets

    We're using Oracle 8.1.6 on NT using the latest driver release.
    Java 1.2.2
    We're experiencing problems with resultSet.next when we have multiple result sets open. What appears to be happening when you've read the last result set entry do a .next() call which should result in a false value we actually get java.sql.SQLException: ORA-01002: fetch out of sequence.
    This seems to us that the driver is trying to go beyond the end of the result set.
    We've checked JDBC standards (and examples on this site) and the code we've got is compliant. We've also found that the code produces the correct results under Oracle 7.3.4 and 8.0.4.
    I can also say that there is no other activity on the db, so there are no issues such as roll back segments coming into play.
    Any solutions, help, advice etc would be gratefully appreciated!
    null

    Phil,
    By "multiple result sets open", do you mean you are using REF Cursors, or do you have multiple statements opened, each with its own ResultSet? If you could post an example showing what the problem is, that would be very helpful.
    You don't happen to have 'for update' clause in your SQL statement, do you?
    Thanks

  • How to return the result set of multiple select statements as one result set?

    Hi All,
    I have multiple select statements in my stored procedure that I want to return as one result set 
    for instance 
    select id from tableA
    union 
    select name from table b 
    but union will not work because the result sets datatypes are not identical so how to go about this ?
    Thanks

    You have to CAST or CONVERT (or implicitly convert) the columns to the same datatype.  You must find a datatype that both columns can be converted to without error.  In your example I'm guessing id is an int and name is a varchar or nvarchar. 
    Since you didn't convert the datatypes, SQL will use its data precedence rules and attempt to convert name to an int.  If any row contains a row that has a value in name that cannot be converted to an int, you will get an error.  The solution is
    to force SQL to convert the int to varchar.  So you want something like
    select cast(id as varchar(12)) from tableA
    union
    select name from tableb
    If the datatypes are something other that int or varchar, you must find a compatable datatype and then convert one (or both) of the columns to that datatype.
    Tom

  • Stored Procedure With Multiple Result Sets As Report Source : Crosspost

    Hello Everyone,
    I have an issue where i have created a stored procedure that returns multiple result sets
    /* Input param = @SalesOrderID */
    SELECT * FROM Orders TB1
      INNER JOIN OrderDetails TB2 ON  TB1.ID = TB2.ID
    WHERE TB1.OrderID = @SalesOrderID
    SELECT * FROM Addresses
      WHERE Addresses.OrderID = @SalesOrderID AND Addresses.AddressType = 'Shipping'
    SELECT * FROM Addresses
      WHERE Addresses.OrderID = @SalesOrderID AND Addresses.AddressType = 'Billing'
    This is just a quick sample, the actual procedure is a lot more complex but this illustrates the theory.
    When I set the report source in Crystal X to the stored procedure it is only allowing me to add rows from the first result set.
    Is there any way to get around this issue?
    The reason that I would prefer to use a stored procedure to get all the data is simply performance. Without using one big stored procedure I would have to run at least 6 sub reports which is not acceptable because the number of sub reports could grow exponentially depending on the number of items for a particular sales order.
    Any ideas or input would be greatly appreciated.
    TIA
        - Adam
    P.S
    Sorry for the cross post, I originally posted this question [here|/community [original link is broken];
    but was informed that it might be the wrong forum
    Edited by: Adam Harris on Jul 30, 2008 9:44 PM

    Adam, apologies for the redirect, but it is better to have .NET posts in one place. That way anyone can search the forum for answers. (and I do not have the rights to move posts).
    Anyhow, as long as the report is created, you should be able to pass the datasets as:
    crReportDocument.Database.Tables(0).SetDataSource(dataSet.Tables("NAME_OF_TABLE"))
    Of course alternatively, (not sure if this is possible in your environment) you could create a multi-table ADO .NET dataset and pass that to the report.
    Ludek

  • Single result set across multiple tables

    Hi - what's the best way to perform a single query that can pull
    a single result set across multiple tables, ie., a master table
    containing subject details and child table containing multiple
    records with detail.
    I know how to do this for two columns in the same table via
    indexing, but how about across tables?
    Cheers,
    John

    I am not sure if I understood your question, but you can use
    Intermedia Text with USER_DATA_STORE to create an index with data
    source from multiple tables.
    (see technet.oracle.com -> products -> oracle text)
    Thomas

  • How to execute entire result set of multiple sql statements via sp_executesql?

    I have a query that generates multiple insert statements (dynamic sql).  So when I execute this my result set is a table of sql insert statements (one insert statment per row in my source data table).  Like so:
                 Select 'INSERT INTO [dbo].[Table_1] ([Col1]) VALUES (' +  SrcData + ')' from SourceDataTbl
    How can I completely automate this and execute all these sql statements via sp_executesql?
    My plan is to completely automate and execute all this via an SSIS package.
    As always any help is greatly appreciated!
    fyi-  This is a very simple version of what I am trying to do.  My query probably plugs in 20+ values from the SourceDataTbl into each of the sql insert statements.

    Ah, a small error in Visakh's post, which I failed to observe, and then I added one on my own.
    DECLARE @SQL Varchar(max)
    SELECT @SQL =
       (SELECT 'INSERT INTO [dbo].[Table_1] ([Col1]) VALUES (' +  SrcData +
                ')' + char(10) + char(13)
        from SourceDataTbl
        FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)')
    EXEC sp_executesql @SQL
    Without ", TYPE" FOR XML returns a string when assigned to a variable. The TYPE thing produces a value of the XML data type, so that we can apply the value method and get string out of the XML.
    And why this? Because:
    DECLARE @str nvarchar(MAX)
    SELECT @str = (SELECT 'Kalle Anka & co' FOR XML PATH(''))
    SELECT @str
    SELECT @str = (SELECT 'Kalle Anka & co' FOR XML PATH(''), TYPE).value('.', 'nvarchar(MAX)')
    SELECT @str
    Although the data type is string when , TYPE is not there, it is still XML and characters special to XML are enticised.
    Confused? Don't worry, for what you are doing, this is mumbo-jumbo.
    Erland Sommarskog, SQL Server MVP, [email protected]

  • Handling Multiple Result Sets

    Hi
    I have a problem while handling multiple result sets. To fix that problem i need to upgrade my JDBC version2.0 to 4.0.
    My Problem is that i dont know which jars need to be downloaded to upgrade my JDBC version.

    Mallika_23 wrote:
    Is that any more ideas ???1. Learn how google works.
    2. Find the drivers
    3. Read the documentation
    4. Ask questions here once you have actually read the documentation.

  • Reading multiple result sets using executeQuery

    Hi - We have a database Proc that returns multiple result sets as the out params.
    Following is the line that does the DB call.
    rows = DynamicSQL.executeQuery(sentence : query, implname : "Sql Server");
    The 'rows' param above is able to get only the first result set after. It ignores the rest of the Out params.
    Do we have any way other than changing the proc to send one out param to handle this?
    Thanks!
    VVP

    This worked:
    rows = myDynamic.executeQuery(sentence : SaveQueryForMAPS, implname : "MAPS");
    foreach (row in rows) {
    //status = 0;
    status = row[1];
    display("status" +status);
    Thank you so much for your idea Andrea!

  • Callable Statatement returning multiple Result Sets

    Hello all,
    I've got a stored procedure that will be returning multiple result sets and i was wondering if someone could show me how to pull the multiple result sets out of the CallableStatement object. Any help would be greatly appreciated.

    Here is a sample that does what you want. You will have to substitute the call to DBConn.getConnection() with your own DB connection. Also remove the import of com.ovotron.util.*.import com.ovotron.util.*;
    import java.sql.*;
    public class MultiSQL {
        private static Connection conn = null;
        public static void main(String[] args) {
            // Just gets a connection to the DB.
            conn = DBConn.getConnection();
            getResults(conn);
        * Cycles through multiple result sets returned from a stored procedure.
        * Only the first column is output.
        * <p>
        private static void getResults(Connection conn) {
            // Not sure which DBMS you are using. This is the syntax for
            // SQLServer V7.0.
            String            sql     = "{call getMultiResults}";
            CallableStatement stmt    = null;
            ResultSet         rs      = null;
            int               setNo   = 0;
            try {
                stmt = conn.prepareCall(sql);
                boolean found = stmt.execute();
                while (found) {
                    setNo++;
                    rs = stmt.getResultSet();
                    while (rs.next()) {
                        System.out.println("Result set " + setNo +
                                           ": value: " + rs.getString(1));
                        System.out.flush();
                    rs.close();
                    found = stmt.getMoreResults();
            catch (SQLException e) {
                e.printStackTrace();
            finally {
                try {
                    if (rs   != null) rs.close();
                    if (stmt != null) stmt.close();
                catch (SQLException e) {
                    // Tried already to clean up.
    }The procedure I used is:CREATE PROCEDURE [getMultiResults] AS
    select  col1 from tab1;
    select col2 from tab1;
    select col3 from tab1;Of course you will need to create and populate tab1.

  • Multiple result sets from stored procedure into CachedRowSet

    How can you obtain multiple sets of data from a stored procedure that returns multiple result sets, when you'd like to use CachedRowSet rather than ResultSet?
    My database's stored procedures return multiple result sets, but I'm not sure how to manipulate that using CallableStatements and CachedRowSets... I read the RowSet tutorial from java.sun.com but that didn't cover the case of multiple result sets and CallablStatements.
    How might I do this? Thanks a lot.

    SELECT columns..
    FROM table
    FOR XML PATH('NodeName'),('Rootname')
    Thank you for replying.
    I dont have to generate XML from a query. I have to generate from a SP and that too without modifying it.
    Thanks,
    Tauhid
    thats ok you can do like this
    1. Create a table with structure same as SP resultset
    2. Populate table with SP result as per below
    INSERT table
    EXEC SPName param1value,...
    3. Add a query like below
    SELECT columns..
    FROM tablename
    FOR XML PATH('NodeName'),('RootName')
    see
    http://visakhm.blogspot.com/2014/05/t-sql-tips-fun-with-for-xml-path.html
    4. Use sp_send_dbmail to sent it through mail
    http://msdn.microsoft.com/en-IN/library/ms190307.aspx
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • How to - extract query result set in CSV and make multiple files if result set is huge.

    I have a query which returns millions of rows. I need to extract those rows in CSV files. Having said that i want to keep these files under a limit of 500 MB . Result set can be distributed among multiples files but each file can not be > 500 MB in size.
    How to achieve this?

    You may use this standard! procedure from Blushadow and produce something useful for your need. https://community.oracle.com/message/6499123#6499123

  • A trigger returned a resultset and/or was running with SET NOCOUNT OFF while another outstanding result set was active

    I have 2 servers connected over a low speed wan and we're running SQL Server 2008 with Merge replication.
    At the subscriber, sometimes when attempting to insert new rows, I get this error:
    A trigger returned a resultset and/or was running with SET NOCOUNT OFF while another outstanding result set was active.
    My database doesn't have any triggers; the only triggers are the one created by the Merge replication
    Also, whenever this error occurs it automatically rolls back the existing transaction
    I am using DataTables and TableAdapters to
    insert and update the database using transactions
    What I have checked:
    the database log file size is below 50Mb
    Checked the source code for Zombie transactions (since I wasn't able to retrieve the actual error at the beginning)
    Checked the connection between the two servers and found it congested
    Questions:
    How to avoid this behavior and why it's occurring at first place?
    Why it's cancelling the open transaction?

    did the issue happen on some specific tables or all the tables?
    I suggest to run sql server trace at publisher and subscriber when the issue happens. Please involve below events and columns
    Stored      Procedures
    RPC:Completed      
    RPC:Starting
    sp:Completed
    sp:Starting
    sp:StmtStarting      
    sp:StmtCompleted      
    TSQL
    SQL:StmtCompleted
    SQL:StmtStarting      
    SQL:BatchCompleted
    SQL:BatchStarting      
    Unprepare SQL
     ‘Errors and Warnings’
    ErrorLog
    EventLog
    Exceptoin
    attention
    columns:
     TextData ,error, LoginName, ApplicationName , StartTime ,EndTime,DatabaseName,NestLevel,ObjectName,ObjectType,ServerName,eventsequence,linenumber,cpu,reads ,writes,rowcounts,clientprocessid,spid,transactionid
    Once the issue happens, please check the trace to find which step or statement hit the error.

Maybe you are looking for

  • I can not see my external hard drive

    I recently bought a new external hard drive for my pc. I have pictures, music and family videos, however I can see any video or pictures on my iPad using the same he'd. Any suggestions how to do it?

  • Hi Marketing questions

    Hi Experts how many profiles can be assigned to one profile set? and how many target groups we can assign , in case of multiple target groups which will be in active, iam working on marketing this is a urgent business requirement please answr full po

  • Creating a view using With causes ORA-00600 Error

    Hello Ladies and Gents, I've been trying to deploy a recursive query as a view in Oracle XE and Standard Edition, neither to much success. The query is located in this question here: http://stackoverflow.com/questions/17358109/how-to-retrieve-all-rec

  • Export hotspot to edge and animate?

    I created the blocks in Adobe illustrator and completed the Animation without problems.  The available "Action" options in Adobe Edge : (window.open)  both force a relaod.  I am linking to a div in the same page so the link would be local, how can I

  • Help can't open itunes, says it was created by a newer version of iTunes?

    Help! When I try to start iTunes it says: The File "iTunes Library.itl"; cannot be read because it was created by a newer version of iTunes. Today before the listed above happened it 1st said it detected an issues with Quicktime, so I followed the in