{"id":467,"date":"2012-09-28T00:00:00","date_gmt":"2012-09-28T00:00:00","guid":{"rendered":"\/blogs\/erin\/post\/RML-Utilities-and-SQL-Server-2012.aspx"},"modified":"2017-04-13T09:19:08","modified_gmt":"2017-04-13T16:19:08","slug":"rml-utilities-and-sql-server-2012","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/","title":{"rendered":"RML Utilities and SQL Server 2012"},"content":{"rendered":"<p>RML Utilities is a free utility created by Microsoft and used by the SQL Server support team.\u00a0 It\u2019s available for <a href=\"https:\/\/support.microsoft.com\/kb\/944837\" target=\"_blank\">download<\/a> and if you work with SQL Trace data at all I\u2019d recommend giving it a look. I know, I know, <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/deprecated-database-engine-features-in-sql-server-2016\" target=\"_blank\">Trace is deprecated in SQL Server 2012<\/a>.\u00a0 But not everyone is running 2012 so until then, Trace files will still exist.<\/p>\n<p>I first heard about RML Utilities years ago from Andrew Kelly ( <a href=\"http:\/\/sqlblog.com\/blogs\/andrew_kelly\/default.aspx\" target=\"_blank\" class=\"broken_link\">b<\/a> | <a href=\"https:\/\/mobile.twitter.com\/gunneyk\" target=\"_blank\">t<\/a> ) and have used it to analyze trace data from customers, which is really just a fraction of what it can do.\u00a0 Today I\u2019ve been working with it to compare two trace files.\u00a0 Yes, that\u2019s right\u2026compare two trace files.\u00a0 Imagine you run a load test in your production environment, then run that same test in your development environment which might have different hardware or updated code.\u00a0 You can capture PerfMon metrics to compare Memory, CPU and I\/O\u2026but what about the performance of individual queries?\u00a0 You can get that from the DMVs, but it\u2019s really nice if you can look at the information side by side.\u00a0 And I don\u2019t mean two instances of Profiler open, I mean really compare the data.\u00a0 RML Utilities will do that for you!<\/p>\n<p>But, before I could get RML Utilities to do that, I had to get it to process a trace file.\u00a0 This was my issue today.\u00a0 I had two VMs, one with 2008R2 and 2012 installed, one with only 2012 installed.\u00a0 The readtrace.exe file is used to process trace files, and the commands require the trace file (input), an output directory, a SQL Server instance and a database.\u00a0 I had everything set up, but my process would fail with this set of messages:<\/p>\n<blockquote><p>09\/27\/12 15:49:44.262 [0X00000AA4] Readtrace a SQL Server trace processing utility.<br \/>\nVersion 9.01.0109 built for x64.<br \/>\nCopyright (c) Microsoft Corporation 1997-2008. All rights reserved.<br \/>\n&#8230;extra text removed&#8230;<br \/>\n09\/27\/12 15:49:44.263 [0X00000AA4] \u2013IC:\\PerfLogs\\Trace\\File_RML_2008R2.trc<br \/>\n09\/27\/12 15:49:44.263 [0X00000AA4] \u2013oC:\\SQLskills\\RMLOutput<br \/>\n09\/27\/12 15:49:44.263 [0X00000AA4] \u2013SWIN2008R2PS\\SQL2012<br \/>\n09\/27\/12 15:49:44.263 [0X00000AA4] \u2013dBaselineData<br \/>\n09\/27\/12 15:49:44.263 [0X00000AA4] Using language id (LCID): 1024 [English_United States.1252] for character formatting with NLS: 0x00060101 and Defined: 0x00060101<br \/>\n09\/27\/12 15:49:44.263 [0X00000AA4] Attempting to cleanup existing RML files from previous execution<br \/>\n09\/27\/12 15:49:44.264 [0X00000AA4] Using extended RowsetFastload synchronization<br \/>\n09\/27\/12 15:49:44.264 [0X00000AA4] Establishing initial database connection:<br \/>\n09\/27\/12 15:49:44.264 [0X00000AA4] Server: WIN2008R2PS\\SQL2012<br \/>\n09\/27\/12 15:49:44.264 [0X00000AA4] Database: BaselineData<br \/>\n09\/27\/12 15:49:44.265 [0X00000AA4] Authentication: Windows<br \/>\n<span style=\"color: #ff0000;\">09\/27\/12 15:49:44.266 [0X00000AA4] Unable to connect to the specified server.<br \/>\n<\/span>09\/27\/12 15:49:44.266 [0X00000AA4] ERROR: Performance analysis failed to initialize.\u00a0 See previous errors and correct the problem before retrying.<br \/>\n09\/27\/12 15:49:44.266 [0X00000AA4] *******************************************************************************<br \/>\n* ReadTrace encountered one or more ERRORS. An error condition typically\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* stops processing early and the ReadTrace output may be unusable.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n* Review the log file for details.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 *<br \/>\n*******************************************************************************<br \/>\n09\/27\/12 15:49:44.266 [0X00000AA4] ***** ReadTrace exit code: \u20139<\/p><\/blockquote>\n<p>My first thought was that it was having an issue with SQL Server 2012.\u00a0 The documentation does not list SQL Server 2012 as a supported version.\u00a0 So I tried it on my local machine against a 2012 instance, and it worked.\u00a0 I reviewed the error message: \u201cUnable to connect to the specified server.\u201d\u00a0 This made no sense, so I verified that I could connect with sqlcmd. Then I tried it against my other VM, thinking maybe it was something with VMWare.\u00a0 That worked.\u00a0 Then I started comparing the output.\u00a0 From the successful process, I had the following:<\/p>\n<blockquote><p>09\/27\/12 15:59:07.349 [0X00000CD4] Readtrace a SQL Server trace processing utility.<br \/>\nVersion 9.01.0109 built for x64.<br \/>\nCopyright (c) Microsoft Corporation 1997-2008. All rights reserved.<br \/>\n&#8230;extra text removed&#8230;<br \/>\n09\/27\/12 15:59:07.350 [0X00000CD4] \u2013IC:\\PerfLogs\\Trace\\File_RML_2008R2.trc<br \/>\n09\/27\/12 15:59:07.350 [0X00000CD4] \u2013oC:\\SQLskills\\RMLOutput<br \/>\n09\/27\/12 15:59:07.350 [0X00000CD4] \u2013SWIN2008R2-1\\SQL2012<br \/>\n09\/27\/12 15:59:07.350 [0X00000CD4] \u2013dBaselineData<br \/>\n09\/27\/12 15:59:07.350 [0X00000CD4] Using language id (LCID): 1024 [English_United States.1252] for character formatting with NLS: 0x00060101 and Defined: 0x00060101<br \/>\n09\/27\/12 15:59:07.350 [0X00000CD4] Attempting to cleanup existing RML files from previous execution<br \/>\n09\/27\/12 15:59:07.351 [0X00000CD4] Using extended RowsetFastload synchronization<br \/>\n09\/27\/12 15:59:07.351 [0X00000CD4] Establishing initial database connection:<br \/>\n09\/27\/12 15:59:07.351 [0X00000CD4] Server: WIN2008R2-1\\SQL2012<br \/>\n09\/27\/12 15:59:07.351 [0X00000CD4] Database: BaselineData<br \/>\n09\/27\/12 15:59:07.351 [0X00000CD4] Authentication: Windows<br \/>\n<span style=\"color: #0000ff;\">09\/27\/12 15:59:07.390 [0X00000CD4] Using SQL Client version 10<br \/>\n<\/span>09\/27\/12 15:59:07.390 [0X00000CD4] Creating or clearing the performance database<br \/>\n09\/27\/12 15:59:07.892 [0X00000CD4] Processing file: C:\\PerfLogs\\Trace\\File_RML_2008R2.trc (SQL 2008)<br \/>\n09\/27\/12 15:59:07.892 [0X00000CD4] Validating core events exist<br \/>\n09\/27\/12 15:59:07.892 [0X00000CD4] Validating necessary events exist for analysis<br \/>\n&#8230;more extra text removed&#8230;<\/p><\/blockquote>\n<p>My issue was that RML Utilities uses version 10 of the Client.\u00a0 On the VM I only had SQL 2012 installed, which is version 11.\u00a0 Once I downloaded and installed the 2008R2 Client (from <a href=\"http:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=30440\" target=\"_blank\">here<\/a>, you just need sqlncli_amd64.msi for an x64 machine), everything ran fine.\u00a0 Thus, even though SQL 2012 is not listed as a supported version for RML Utilities, it looks like it will run as long as you have version 10 of the Client installed.\u00a0 And as for comparing those files?\u00a0 That\u2019s for another post!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>RML Utilities is a free utility created by Microsoft and used by the SQL Server support team.\u00a0 It\u2019s available for download and if you work with SQL Trace data at all I\u2019d recommend giving it a look. I know, I know, Trace is deprecated in SQL Server 2012.\u00a0 But not everyone is running 2012 so [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>RML Utilities and SQL Server 2012 - Erin Stellato - SQLskills<\/title>\n<meta name=\"description\" content=\"RML Utilities is a free utility available from Microsoft that allows you to analyze SQL Server trace files, and compare two files against each other.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RML Utilities and SQL Server 2012 - Erin Stellato - SQLskills\" \/>\n<meta property=\"og:description\" content=\"RML Utilities is a free utility available from Microsoft that allows you to analyze SQL Server trace files, and compare two files against each other.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/\" \/>\n<meta property=\"og:site_name\" content=\"Erin Stellato\" \/>\n<meta property=\"article:published_time\" content=\"2012-09-28T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T16:19:08+00:00\" \/>\n<meta name=\"author\" content=\"Erin Stellato\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Erin Stellato\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/\",\"name\":\"RML Utilities and SQL Server 2012 - Erin Stellato - SQLskills\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#website\"},\"datePublished\":\"2012-09-28T00:00:00+00:00\",\"dateModified\":\"2017-04-13T16:19:08+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/76170223ffffa1df03fd9be5b66cb158\"},\"description\":\"RML Utilities is a free utility available from Microsoft that allows you to analyze SQL Server trace files, and compare two files against each other.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RML Utilities and SQL Server 2012\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/\",\"name\":\"Erin Stellato\",\"description\":\"The SQL Sequel\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/76170223ffffa1df03fd9be5b66cb158\",\"name\":\"Erin Stellato\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0c8b485bd54ea26b57e99f79b525f409?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0c8b485bd54ea26b57e99f79b525f409?s=96&d=mm&r=g\",\"caption\":\"Erin Stellato\"},\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/erin\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/author\/erin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RML Utilities and SQL Server 2012 - Erin Stellato - SQLskills","description":"RML Utilities is a free utility available from Microsoft that allows you to analyze SQL Server trace files, and compare two files against each other.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/","og_locale":"en_US","og_type":"article","og_title":"RML Utilities and SQL Server 2012 - Erin Stellato - SQLskills","og_description":"RML Utilities is a free utility available from Microsoft that allows you to analyze SQL Server trace files, and compare two files against each other.","og_url":"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/","og_site_name":"Erin Stellato","article_published_time":"2012-09-28T00:00:00+00:00","article_modified_time":"2017-04-13T16:19:08+00:00","author":"Erin Stellato","twitter_misc":{"Written by":"Erin Stellato","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/","url":"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/","name":"RML Utilities and SQL Server 2012 - Erin Stellato - SQLskills","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#website"},"datePublished":"2012-09-28T00:00:00+00:00","dateModified":"2017-04-13T16:19:08+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/76170223ffffa1df03fd9be5b66cb158"},"description":"RML Utilities is a free utility available from Microsoft that allows you to analyze SQL Server trace files, and compare two files against each other.","breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/rml-utilities-and-sql-server-2012\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/erin\/"},{"@type":"ListItem","position":2,"name":"RML Utilities and SQL Server 2012"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/erin\/","name":"Erin Stellato","description":"The SQL Sequel","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/erin\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/76170223ffffa1df03fd9be5b66cb158","name":"Erin Stellato","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0c8b485bd54ea26b57e99f79b525f409?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c8b485bd54ea26b57e99f79b525f409?s=96&d=mm&r=g","caption":"Erin Stellato"},"sameAs":["http:\/\/3.209.169.194\/blogs\/erin"],"url":"https:\/\/www.sqlskills.com\/blogs\/erin\/author\/erin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/posts\/467"}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/comments?post=467"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/posts\/467\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/media?parent=467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/categories?post=467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/tags?post=467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}