<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'SQL Server' and '2008'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=SQL+Server,2008&amp;orTags=0</link><description>Search results matching tags 'SQL Server' and '2008'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Trapping SQL Server Errors with Extended Events</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2013/03/17/trapping-sql-server-errors-with-extended-events.aspx</link><pubDate>Sun, 17 Mar 2013 16:45:06 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48282</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt;One very useful usage of Extended Events is the ability to trap SQL Server error without the need to have a server trace running (which, btw, is deprecated), with the additional feature of being able to query the data as soon as it comes in. This means that we a solution to monitor and trap errors as soon as they happen can be easily created, in order to help developers to fix problems as soon as they are detected. This is really, really, really helpful especially in very big applications, where the code base is quite old and there is no-one really knowing everything of the solution.&lt;/p&gt;  &lt;p&gt;To start a Extended Events sessions in order to trap SQL Server errors with severity greater than 10, just run the following script:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;CREATE EVENT SESSION [error_trap] ON SERVER      &lt;br /&gt;ADD EVENT sqlserver.error_reported      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ACTION&amp;#160;&amp;#160;&amp;#160; (package0.collect_system_time,package0.last_error,sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.nt_username,sqlserver.plan_handle,sqlserver.query_hash,sqlserver.session_id,sqlserver.sql_text,sqlserver.tsql_frame,sqlserver.tsql_stack,sqlserver.username)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE&amp;#160;&amp;#160;&amp;#160; ([severity]&amp;gt;10)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )       &lt;br /&gt;ADD TARGET package0.event_file      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SET filename=N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\XEvents\error_trap.xel'      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )      &lt;br /&gt;WITH       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; STARTUP_STATE=OFF      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )      &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;ALTER EVENT SESSION [error_trap] ON SERVER      &lt;br /&gt;STATE = START;      &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The problem with Exended Events is that they only talks XML which is surely flexible and extensible, but not at all confortable to be queried. That’s why I prefer to turn it into something relational. Using the xml nodes function and pivoting data can make the trick:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;IF (OBJECT_ID('tempdb..#e') IS NOT NULL) DROP TABLE #e     &lt;br /&gt;go&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;WITH cte AS     &lt;br /&gt;(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CAST(event_data AS XML) AS event_data      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sys.fn_xe_file_target_read_file('D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\XEvents\error_trap*.xel', NULL, NULL, NULL)      &lt;br /&gt;),      &lt;br /&gt;cte2 AS      &lt;br /&gt;(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; event_number = ROW_NUMBER() OVER (ORDER BY T.x)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ,&amp;#160;&amp;#160;&amp;#160; event_name = T.x.value('@name', 'varchar(100)')      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ,&amp;#160;&amp;#160;&amp;#160; event_timestamp = T.x.value('@timestamp', 'datetimeoffset')      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ,&amp;#160;&amp;#160;&amp;#160; event_data       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cte&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CROSS APPLY      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; event_data.nodes('/event') T(x)      &lt;br /&gt;)      &lt;br /&gt;SELECT * INTO #e FROM cte2       &lt;br /&gt;go&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Courier New"&gt;WITH cte3 AS     &lt;br /&gt;(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c.event_number,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c.event_timestamp,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; --data_field = T2.x.value('local-name(.)', 'varchar(100)'),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data_name = T2.x.value('@name', 'varchar(100)'),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data_value = T2.x.value('value[1]', 'varchar(max)'),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data_text = T2.x.value('text[1]', 'varchar(max)')      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #e c      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CROSS APPLY      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c.event_data.nodes('event/*') T2(x)      &lt;br /&gt;),       &lt;br /&gt;cte4 AS      &lt;br /&gt;(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; *      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cte3      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data_name IN ('error_number', 'severity', 'message', 'database_name', 'database_id', 'client_hostname', 'client_app_name', 'collect_system_time', 'username')      &lt;br /&gt;)      &lt;br /&gt;SELECT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; *      &lt;br /&gt;FROM      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cte4      &lt;br /&gt;PIVOT      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (MAX(data_value) FOR data_name IN ([error_number], [severity], [message], database_name, database_id, username, client_hostname, client_app_name, collect_system_time)) T      &lt;br /&gt;WHERE      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [severity] &amp;gt; 10      &lt;br /&gt;ORDER BY      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; event_timestamp DESC      &lt;br /&gt;go&lt;/font&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;and voilà, now all errors can be easily identified:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/image_7116168A.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/davide_mauri/image_thumb_0C1EBFCC.png" width="1024" height="83" /&gt;&lt;/a&gt;&lt;/p&gt;        &lt;p&gt;It’s now very easy to create reports and dashboards to monitor the system in (near) real time. And this is vital when you run a 24x7 online business.&lt;/p&gt;</description></item><item><title>sys2 scripts updated</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2010/01/07/sys2-scripts-updated.aspx</link><pubDate>Thu, 07 Jan 2010 20:54:10 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:20694</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt;I’ve updated my “sys2” scripts with three 3 new scripts:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;sys2.objects_dependencies&lt;/em&gt;&lt;/strong&gt;    &lt;br /&gt;A wrapper around sys.sql_expression_dependencies that shows also related informations taken from sys.object table, like object name, object type and schema name of the referencing entity. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;sys2.objects_partition_ranges&lt;/em&gt;&lt;/strong&gt;    &lt;br /&gt;Shows information on partitioned table like rows per partition, partition ranges and partition filegroup destination. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;sys2.objects_data_spaces&lt;/em&gt;&lt;/strong&gt;    &lt;br /&gt;List tables and indexes and show in which filegroup they reside. &lt;/p&gt;  &lt;p&gt;They are freely available – along with all the others – here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.davidemauri.it/resources/sql-scripts.aspx" href="http://www.davidemauri.it/resources/sql-scripts.aspx"&gt;http://www.davidemauri.it/resources/sql-scripts.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;</description></item><item><title>Extended Properties in Object Explorer Details – Vote on Connect</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2009/09/15/extended-properties-in-object-explorer-details-vote-on-connect.aspx</link><pubDate>Tue, 15 Sep 2009 06:10:04 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:16781</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt; After a discussion with a friend of mine, I’ve opened a suggestion on Connect to request to have Extended Properties visible in the main Object Explorer Details window.&lt;/p&gt;  &lt;p&gt;This will be especially useful for creating self-documenting database, since that window can easily provide additional information about, for example, column in a table or in a view and so on.&lt;/p&gt;  &lt;p&gt;Just image to have all the available Extended Columns in this list to be selected:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/Capture_7B8269E5.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Capture" border="0" alt="Capture" src="http://sqlblog.com/blogs/davide_mauri/Capture_thumb_2F4CF0E8.png" width="644" height="479" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;If columns’ Extended Properties will contain a Description, violà, here you’ll see it for each column. Useful IMHO. If you agree with me please vote here:&lt;/p&gt;  &lt;p&gt;&lt;a title="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=489804&amp;amp;wa=wsignin1.0" href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=489804&amp;amp;wa=wsignin1.0"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=489804&amp;amp;wa=wsignin1.0&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SQL Server 2008 Object Explorer Details</title><link>http://sqlblog.com/blogs/davide_mauri/archive/2009/09/05/sql-server-2008-object-explorer-details.aspx</link><pubDate>Sat, 05 Sep 2009 10:13:49 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:16625</guid><dc:creator>manowar</dc:creator><description>&lt;p&gt;Ok, maybe this post contains information that anyone already knows, but since I just discovered the SQL Server 2008 Object Explorer Details’ features today, maybe other people are in the same situation. &lt;/p&gt;  &lt;p&gt;In older version of SQL Server the Object Explorer Details window was simply not useful at all since it just replicate what you can see in the Object Explorer treeview. So I never used it. This morning, doing some work for the Italian SQL Server UG, I pressed F7 instead of F8 to open the Object Explorer, and so I got the Object Explorer Details opened.&lt;/p&gt;  &lt;p&gt;What a surprise! First of all you can &lt;em&gt;search among all objects in the database&lt;/em&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/clip_image001_6260D555.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image001" border="0" alt="clip_image001" src="http://sqlblog.com/blogs/davide_mauri/clip_image001_thumb_063986E3.png" width="644" height="239" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then, if you select and Object or an Object Class in the Object Explorer you get a lot of useful details:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/clip_image0016_7A07E6EE.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image001[6]" border="0" alt="clip_image001[6]" src="http://sqlblog.com/blogs/davide_mauri/clip_image0016_thumb_6A382C1D.png" width="644" height="217" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For tables, as you can see, you can easly know how many rows, how much space used, in which Filegroup they belong to!&lt;/p&gt;  &lt;p&gt;Object Explorer Details is context-sensitive, so it will display different information for different object. You can also personalize the column it shows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/davide_mauri/clip_image0018_58981B85.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image001[8]" border="0" alt="clip_image001[8]" src="http://sqlblog.com/blogs/davide_mauri/clip_image0018_thumb_6BD8D224.png" width="244" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;That’s really useful! I wish I’ve found it before, but from now on I’ll surely use it more and more every day!&lt;/p&gt;</description></item></channel></rss>