Hide Select Output from T-SQLWhat Triggers This Warning: Type Conversion in Expression May Affect “CardinalityEstimate” in Query Plan ChoiceScript to query multiple instancesDuration Field in ProfilerAlter Time of DateTime FieldSql Profiler: what does Duration measure for exec sp_executeSQL Server Agent Jobs - Long running job delaying other jobs?Using GETDATE() in a variable returns 0 rowsTime taken to execute query seems longer than time measured in query…?The datediff function resulted in an overflowSQL Query: Print string (i.e. header) in output before returning table resultsSql Server - Execution Plan - Query Cost (relative to batch) calculation

Pole-zeros of a real-valued causal FIR system

How can a function with a hole (removable discontinuity) equal a function with no hole?

Type int? vs type int

Integer addition + constant, is it a group?

Is a stroke of luck acceptable after a series of unfavorable events?

Why escape if the_content isnt?

Are student evaluations of teaching assistants read by others in the faculty?

What does the word "Atten" mean?

How do scammers retract money, while you can’t?

Escape a backup date in a file name

What can we do to stop prior company from asking us questions?

How to pronounce the slash sign

How can I get through very long and very dry, but also very useful technical documents when learning a new tool?

Anatomically Correct Strange Women In Ponds Distributing Swords

Purchasing a ticket for someone else in another country?

How did Arya survive the stabbing?

Tiptoe or tiphoof? Adjusting words to better fit fantasy races

What does "I’d sit this one out, Cap," imply or mean in the context?

Is this version of a gravity generator feasible?

Detecting if an element is found inside a container

Is the destination of a commercial flight important for the pilot?

What is the opposite of 'gravitas'?

Term for the "extreme-extension" version of a straw man fallacy?

Balance Issues for a Custom Sorcerer Variant



Hide Select Output from T-SQL


What Triggers This Warning: Type Conversion in Expression May Affect “CardinalityEstimate” in Query Plan ChoiceScript to query multiple instancesDuration Field in ProfilerAlter Time of DateTime FieldSql Profiler: what does Duration measure for exec sp_executeSQL Server Agent Jobs - Long running job delaying other jobs?Using GETDATE() in a variable returns 0 rowsTime taken to execute query seems longer than time measured in query…?The datediff function resulted in an overflowSQL Query: Print string (i.e. header) in output before returning table resultsSql Server - Execution Plan - Query Cost (relative to batch) calculation













11















I'm trying to get query execution time, but I also want to hide the query output. I just want the elapsed time - no output.



Example



DECLARE @Start datetime
DECLARE @End datetime

SELECT @StartTimeWA=GETDATE()

SELECT
[id]
,[database_id]
,[proc_name]
,[exec_t] from
[DB].[dbo].[STAT]

SELECT @End=GETDATE()

SELECT DATEDIFF(MS,@Start,@End) AS [Duration]


At the moment, I get query output and at the bottom my duration, which is the only thing I want as far as the output goes. I haven't been able to do this and wondering whether anyone else has come across similar problems? This is something I want to do in T-SQL not Management Studio or anything like that.



I'm trying to monitor the time it takes to run the select statement and report back to a server. I have an external monitor server which will run that every minute and get the time back (duration it took) which I will use over time to trend / baseline. As the current query spits out the select results and my duration it skews it, and my monitor server gets confused. I just wanted the duration column. I will also be doing this for inserts, which will be straightforward as it won't need to perform a select.



I'm trying to do this purely in T-SQL. I don't want to use DMVs as I want to get the time it takes (snapshot) when I run a query and check whether this changes over time when the server goes through the various levels of load as this will give me a good idea as to whether query execution time changes.










