Warning: Constant WP_TEMP_DIR already defined in /var/www/html/blogs/joe/wp-config.php on line 93

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/blogs/joe/wp-config.php:93) in /var/www/html/blogs/joe/wp-includes/rest-api/class-wp-rest-server.php on line 1902
{"id":525,"date":"2011-10-09T02:10:00","date_gmt":"2011-10-09T02:10:00","guid":{"rendered":"\/blogs\/joe\/post\/Columnstore-indexes-and-memory-grants.aspx"},"modified":"2013-01-02T20:32:36","modified_gmt":"2013-01-03T04:32:36","slug":"the-case-of-the-columnstore-index-and-the-memory-grant","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/","title":{"rendered":"The case of the columnstore index and the memory grant"},"content":{"rendered":"

<\/p>\n

\nThis post covers examples from Denali CTP3, version 11.0.1440<\/em>.<\/font><\/font>  \n<\/p>\n

<\/font><\/span><\/p>\n

\nI was working with Denali’s columnstore index feature this last week and was testing it on a virtual machine when I encountered the following error message when trying to create a new index:<\/font><\/span>\n<\/p>\n

\nThe statement has been terminated.
\nMsg 8657, Level 17, State 5, Line 2
\nCould not get the memory grant of 91152 KB because it exceeds the maximum configuration limit in workload group 'default' (2) and resource pool 'default' (2). Contact the server administrator to increase the memory usage limit.'<\/font><\/span><\/span>\n<\/p>\n

\nNow at the time the VM I was using was constrained for resources. It was configured to use 1 GB of RAM. <\/font><\/span>\n<\/p>\n

\nSo I shut down the VM and added in 7 GB more of RAM. Given that the “max server memory (MB)” wasn’t capped, I was then able to create the columnstore index successfully. Regarding the memory requirements, BOL states that we need [approximately] 8 MBs times the # of columns in the index times the DOP.  <\/span>Also, the more string data type columns involved, the higher the memory needed for creating the index. <\/font><\/span>\n<\/p>\n

\nSo I thought I would test out these requirements in a more controlled fashion and see how close the estimates were to the reality. <\/font><\/span>\n<\/p>\n

\nIn this test, I used a VM with 4 processors and 8 GB of RAM, but unlike with my previous experience I capped the “max server memory (MB)” to a much lower value to reproduce the issue I had earlier.  <\/span>I was adding the columnstore index to the dbo.FactInternetSales table from the AdventureWorksDWDenali database (which can be downloaded here<\/a><\/font>).<\/font><\/span>\n<\/p>\n

\nFor the first step, I capped the max server memory for my test Denali SQL Server instance to a very low value (300 MBs did the trick in this case):<\/font><\/span>\n<\/p>\n

\nEXEC sp_configure 'show advanced options', 1<\/font><\/span>\n<\/p>\n

\nRECONFIGURE<\/font><\/span>\n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nEXEC sp_configure 'max server memory (MB)', 300<\/font><\/span>\n<\/p>\n

\nRECONFIGURE<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span><\/span>\n<\/p>\n

\nNext I attempted to create the following columnstore index:<\/font><\/span>\n<\/p>\n

\nUSE [AdventureWorksDWDenali]<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nCREATE NONCLUSTERED COLUMNSTORE <\/font><\/span>\n<\/p>\n

\nINDEX [NCSI_FactInternetSales] <\/font><\/span>\n<\/p>\n

\nON [dbo].[FactInternetSales]<\/font><\/span>\n<\/p>\n

\n(<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[ProductKey],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[OrderDateKey],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[DueDateKey],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[ShipDateKey],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[CustomerKey],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[PromotionKey],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[CurrencyKey],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[SalesTerritoryKey],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[SalesOrderNumber],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[SalesOrderLineNumber],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[RevisionNumber],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[OrderQuantity],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[UnitPrice],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[ExtendedAmount],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[UnitPriceDiscountPct],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[DiscountAmount],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[ProductStandardCost],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[TotalProductCost],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[SalesAmount],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[TaxAmt],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[Freight],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[CarrierTrackingNumber],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[CustomerPONumber],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[OrderDate],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[DueDate],<\/font><\/span>\n<\/p>\n

\n          <\/font><\/span>[ShipDate])<\/font><\/span>\n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nThis failed with the following error:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nThe statement has been terminated.<\/font><\/span>\n<\/p>\n

\nMsg 8657, Level 17, State 5, Line 2<\/font><\/span>\n<\/p>\n

\nCould not get the memory grant of 143560 KB<\/strong> because it exceeds the maximum configuration limit in workload group 'default' (2) and resource pool 'default' (2).  <\/span>Contact the server administrator to increase the memory usage limit.<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nSo the memory grant request was just over 140 MB.  <\/span>Looking at the requirements of the columnstore index request and taking into account the equation in BOL, we have 8 MBs x 25 columns x 4 available processors = 800 MB.  <\/span>Quite a bit higher than the 140 MB it needed at runtime.  <\/span>But this was assuming 4 processors in the equation.  <\/span>If we factor in just 1 proc being used – we have 200 MB which is closer to what was being requested and factors in the varying data types and sizes for columns defined in FactInternetSales.<\/font><\/span>\n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nWhat if I capped the DOP but keep the memory capped at the low value?  <\/span>I gave it a try:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nEXEC sp_configure 'max degree of parallelism', 1<\/font><\/span>\n<\/p>\n

\nRECONFIGURE<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nAttempting a creation of the same index gave the following error message and same memory grant value:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nThe statement has been terminated.<\/font><\/span>\n<\/p>\n

\nMsg 8657, Level 17, State 5, Line 1<\/font><\/span>\n<\/p>\n

\nCould not get the memory grant of 143560 KB because it exceeds the maximum configuration limit in workload group 'default' (2) and resource pool 'default' (2).  <\/span>Contact the server administrator to increase the memory usage limit.<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nSo in this case, capping the DOP didn’t reduce the memory requirements.<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nWhat about using the MAXDOP hint with the CREATE statement (WITH (MAXDOP = 1))?  <\/span>Again this returned the same memory grant requirement of 143560 KB.<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nWhat about capping the default workload group itself (not recommending this as standard practice – but rather to further explore memory grant requirements for columnstore)?<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nALTER WORKLOAD GROUP [default] <\/font><\/span>\n<\/p>\n

\nWITH(max_dop=1)<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nALTER RESOURCE GOVERNOR RECONFIGURE<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nAnd even after this change, the memory grant requirements remained the same. So I reverted the DOP options to get back to my previous state:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nEXEC sp_configure 'max degree of parallelism', 0<\/font><\/span>\n<\/p>\n

\nRECONFIGURE<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nALTER WORKLOAD GROUP [default] <\/font><\/span>\n<\/p>\n

\nWITH(max_dop=0)<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nALTER RESOURCE GOVERNOR RECONFIGURE<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nRegarding the maximum memory grant request itself, the error message gives us enough of a hint on where to look (workload group 'default' (2) and resource pool 'default' (2)).   <\/span>So I ran the following query to return the request_max_memory_grant_percent value for the default workload group:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nSELECT request_max_memory_grant_percent<\/font><\/span>\n<\/p>\n

\nFROM sys.resource_governor_workload_groups<\/font><\/span>\n<\/p>\n

\nWHERE name = 'default'<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nThe value returned was 25%.  <\/span>So with my 300 MB cap, we’re talking 75 MB.  <\/span>Not the 140 MB we need.<\/font>  <\/font><\/span><\/span>\n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nI then bumped up the max memory grant percent (but left the max server memory at the low value) just to see what would happen:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nALTER WORKLOAD GROUP [default] WITH(request_max_memory_grant_percent=70)<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\nALTER RESOURCE GOVERNOR RECONFIGURE<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nSure enough – my CREATE NONCLUSTERED COLUMNSTORE INDEX was allowed to execute – but while it executed, it didn't complete.  Instead it ran for 2 minutes and 59 seconds before getting the following error message:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nThe statement has been terminated.<\/font><\/span>\n<\/p>\n

\nMsg 8645, Level 17, State 1, Line 1<\/font><\/span>\n<\/p>\n

\nA timeout occurred while waiting for memory resources to execute the query in resource pool 'default' (2). Rerun the query. <\/font><\/span>\n<\/p>\n

\n<\/span>\n<\/p>\n

\n<\/span><\/span>\n<\/p>\n

\n<\/span><\/span>\n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nI tried creating the index a second time so that I could see what was going on in sys.dm_exec_query_memory_grants – but it executed immediately the second time around. So I set back the max memory grant to the default 25 % – dropped the index and tried to recreate and got the error again.  <\/span>I then set the max memory grant back to 70% and had the timeout again – but this time I was ready for it and I executed a query against sys.dm_exec_query_memory_grants:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nSELECT scheduler_id, dop, requested_memory_kb, required_memory_kb, ideal_memory_kb<\/font><\/span>\n<\/p>\n

\nFROM sys.dm_exec_query_memory_grants<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nThe results were as follows:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\n\"clip_image002[4]\"<\/a><\/span><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nWhat jumped out at me was the DOP value of “1” (even though my SQL Server instance’s “max degree of parallelism” was set to “0” and I had 4 available prcs and the “default” pool dop was also set to 0).<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nNow it seems that the requested memory was remaining the same because the plan was assuming to be maxdop of “1” all along.  <\/span>Which made me wonder if the requested memory would increase if I added a hint for the creation of the columnstore index to more than one processor (I was reaching, I know, but I'm a fiddler by nature)?  <\/span>Before testing this, I set back the max memory grant percent to 25%:<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nALTER WORKLOAD GROUP [default] WITH(request_max_memory_grant_percent=25)<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\nALTER RESOURCE GOVERNOR RECONFIGURE<\/font><\/span>\n<\/p>\n

\nGO<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nThen I used WITH (MAXDOP = 4) for the query.  <\/span>The result?  <\/span>Still asking for a memory grant of 143560 KB.  <\/span>And repeating the test of bumping up the max memory grant and checking the dop value in sys.dm_exec_query_memory_grants – it remained at “1”.<\/font>  <\/font><\/span><\/span>\n<\/p>\n

\n<\/span><\/span>\n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nSo this post was more of an exploration and if I saw this case in the wild I would ask more directly about available memory for the SQL Server instance and\/or increasing the max server memory if there was sufficient availability already.  <\/span><\/font><\/span>\n<\/p>\n

\n<\/span><\/font><\/span>\n<\/p>\n

\n<\/span>I would also ask about the necessity of each column being included in the columnstore index definition.  <\/span>For example – if I needed only half of the columns from FactInternetSales, we’re talking about a 60MB memory grant requirement versus a 140 MB one.<\/font><\/span>\n<\/p>\n

\n \n<\/p>\n

\n<\/font><\/span>\n<\/p>\n

\nDuring my work last week with columnstore indexes, there were also some interesting findings related to parallelism.  <\/span>I’ll save this for another post.<\/font><\/span>\n<\/p>\n

\n<\/font><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"

This post covers examples from Denali CTP3, version 11.0.1440.   I was working with Denali’s columnstore index feature this last week and was testing it on a virtual machine when I encountered the following error message when trying to create a new index: The statement has been terminated. Msg 8657, Level 17, State 5, Line 2 […]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,26],"tags":[],"class_list":["post-525","post","type-post","status-publish","format-standard","hentry","category-columnstore-indexes","category-memory"],"yoast_head":"\nThe case of the columnstore index and the memory grant - Joe Sack<\/title>\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\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The case of the columnstore index and the memory grant - Joe Sack\" \/>\n<meta property=\"og:description\" content=\"This post covers examples from Denali CTP3, version 11.0.1440.   I was working with Denali’s columnstore index feature this last week and was testing it on a virtual machine when I encountered the following error message when trying to create a new index: The statement has been terminated. Msg 8657, Level 17, State 5, Line 2 […]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/\" \/>\n<meta property=\"og:site_name\" content=\"Joe Sack\" \/>\n<meta property=\"article:published_time\" content=\"2011-10-09T02:10:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-01-03T04:32:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/columnstore-indexes-and-memory-grants\/40e3180c\/clip_image0024_thumb.jpg\" \/>\n<meta name=\"author\" content=\"Joseph Sack\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joseph Sack\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/\",\"name\":\"The case of the columnstore index and the memory grant - Joe Sack\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#website\"},\"datePublished\":\"2011-10-09T02:10:00+00:00\",\"dateModified\":\"2013-01-03T04:32:36+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Columnstore indexes\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/columnstore-indexes\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The case of the columnstore index and the memory grant\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/\",\"name\":\"Joe Sack\",\"description\":\"SQL Server Performance Tuning, High Availability and Disaster Recovery Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648\",\"name\":\"Joseph Sack\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g\",\"caption\":\"Joseph Sack\"},\"description\":\"Joe Sack is a Principal Consultant with SQLskills. He has worked as a SQL Server professional since 1997 and has supported and developed for SQL Server environments in financial services, IT consulting, manufacturing, retail and the real estate industry. Prior to joining SQLskills he worked at Microsoft as a Premier Field Engineer supporting very large enterprise customer environments. He was responsible for providing deep SQL Server advisory services, training, troubleshooting and ongoing solutions guidance. His areas of expertise include performance tuning, scalability, T-SQL development and high-availability. In 2006 Joe earned the \u201cMicrosoft Certified Master: SQL Server 2005\u201d certification and in 2008 he earned the \u201cMicrosoft Certified Master: SQL Server 2008\u201d certification. In 2009 he took over responsibility for the entire SQL Server Microsoft Certified Master program and held that post until 2011. He was given the SQL Server MVP award in 2013.\",\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/joe\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/josephsack\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/joe\/author\/joe\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The case of the columnstore index and the memory grant - Joe Sack","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\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/","og_locale":"en_US","og_type":"article","og_title":"The case of the columnstore index and the memory grant - Joe Sack","og_description":"This post covers examples from Denali CTP3, version 11.0.1440.   I was working with Denali’s columnstore index feature this last week and was testing it on a virtual machine when I encountered the following error message when trying to create a new index: The statement has been terminated. Msg 8657, Level 17, State 5, Line 2 […]","og_url":"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/","og_site_name":"Joe Sack","article_published_time":"2011-10-09T02:10:00+00:00","article_modified_time":"2013-01-03T04:32:36+00:00","og_image":[{"url":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-content\/uploads\/windows-live-writer\/columnstore-indexes-and-memory-grants\/40e3180c\/clip_image0024_thumb.jpg"}],"author":"Joseph Sack","twitter_misc":{"Written by":"Joseph Sack","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/","url":"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/","name":"The case of the columnstore index and the memory grant - Joe Sack","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#website"},"datePublished":"2011-10-09T02:10:00+00:00","dateModified":"2013-01-03T04:32:36+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/the-case-of-the-columnstore-index-and-the-memory-grant\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/"},{"@type":"ListItem","position":2,"name":"Columnstore indexes","item":"https:\/\/www.sqlskills.com\/blogs\/joe\/category\/columnstore-indexes\/"},{"@type":"ListItem","position":3,"name":"The case of the columnstore index and the memory grant"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/joe\/","name":"Joe Sack","description":"SQL Server Performance Tuning, High Availability and Disaster Recovery Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/joe\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/533eb0113a15fb5a6e8067a49e4ae648","name":"Joseph Sack","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/joe\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4b39a7719a6bfff1add3ec00527810734579ee114d6d983e8e68f937b77be96?s=96&d=mm&r=g","caption":"Joseph Sack"},"description":"Joe Sack is a Principal Consultant with SQLskills. He has worked as a SQL Server professional since 1997 and has supported and developed for SQL Server environments in financial services, IT consulting, manufacturing, retail and the real estate industry. Prior to joining SQLskills he worked at Microsoft as a Premier Field Engineer supporting very large enterprise customer environments. He was responsible for providing deep SQL Server advisory services, training, troubleshooting and ongoing solutions guidance. His areas of expertise include performance tuning, scalability, T-SQL development and high-availability. In 2006 Joe earned the \u201cMicrosoft Certified Master: SQL Server 2005\u201d certification and in 2008 he earned the \u201cMicrosoft Certified Master: SQL Server 2008\u201d certification. In 2009 he took over responsibility for the entire SQL Server Microsoft Certified Master program and held that post until 2011. He was given the SQL Server MVP award in 2013.","sameAs":["http:\/\/3.209.169.194\/blogs\/joe","https:\/\/twitter.com\/https:\/\/twitter.com\/josephsack"],"url":"https:\/\/www.sqlskills.com\/blogs\/joe\/author\/joe\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts\/525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/comments?post=525"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/posts\/525\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/media?parent=525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/categories?post=525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/joe\/wp-json\/wp\/v2\/tags?post=525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}