<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www2.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>Kalen Delaney : SQL Server Magazine</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+Magazine/default.aspx</link><description>Tags: SQL Server Magazine</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Did You Know? It's really easy to convey the wrong message when writing</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2010/09/28/easy-to-convey-the-wrong-message-when-writing.aspx</link><pubDate>Tue, 28 Sep 2010 20:17:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:29023</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>3</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/29023.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=29023</wfw:commentRss><description>And it's also really easy to procrastinate. I meant to blog about a big misunderstanding right after last month's SQL Server Magazine UPDATE commentary appeared, but now I'm just finishing up this month's commentary and only now realized I forgot to write...(&lt;a href="http://www2.sqlblog.com/blogs/kalen_delaney/archive/2010/09/28/easy-to-convey-the-wrong-message-when-writing.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=29023" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/education/default.aspx">education</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+Magazine/default.aspx">SQL Server Magazine</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/writing/default.aspx">writing</category></item><item><title>Did You Know? Dave Campbell is So Cool!</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2009/01/29/dave-campbell-is-so-cool.aspx</link><pubDate>Thu, 29 Jan 2009 19:15:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:11587</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>2</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/11587.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=11587</wfw:commentRss><description>&lt;P&gt;And this picture on the cover of the latest issue of SQL Server Magazine is awesome! &lt;BR&gt;The content of the interview isn't bad either.&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.sqlmag.com/Articles/ArticleID/101093/101093.html href="http://www.sqlmag.com/Articles/ArticleID/101093/101093.html"&gt;http://www.sqlmag.com/Articles/ArticleID/101093/101093.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;This is very interesting timing, because I just wrote about Dave in my SQL Server Magazine UPDATE commentary a few weeks ago:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A title=http://www.sqlmag.com/Article/ArticleID/101185/sql_server_101185.html href="http://www.sqlmag.com/Article/ArticleID/101185/sql_server_101185.html"&gt;http://www.sqlmag.com/Article/ArticleID/101185/sql_server_101185.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I know, I sound&amp;nbsp; like a groupie, but so be it... I'm just waiting for the action figure now.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=11587" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/Dave+Campbell/default.aspx">Dave Campbell</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+Magazine/default.aspx">SQL Server Magazine</category></item><item><title>Geek City: Reading the Transaction Log</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2008/08/23/reading-the-transaction-log.aspx</link><pubDate>Sat, 23 Aug 2008 21:07:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:8506</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>46</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/8506.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=8506</wfw:commentRss><description>&lt;P&gt;Sorry, I'm not actually going to tell you how to read the log. I'm just going to talk about it... and whether it's a good thing to be able to do or not, or whether it's an absolutely crucial feature that MS needs to provide for us immediately, in a hotfix, if not sooner. Forget about fixing bugs, I want to read the log because I forgot to set up a trace beforehand....&lt;/P&gt;
&lt;P&gt;You may have noticed that my blogging frequency has fallen off. One or two of you also noticed that I am no longer writing a regular article each month for &lt;EM&gt;SQL Server Magazine&lt;/EM&gt;. Those two facts are related. I have cut back on non-essential activities to try to get my next book out as soon as possible.&amp;nbsp; It looks like I might even finish in time to get the book out on the shelves by early next year. Stay tuned... &lt;/P&gt;
&lt;P&gt;Since I couldn't bear to not do anything for &lt;EM&gt;SQL Server Magazine&lt;/EM&gt;, I started writing the commentary in the weekly email newsletter.&amp;nbsp; Actually, I do it every week but the fourth week of the month. If you like, you can sign up for this free newsletter &lt;A href="http://www.sqlmag.com/email/" target=_blank&gt;here&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;My commentary last Thursday seemed to have rattled some cages. Before I even woke up Thursday morning, there were already two comments on the site, and someone sent me a personal email about what I wrote.&amp;nbsp; By now, there are quite a few more comments. I basically wrote about the need for a log reader tool. It wasn't deeply technical; it's just a commentary after all. You can read it &lt;A href="http://www.sqlmag.com/Articles/Index.cfm?ArticleID=100076" target=_blank&gt;here&lt;/A&gt;:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.sqlmag.com/Articles/Index.cfm?ArticleID=100076 href="http://www.sqlmag.com/Articles/Index.cfm?ArticleID=100076"&gt;http://www.sqlmag.com/Articles/Index.cfm?ArticleID=100076&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;But boy, did people get upset. They called me bad names... well, if 'mediocre' can be considered a bad name...&lt;/P&gt;
&lt;P&gt;So I responded as follows:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Wow... I have never gotten so many comments so quickly about one of my articles. I must really have touched a nerve here!&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT color=#0000ff&gt;There is a difference between the actual data rows referenced by the log, and the log format. It's the log format, and giving people full details about what is in the log, that is propriatary information. There is nothing specifically bad about giving people that information. However, calling me names because I don't stand up on a soapbox and DEMAND that MS add this functionality seems a little extreme. There are plenty of other things MS could do with the product and providing a log reader tool is way down on the list. &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Yes I realize it is important to some people, but there are many other ways to get this information through tracing etc. If the developer resources are limited at MS, I would much prefer they spend their time on more important stuff. MS knows it's important that people have this information, that's why they added a great deal of additional tracing capabilities in SQL Server 2008.&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT color=#0000ff&gt;Also, keep in mind that a log reader tool wouldn't help you debug problems with logic, or with bad reports due to faulty SELECTs. If your WHERE clause was written badly, a log reader tool could tell you which rows were affected, but not WHY. You'd need a tracing tool for that. Vogelm's comment that a log reader tool would help troubleshoot bad queries from 3rd party apps is not true; you need to see the statements for that, not just the affected data.&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT color=#0000ff&gt;I do appreciate kbreneman's comment that the real problem is one of perception. MS should make clear that the transaction log is not an audit tool; if you want auditing, you need to set it up on your own, because you're the only one who knows what's important for you to capture.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;(The only way to respond to comments is to write a comment of my own, and then the form insists that I rate the article I am responding to. I always feel a bit weird having to rate my own articles.) 
&lt;P&gt;Since I wrote the article, I have found out that Lumigent does have a log reader tool for SQL Server 2005, but I have heard less than stellar reviews about its ability to capture some of the more interesting datatype activities that are now possible in SQL Server 2005. And their website still doesn't list any version numbers. 
&lt;P&gt;I can't stop thinking about this, so I thought I would open up the issue to a wider audience. 
&lt;P&gt;How important do you think it is that Microsoft provide a log reader tool for us? 
&lt;P&gt;Thanks! 
&lt;P&gt;&lt;FONT color=#ff00ff size=4&gt;~Kalen&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=8506" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/Inside+SQL+Server/default.aspx">Inside SQL Server</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+Magazine/default.aspx">SQL Server Magazine</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/Tools/default.aspx">Tools</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/transaction+log/default.aspx">transaction log</category></item><item><title>Geek City: Q &amp; A on my Plan Cache Sizing article in SQL Server Magazine</title><link>http://www2.sqlblog.com/blogs/kalen_delaney/archive/2007/12/15/QA-on-my-plan-cache-sizing-article-in-sql-server-magazine.aspx</link><pubDate>Sun, 16 Dec 2007 03:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:4004</guid><dc:creator>Kalen Delaney</dc:creator><slash:comments>3</slash:comments><comments>http://www2.sqlblog.com/blogs/kalen_delaney/comments/4004.aspx</comments><wfw:commentRss>http://www2.sqlblog.com/blogs/kalen_delaney/commentrss.aspx?PostID=4004</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://www.sqlmag.com/articles/articleid/97373/Managing_PlanCache_Size.html" target=_blank&gt;My December article in SQL Server Magazine&lt;/A&gt;, called Managing Plan Cache Size, expands on the information I talked about in a &lt;A href="http://sqlblog.com/blogs/kalen_delaney/archive/2007/11/04/did-you-know-sp2-does-not-limit-the-amount-of-plan-cache-you-can-have.aspx" target=_blank&gt;post last month on the limits of plan cache&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;A reader of the article ask some questions on the SQL Server Magazine web site, and I have decided to use my blog to post the answers. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Q:&amp;nbsp; Could you give me an illustration how to calculate target memory please? Let say there is a 64 bit system (64 bit hardware, windows 2003 64 bit enterprise edition, SQL Server 2005 Enterprise edition 64 bit, memory 30 GB), max server memory (in sp_configure) is between 16 (min value) - 30 GB (max value)).&lt;/EM&gt; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P align=left&gt;A: Target memory refers to the maximum physical memory that can be committed to the buffer pool and ideally is the lesser of the values you’ve configured for “max server memory” and the total amount of visible physical memory available to the OS. On a 64bit system, all your memory is visible, and your max server memory is the same as your physical memory, so target ideally will be 30GB. You can see the target memory value in the metadata view &lt;EM&gt;sys.dm_os_sys_info&lt;/EM&gt; (where it's called &lt;B&gt;bpool_commit_target)&lt;/B&gt;, along with the value for visible memory (called &lt;B&gt;bpool_visible&lt;/B&gt;). 
&lt;P align=left&gt;However, there are other factors that can affect the target value. The BOL entry for &lt;EM&gt;sys.dm_os_sys_info&lt;/EM&gt; defines &lt;B&gt;bpool_commit_target&lt;/B&gt; as follows: 
&lt;P align=left&gt;&lt;EM&gt;"Number of 8-KB buffers needed by the buffer pool. The target amount is calculated using a variety of inputs such as the current state of the system, including its load, the memory requested by current processes, the amount of memory installed on the computer, and configuration parameters."&lt;/EM&gt; 
&lt;P align=left&gt;The exact formula is not published. It's best to just use &lt;EM&gt;sys.dm_os_sys_info&lt;/EM&gt; to see what your system's target memory value is. 
&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Q:&amp;nbsp; In your article, you give an example how to calculate plan-cache pressure limit, for example for SQL Server 2005 RTM and SP1, it calculates for on 28 target memory as follows : (.75 x 8 GB) + (.5 x 20 GB) = 6 GB. Then you add to 10 GB so pressure limit is 16 GB. Where does 10 GB come from?&lt;/EM&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;A: You have rephrased the expression incorrectly. This is what the article says: 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (.75 x 8 GB) + (.5 x 20 GB) = 6 GB + 10 GB = 16 GB 
&lt;P&gt;If you do the math, you’ll see that the first term in parentheses (.75 x 8 GB) is equal to 6 GB and the second term (.5 x 20 GB) is equal to 10 GB, so we add the 6 and the 10 together. 
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Q. You mention "plan-cache pressure limit". Does it mean that when , let's say pressure limit of 28 GB is 16 GB, 16 GB is reached then SQL Server couldn't remove plan cache to make it less than 16 GB, is my understanding right?&lt;/EM&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;A: No, in the above example, we calculated the pressure limit to be 16 GB. That means when your SQL Server hits 16 GB of memory for plan cache, it will start removing plans from cache to keep cache from getting too big. 
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Q: You show how to remove a prepared query by creating a plan guide with recompile hint; is it possible to remove non-prepared query plan on the following sample:&lt;/EM&gt; 
&lt;P&gt;&lt;EM&gt;EXEC sp_create_plan_guide @name = N'RemovePlan1', @stmt = N' SELECT * FROM Sales WHERE ContactID &amp;lt; 3', @type = N'SQL', @module_or_batch = NULL, @params = N', @hints = N'OPTION(RECOMPILE)'; &lt;/EM&gt;
&lt;P&gt;&lt;EM&gt;and I issue query twice as below shown SELECT * FROM Sales WHERE ContactID &amp;lt; 3 &lt;/EM&gt;
&lt;P&gt;&lt;EM&gt;When I check in syscacheobjects with the query: &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;EM&gt;SELECT usecounts as uses, sql FROM sys.syscacheobjects WHERE dbid = db_id('AdventureWorks'); &lt;/EM&gt;
&lt;P&gt;&lt;EM&gt;It shows that the non-prepared query plan is reused with count equal to 2.&lt;/EM&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;A: Althought it is possible to create a plan guide for an adhoc (non-prepared) query, your @stmt parameter must be absolutely exactly the same as the query you will run. In your plan guide creation, you have an extra space in front of the SELECT, and your @module_or_batch parameter is incorrect; it should be NULL. A correct plan guide can be used for adhoc queries, but it will NOT remove the adhoc plan from cache when you drop the plan guide, like a plan guide for a prepared query will. You will have to wait for the next version (SQL Server 2008) to get that behavior.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I hope this helps! 
&lt;P&gt;&lt;FONT color=#ff00ff&gt;~Kalen&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://www2.sqlblog.com/aggbug.aspx?PostID=4004" width="1" height="1"&gt;</description><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/memory+management/default.aspx">memory management</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/plan+cache/default.aspx">plan cache</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/plan+guides/default.aspx">plan guides</category><category domain="http://www2.sqlblog.com/blogs/kalen_delaney/archive/tags/SQL+Server+Magazine/default.aspx">SQL Server Magazine</category></item></channel></rss>