share|improve this question




























    11















    I'm trying to get query execution time, but I also want to hide the query output. I just want the elapsed time - no output.



    Example



    DECLARE @Start datetime
    DECLARE @End datetime

    SELECT @StartTimeWA=GETDATE()

    SELECT
    [id]
    ,[database_id]
    ,[proc_name]
    ,[exec_t] from
    [DB].[dbo].[STAT]

    SELECT @End=GETDATE()

    SELECT DATEDIFF(MS,@Start,@End) AS [Duration]


    At the moment, I get query output and at the bottom my duration, which is the only thing I want as far as the output goes. I haven't been able to do this and wondering whether anyone else has come across similar problems? This is something I want to do in T-SQL not Management Studio or anything like that.



    I'm trying to monitor the time it takes to run the select statement and report back to a server. I have an external monitor server which will run that every minute and get the time back (duration it took) which I will use over time to trend / baseline. As the current query spits out the select results and my duration it skews it, and my monitor server gets confused. I just wanted the duration column. I will also be doing this for inserts, which will be straightforward as it won't need to perform a select.



    I'm trying to do this purely in T-SQL. I don't want to use DMVs as I want to get the time it takes (snapshot) when I run a query and check whether this changes over time when the server goes through the various levels of load as this will give me a good idea as to whether query execution time changes.










    share|improve this question


























      11












      11








      11


      2






      I'm trying to get query execution time, but I also want to hide the query output. I just want the elapsed time - no output.



      Example



      DECLARE @Start datetime
      DECLARE @End datetime

      SELECT @StartTimeWA=GETDATE()

      SELECT
      [id]
      ,[database_id]
      ,[proc_name]
      ,[exec_t] from
      [DB].[dbo].[STAT]

      SELECT @End=GETDATE()

      SELECT DATEDIFF(MS,@Start,@End) AS [Duration]


      At the moment, I get query output and at the bottom my duration, which is the only thing I want as far as the output goes. I haven't been able to do this and wondering whether anyone else has come across similar problems? This is something I want to do in T-SQL not Management Studio or anything like that.



      I'm trying to monitor the time it takes to run the select statement and report back to a server. I have an external monitor server which will run that every minute and get the time back (duration it took) which I will use over time to trend / baseline. As the current query spits out the select results and my duration it skews it, and my monitor server gets confused. I just wanted the duration column. I will also be doing this for inserts, which will be straightforward as it won't need to perform a select.



      I'm trying to do this purely in T-SQL. I don't want to use DMVs as I want to get the time it takes (snapshot) when I run a query and check whether this changes over time when the server goes through the various levels of load as this will give me a good idea as to whether query execution time changes.










      share|improve this question
















      I'm trying to get query execution time, but I also want to hide the query output. I just want the elapsed time - no output.



      Example



      DECLARE @Start datetime
      DECLARE @End datetime

      SELECT @StartTimeWA=GETDATE()

      SELECT
      [id]
      ,[database_id]
      ,[proc_name]
      ,[exec_t] from
      [DB].[dbo].[STAT]

      SELECT @End=GETDATE()

      SELECT DATEDIFF(MS,@Start,@End) AS [Duration]


      At the moment, I get query output and at the bottom my duration, which is the only thing I want as far as the output goes. I haven't been able to do this and wondering whether anyone else has come across similar problems? This is something I want to do in T-SQL not Management Studio or anything like that.



      I'm trying to monitor the time it takes to run the select statement and report back to a server. I have an external monitor server which will run that every minute and get the time back (duration it took) which I will use over time to trend / baseline. As the current query spits out the select results and my duration it skews it, and my monitor server gets confused. I just wanted the duration column. I will also be doing this for inserts, which will be straightforward as it won't need to perform a select.



      I'm trying to do this purely in T-SQL. I don't want to use DMVs as I want to get the time it takes (snapshot) when I run a query and check whether this changes over time when the server goes through the various levels of load as this will give me a good idea as to whether query execution time changes.







      sql-server t-sql






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited yesterday









      Paul White

      53.7k14286458




      53.7k14286458










      asked yesterday









      AhmedAhmed

      643




      643




















          2 Answers
          2






          active

          oldest

          votes


















          26














          There are a lot of different ways to do this.



          I don't usually recommend inserting into a #temp table, since any tempdb load or autogrowth may impact the results, and I definitely don't recommend using a @table variable, since modifications to those are forced serial (no parallel plan can be used), which may change actual query times.



          Variable Assignment



          You can declare a variable and assign your columns to it, like this:



          DECLARE @Start datetime
          DECLARE @End datetime
          DECLARE @blob_eater SQL_VARIANT;

          SELECT @StartTimeWA=GETDATE()

          SELECT
          @blob_eater = [id]
          ,@blob_eater = [database_id]
          ,@blob_eater = [proc_name]
          ,@blob_eater = [exec_t] from
          [DB].[dbo].[STAT]

          SELECT @End=GETDATE()

          SELECT DATEDIFF(MS,@Start,@End) AS [Duration]


          Though doing this may prevent some parameter embedding optimizations. See Parameter Sniffing, Embedding, and the RECOMPILE Options under "An Embedding Restriction".



          Note that this method may trigger plan warnings about implicit conversions, but they're not the kind you have to worry about. See this Q&A for background: What Triggers This Warning: Type Conversion in Expression May Affect “CardinalityEstimate” in Query Plan Choice.



          In SSMS



          You can change the settings to discard query results.



          NUTS



          SQL Query Stress



          SQL Query Stress is an open source tool that allows you to run queries against a SQL Server to simulate load. No query results are returned to the application when they're run.



          You can read some instructions on it here.



          ostress (RML Utilities)



          ostress is a similar tool, published by Microsoft, which also doesn't return results to the client, unless you choose to do it.



          I've written some about it here.



          Plan Explorer



          SentryOne's Plan Explorer is a free alternative to view SQL Server execution plans and deadlocks with.



          You can also use it as a client to query SQL Serve to some degree:



          NUTS



          This will also discard results.



          NUTS



          Hope this helps!






          share|improve this answer
































            0














            You could execute your query with SET STATISTICS TIME ON and capture the output message by using your monitoring app on your external monitor server.



            A way to capture the output message with .Net is explained in this Stack Overflow answer by AdaTheDev:




            You can do this by adding an event handler to the InfoMessage event on the connection.



            myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

            void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)

            myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);







            share|improve this answer
























              Your Answer








              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "182"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f233124%2fhide-select-output-from-t-sql%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              26














              There are a lot of different ways to do this.



              I don't usually recommend inserting into a #temp table, since any tempdb load or autogrowth may impact the results, and I definitely don't recommend using a @table variable, since modifications to those are forced serial (no parallel plan can be used), which may change actual query times.



              Variable Assignment



              You can declare a variable and assign your columns to it, like this:



              DECLARE @Start datetime
              DECLARE @End datetime
              DECLARE @blob_eater SQL_VARIANT;

              SELECT @StartTimeWA=GETDATE()

              SELECT
              @blob_eater = [id]
              ,@blob_eater = [database_id]
              ,@blob_eater = [proc_name]
              ,@blob_eater = [exec_t] from
              [DB].[dbo].[STAT]

              SELECT @End=GETDATE()

              SELECT DATEDIFF(MS,@Start,@End) AS [Duration]


              Though doing this may prevent some parameter embedding optimizations. See Parameter Sniffing, Embedding, and the RECOMPILE Options under "An Embedding Restriction".



              Note that this method may trigger plan warnings about implicit conversions, but they're not the kind you have to worry about. See this Q&A for background: What Triggers This Warning: Type Conversion in Expression May Affect “CardinalityEstimate” in Query Plan Choice.



              In SSMS



              You can change the settings to discard query results.



              NUTS



              SQL Query Stress



              SQL Query Stress is an open source tool that allows you to run queries against a SQL Server to simulate load. No query results are returned to the application when they're run.



              You can read some instructions on it here.



              ostress (RML Utilities)



              ostress is a similar tool, published by Microsoft, which also doesn't return results to the client, unless you choose to do it.



              I've written some about it here.



              Plan Explorer



              SentryOne's Plan Explorer is a free alternative to view SQL Server execution plans and deadlocks with.



              You can also use it as a client to query SQL Serve to some degree:



              NUTS



              This will also discard results.



              NUTS



              Hope this helps!






              share|improve this answer





























                26














                There are a lot of different ways to do this.



                I don't usually recommend inserting into a #temp table, since any tempdb load or autogrowth may impact the results, and I definitely don't recommend using a @table variable, since modifications to those are forced serial (no parallel plan can be used), which may change actual query times.



                Variable Assignment



                You can declare a variable and assign your columns to it, like this:



                DECLARE @Start datetime
                DECLARE @End datetime
                DECLARE @blob_eater SQL_VARIANT;

                SELECT @StartTimeWA=GETDATE()

                SELECT
                @blob_eater = [id]
                ,@blob_eater = [database_id]
                ,@blob_eater = [proc_name]
                ,@blob_eater = [exec_t] from
                [DB].[dbo].[STAT]

                SELECT @End=GETDATE()

                SELECT DATEDIFF(MS,@Start,@End) AS [Duration]


                Though doing this may prevent some parameter embedding optimizations. See Parameter Sniffing, Embedding, and the RECOMPILE Options under "An Embedding Restriction".



                Note that this method may trigger plan warnings about implicit conversions, but they're not the kind you have to worry about. See this Q&A for background: What Triggers This Warning: Type Conversion in Expression May Affect “CardinalityEstimate” in Query Plan Choice.



                In SSMS



                You can change the settings to discard query results.



                NUTS



                SQL Query Stress



                SQL Query Stress is an open source tool that allows you to run queries against a SQL Server to simulate load. No query results are returned to the application when they're run.



                You can read some instructions on it here.



                ostress (RML Utilities)



                ostress is a similar tool, published by Microsoft, which also doesn't return results to the client, unless you choose to do it.



                I've written some about it here.



                Plan Explorer



                SentryOne's Plan Explorer is a free alternative to view SQL Server execution plans and deadlocks with.



                You can also use it as a client to query SQL Serve to some degree:



                NUTS



                This will also discard results.



                NUTS



                Hope this helps!






                share|improve this answer



























                  26












                  26








                  26







                  There are a lot of different ways to do this.



                  I don't usually recommend inserting into a #temp table, since any tempdb load or autogrowth may impact the results, and I definitely don't recommend using a @table variable, since modifications to those are forced serial (no parallel plan can be used), which may change actual query times.



                  Variable Assignment



                  You can declare a variable and assign your columns to it, like this:



                  DECLARE @Start datetime
                  DECLARE @End datetime
                  DECLARE @blob_eater SQL_VARIANT;

                  SELECT @StartTimeWA=GETDATE()

                  SELECT
                  @blob_eater = [id]
                  ,@blob_eater = [database_id]
                  ,@blob_eater = [proc_name]
                  ,@blob_eater = [exec_t] from
                  [DB].[dbo].[STAT]

                  SELECT @End=GETDATE()

                  SELECT DATEDIFF(MS,@Start,@End) AS [Duration]


                  Though doing this may prevent some parameter embedding optimizations. See Parameter Sniffing, Embedding, and the RECOMPILE Options under "An Embedding Restriction".



                  Note that this method may trigger plan warnings about implicit conversions, but they're not the kind you have to worry about. See this Q&A for background: What Triggers This Warning: Type Conversion in Expression May Affect “CardinalityEstimate” in Query Plan Choice.



                  In SSMS



                  You can change the settings to discard query results.



                  NUTS



                  SQL Query Stress



                  SQL Query Stress is an open source tool that allows you to run queries against a SQL Server to simulate load. No query results are returned to the application when they're run.



                  You can read some instructions on it here.



                  ostress (RML Utilities)



                  ostress is a similar tool, published by Microsoft, which also doesn't return results to the client, unless you choose to do it.



                  I've written some about it here.



                  Plan Explorer



                  SentryOne's Plan Explorer is a free alternative to view SQL Server execution plans and deadlocks with.



                  You can also use it as a client to query SQL Serve to some degree:



                  NUTS



                  This will also discard results.



                  NUTS



                  Hope this helps!






                  share|improve this answer















                  There are a lot of different ways to do this.



                  I don't usually recommend inserting into a #temp table, since any tempdb load or autogrowth may impact the results, and I definitely don't recommend using a @table variable, since modifications to those are forced serial (no parallel plan can be used), which may change actual query times.



                  Variable Assignment



                  You can declare a variable and assign your columns to it, like this:



                  DECLARE @Start datetime
                  DECLARE @End datetime
                  DECLARE @blob_eater SQL_VARIANT;

                  SELECT @StartTimeWA=GETDATE()

                  SELECT
                  @blob_eater = [id]
                  ,@blob_eater = [database_id]
                  ,@blob_eater = [proc_name]
                  ,@blob_eater = [exec_t] from
                  [DB].[dbo].[STAT]

                  SELECT @End=GETDATE()

                  SELECT DATEDIFF(MS,@Start,@End) AS [Duration]


                  Though doing this may prevent some parameter embedding optimizations. See Parameter Sniffing, Embedding, and the RECOMPILE Options under "An Embedding Restriction".



                  Note that this method may trigger plan warnings about implicit conversions, but they're not the kind you have to worry about. See this Q&A for background: What Triggers This Warning: Type Conversion in Expression May Affect “CardinalityEstimate” in Query Plan Choice.



                  In SSMS



                  You can change the settings to discard query results.



                  NUTS



                  SQL Query Stress



                  SQL Query Stress is an open source tool that allows you to run queries against a SQL Server to simulate load. No query results are returned to the application when they're run.



                  You can read some instructions on it here.



                  ostress (RML Utilities)



                  ostress is a similar tool, published by Microsoft, which also doesn't return results to the client, unless you choose to do it.



                  I've written some about it here.



                  Plan Explorer



                  SentryOne's Plan Explorer is a free alternative to view SQL Server execution plans and deadlocks with.



                  You can also use it as a client to query SQL Serve to some degree:



                  NUTS



                  This will also discard results.



                  NUTS



                  Hope this helps!







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited yesterday

























                  answered yesterday









                  Erik DarlingErik Darling

                  22.1k1269110




                  22.1k1269110























                      0














                      You could execute your query with SET STATISTICS TIME ON and capture the output message by using your monitoring app on your external monitor server.



                      A way to capture the output message with .Net is explained in this Stack Overflow answer by AdaTheDev:




                      You can do this by adding an event handler to the InfoMessage event on the connection.



                      myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

                      void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)

                      myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);







                      share|improve this answer





























                        0














                        You could execute your query with SET STATISTICS TIME ON and capture the output message by using your monitoring app on your external monitor server.



                        A way to capture the output message with .Net is explained in this Stack Overflow answer by AdaTheDev:




                        You can do this by adding an event handler to the InfoMessage event on the connection.



                        myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

                        void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)

                        myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);







                        share|improve this answer



























                          0












                          0








                          0







                          You could execute your query with SET STATISTICS TIME ON and capture the output message by using your monitoring app on your external monitor server.



                          A way to capture the output message with .Net is explained in this Stack Overflow answer by AdaTheDev:




                          You can do this by adding an event handler to the InfoMessage event on the connection.



                          myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

                          void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)

                          myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);







                          share|improve this answer















                          You could execute your query with SET STATISTICS TIME ON and capture the output message by using your monitoring app on your external monitor server.



                          A way to capture the output message with .Net is explained in this Stack Overflow answer by AdaTheDev:




                          You can do this by adding an event handler to the InfoMessage event on the connection.



                          myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

                          void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)

                          myStringBuilderDefinedAsClassVariable.AppendLine(e.Message);








                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited yesterday









                          Paul White

                          53.7k14286458




                          53.7k14286458










                          answered yesterday









                          Evandro MuchinskiEvandro Muchinski

                          705111




                          705111



























                              draft saved

                              draft discarded
















































                              Thanks for contributing an answer to Database Administrators Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f233124%2fhide-select-output-from-t-sql%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              -sql-server, t-sql

                              Popular posts from this blog

                              Creating 100m^2 grid automatically using QGIS?Creating grid constrained within polygon in QGIS?Createing polygon layer from point data using QGIS?Creating vector grid using QGIS?Creating grid polygons from coordinates using R or PythonCreating grid from spatio temporal point data?Creating fields in attributes table using other layers using QGISCreate .shp vector grid in QGISQGIS Creating 4km point grid within polygonsCreate a vector grid over a raster layerVector Grid Creates just one grid

                              What is this called? Old film camera viewer?What makes a good film camera?What to do with an old film camera?What should one look for when buying a used film camera?What is the value and age of this pre-1967 Ricoh 35 mm camera?DSLR recommendation, question about old Canon 35mm film Camera & lensesCan anyone identify the silver rangefinder-style camera in this advertisement?What kind of a Polaroid 600-camera is this?Will an old film camera still work even when not used in a very long time?What is this camera / Can I develop the film?How to fit an action camera into antique (bellows) housing?What to check when buying used and old film bodies?

                              Why is this plane circling around the Lucknow airport every day?Why do aircraft on Flight Radar 24 jump around randomly sometimes?What airport has this walkway over a taxiway?How does Chicago O'Hare's tower sequence aircraft at peak capacity?Which airport is featured in this Delta commercial?After a crash, for how long is the airport closed?Can a passenger plane stand still in the air, or hover at a fixed location above a ground?What are those trucks towing around, and why?What is this airport outside of Cairo, Egypt?Which US airport has the lowest circling MDH?What is this airport video?