<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Made2Mentor &#187; Made2Manage</title>
	<atom:link href="http://www.made2mentor.com/category/made2manage/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.made2mentor.com</link>
	<description>My Path Toward Business Intelligence Mastery</description>
	<lastBuildDate>Sun, 05 Sep 2010 17:42:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>&#8220;That&#8217;s Not My Job&#8221; One Other Maintenance Plan Issue</title>
		<link>http://www.made2mentor.com/2010/09/thats-not-my-job-one-other-maintenance-plan-issue/</link>
		<comments>http://www.made2mentor.com/2010/09/thats-not-my-job-one-other-maintenance-plan-issue/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 13:44:12 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Disaster Recovery]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3690</guid>
		<description><![CDATA[
			
				
			
		
<p><p class="wp-caption-text">Not My Job</p>Experienced M2M Administrators may have noticed something consipicously absent from my article on maintenance plans. I either skipped it intentionally to make a point or forgot because I have the attention span of a gnat, I&#8217;ll let you speculate the reason amongst yourselves. </p>
<p>As of now, all versions of Made2Manage since 3.X [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F09%2Fthats-not-my-job-one-other-maintenance-plan-issue%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F09%2Fthats-not-my-job-one-other-maintenance-plan-issue%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><div id="attachment_3691" class="wp-caption alignleft" style="width: 211px"><a href="http://www.made2mentor.com/wp-content/uploads/2010/09/not_my_job1.jpg"><img src="http://www.made2mentor.com/wp-content/uploads/2010/09/not_my_job1.jpg" alt="Not My Job" title="not_my_job1" width="201" height="276" class="size-full wp-image-3691" /></a><p class="wp-caption-text">Not My Job</p></div>Experienced M2M Administrators may have noticed something consipicously absent from my article on <a href="http://www.made2mentor.com/2010/08/sql-server-maintenance-plans-for-smallmid-sized-businesses-faqs/">maintenance plans</a>. I either skipped it intentionally to make a point or forgot because I have the attention span of a gnat, I&#8217;ll let you speculate the reason amongst yourselves. </p>
<p>As of now, all versions of Made2Manage since 3.X are a kind of hybrid database and include a Visual FoxPro database component. It may not contain your shipping records, but it is vital nonetheless. Visual FoxPro is an anomaly in that it&#8217;s database tables are actual files on disk. What is in that database? </p>
<ol>
<li>All of your login information including name, password, permissions, etc.</li>
<li>All M2M Reports, both standard and any you&#8217;ve customized. </li>
<li>Any FastForms customizations you may have created. </li>
<li>Text values for terms, invoice status, and other field codes saved in the SQL database. </li>
</ol>
<p>If you lose these files, you are dead in the water. I myself have had to re-create the files from a backup that was a few months old. It&#8217;s not pretty.</p>
<p>The title for this post comes from an interesting call I received from the Vice President of one of M2M&#8217;s customers. He said his M2M system was down because they had a raid array fail, and asked me for advice. My advice was simple, rebuild the server and restore from backup. He told me in an exasperated voice that he had tried that, and the SQL databases were restored, but they had lost the entire M2M file share. Upon further questioning he revealed that while he had SQL database backups, they were not taking backups of the file share of that server. </p>
<p>He elaborated how his M2M Administrator <a href="http://www.made2mentor.com/2010/04/thats-it-man-game-over-man-game-over-what-the-are-we-gonna-do-now-2/">marched into his office</a> and told him the bad news. When the VP asked him why critical M2M files weren&#8217;t being backed up he confidently said, &#8220;That&#8217;s not my job, file backup is Bob&#8217;s responsibility. Mine is M2M administration.&#8221; The VP then informed the employee that neither was his job anymore and let him go. </p>
<p>If you&#8217;re a M2M Administrator, these files are your responsibility whether or not you have a dedicated Network Admin who oversees file backups. In an emergency, it doesn&#8217;t mater why M2M is down, only that it is down. </p>
<p>What do I recommend? You must verify that these are being backed up on a regular basic and perform test restores on them as well. If you are in a situation where cannot perform test restores on the files, perhaps you don&#8217;t have access to the tape machine, then make your own backups somewhere else. At the very least perform a periodic copy of the M2Mdata directory to another server, even your own desktop. The size of the directory should be less than a gigabyte. If you include compression in your process through a free program like <a href="http://www.7-zip.org/">7-Zip</a>, the compression rate is somewhere near 90%. This means that each backup of your M2M share is something less than 100MB which is totally manageable.  Some quick options come to mind. You could use Powershell, Windows Scripting through batch files, or my weapon of choice SQL Server Integration Services. </p>
<p>It&#8217;s not very hard to do, and is paramount in your role as a M2M Administrator. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/09/thats-not-my-job-one-other-maintenance-plan-issue/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SQL Server Maintenance Plans for Small/Mid-sized Businesses FAQs</title>
		<link>http://www.made2mentor.com/2010/08/sql-server-maintenance-plans-for-smallmid-sized-businesses-faqs/</link>
		<comments>http://www.made2mentor.com/2010/08/sql-server-maintenance-plans-for-smallmid-sized-businesses-faqs/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 14:00:06 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Data Corruption]]></category>
		<category><![CDATA[Data Integrity]]></category>
		<category><![CDATA[Disaster Recovery]]></category>
		<category><![CDATA[Performance Tuning]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3614</guid>
		<description><![CDATA[
			
				
			
		
<p>I get a ton of questions and calls about SQL Server Maintenance issues from Administrators who just want their server to work and be protected. They&#8217;re not interested in the intricate structure of a transaction log, how to use wait stats, etc. While many database administrators who read this article will disagree or perhaps outright [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F08%2Fsql-server-maintenance-plans-for-smallmid-sized-businesses-faqs%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F08%2Fsql-server-maintenance-plans-for-smallmid-sized-businesses-faqs%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>I get a ton of questions and calls about SQL Server Maintenance issues from Administrators who just want their server to work and be protected. They&#8217;re not interested in the intricate structure of a transaction log, how to use wait stats, etc. While many database administrators who read this article will disagree or perhaps outright flame me, (cough <a href="http://www.networkworld.com/community/mccown">Sean McCown</a> cough <img src='http://www.made2mentor.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) I feel that SQL maintenance plans are a very effective means for non-dbas to protect their data. </p>
<p>Rather than recreate tutorials that others have already written and take the same screenshots they provide, I&#8217;ll link you to them and suggest settings that are applicable to most M2M companies. Keep in mind that every situation is different, what I&#8217;m offering are very general guidelines. </p>
<h3>Maintenance Plan Tutorials</h3>
<p>The simplest way to maintain a SQL Server is to use the Maintenance Plan Wizard. Please select a link to instructions for your server version. Each site has an easy to follow tutorial. These types of tutorials will explain the purpose of most settings, but will not make recommendations because so many factors come into play.  </p>
<ul>
<li><a href="http://www.databasejournal.com/features/mssql/article.php/3530486/Working-with-the-SQL-Server-2000-Maintenance-Plan-Wizard.htm">SQL Server 2000</a></li>
<li><a href="http://www.databasejournal.com/features/mssql/article.php/3656816/SQL-2005-Maintenance-Wizard-Part-1.htm">SQL Server 2005 Part One</a>, <a href="http://www.databasejournal.com/features/mssql/article.php/3662636/SQL-2005-Maintenance-Wizard-Part-2.htm">two</a>, and <a href="http://www.databasejournal.com/features/mssql/article.php/3665841/Microsoft-SQL-2005-Maintenance-Wizard-Part-3.htm">three</a>.</li>
<li><a href="http://www.sql-server-performance.com/articles/dba/Overview_of_Maintenance_Plans_in_SQL_Server_2008_p1.aspx">SQL Server 2008</a></li>
</ul>
<h3>Database Mail</h3>
<p>Before moving on to the guidelines, make sure you also have database mail set up for notifications. A Maintenance Plan isn&#8217;t any good if it isn&#8217;t running successfully. Unless you want to manually check the server each day, you&#8217;ll need to set up notifications. </p>
<p>For SQL Server 2000, there are a couple of ways to do this neither of which is particularly appetizing. The easiest way is to use <a href="http://blogs.techrepublic.com.com/datacenter/?p=363">Outlook on your server</a>. However, ideally you shouldn&#8217;t be running anything but SQL Server on your SQL Server (more on that in a future article). You can send mail <a href="http://www.howtogeek.com/howto/database/sending-automated-job-email-notifications-in-sql-server-with-smtp/">using stored procedures</a> using SQL Server but I don&#8217;t expect that many of you would want to deal with that. It&#8217;s a mess and also a perfect excuse to nag your boss to approve a SQL Server upgrade. </p>
<p>SQL Server 2005 and 2008 have mail capability built in and it&#8217;s very easy to set up. Visit the following sites for complete walkthroughs:</p>
<ul>
<li><a href="http://www.sql-server-performance.com/articles/dba/email_functionality_p1.aspx">SQL Server 2005</a></li>
<li><a href="http://www.codeproject.com/KB/database/SQLServer2008DatabaseMail.aspx">SQL Server 2008</a></li>
</ul>
<h3>FAQs and Guidelines for Small/Mid-sized Companies </h3>
<p>Alright, now that the groundwork is out of the way, my recommendations follow. Companies which use M2M tend to be small to mid-sized. Most M2M databases are between 5 and 100GB and with data smaller databases like these, performance isn&#8217;t a huge issue. These guidelines assume that you fit this profile. The following questions are frequently asked of me, and most of them are business related, rather than technical. </p>
<p><strong>Which recovery model should I use? </strong><br />
I respond to this question with a question. &#8220;How much data can you afford to lose?&#8221; If you are willing to risk losing a day&#8217;s productivity, then Simple Recovery Model is fine and you won&#8217;t have to worry about transaction log backups. However, if you need better protection than that, use the Full Recovery Model. I have some databases set to the Simple Recovery Model because I simply don&#8217;t care about them. One example is WebSense. Would it be the end of the world if I lost 24 hours employee web surfing records? Not really. I wrote a more detailed explanation of recovery models <a href="http://www.made2mentor.com/2010/04/sql-server-recovery-models-and-backup-types/">here. </a></p>
<p><strong>How often should I do transaction log backups? </strong><br />
Once again, how much work can you afford to lose? Most of the M2M sites I&#8217;ve dealt with which use the Full Recovery Model, schedule transaction log backups every 15 to 60 minutes. Keep in mind that whatever time span you set for this represents the maximum amount of work you can lose. Get your backups (full and t-log) off the server as quickly as possible. I&#8217;ve looked at more than a few M2M Servers where the backups were kept on the same drive volume as the database. This is a waste of time. </p>
<p><strong>How long should I keep backups? </strong><br />
I hate to keep echoing questions back at you, but how long do you need them? A couple of the companies I do business with keep their full database backups almost a year. However, they move them to tape every day and only have one or two copies internally. Read further about <a href="http://www.made2mentor.com/2010/04/disaster-recovery-options-for-smallmedium-sized-businesses/">backup options for details. </a></p>
<p><strong>Do I have to worry about SQL Database Integrity?</strong><br />
I often receive blank looks when I mention integrity checks. M2M recommends moving from Visual FoxPro to SQL Server because it is more stable. However, that doesn&#8217;t mean you can&#8217;t get data corruption. I recommend checking database integrity before your nightly full backup. If any database fails an integrity check contact a qualified database administrator to deal with it. Unlike the old days of re-indexing, purifying, and packing Visual FoxPro tables, SQL database integrity failures can be a serious problem. If you decide to try to handle that yourself, look for articles written by known experts such as the great <a href="http://www.sqlskills.com/blogs/paul/">Paul Randal.</a> While we&#8217;re on the subject of data integrity, make sure to check that the maintenance plan verifes the integrity of the backups as well. However, you still need to perform test restores to be absolutely sure that your backups are sound. </p>
<p><strong>Do I need to re-index my SQL Databases? </strong></p>
<p>Once again, when I answer this question I am assuming that you have a database between 5 and 100GB and have decent server hardware as well. The answer is yes, you should index your SQL Databases. I index mine on weekends, but I could just as soon index it on weeknights as it doesn&#8217;t take much time with a database that small. You won&#8217;t notice much a difference in performance after indexing either as M2M is not heavily indexed. Since time isn&#8217;t a factor here, set your indexes to rebuild the indexes which effectively drops and then recreates them. Also, go ahead and update statistics as well. </p>
<p><a href="http://www.made2mentor.com/wp-content/uploads/2010/08/paul_randal.jpg"><img src="http://www.made2mentor.com/wp-content/uploads/2010/08/paul_randal-150x150.jpg" alt="" title="paul_randal" width="150" height="150" class="alignleft size-thumbnail wp-image-3675" /></a><strong>Can I shrink my database and make it smaller? </strong><br />
No, do not ever shrink your database unless you have a compelling reason to do so. Unless your database grew for a specific reason do not shrink your database because it will then have to grow again. These processes are expensive and unnecessary. A typical scenario which may require a shrink would be an over-sized transaction log which went without a backup for a long time. You can purchase that shirt <a href="http://www.zazzle.com/shrink_that_db_and_an_angel_loses_its_wings_tshirt-235048690607701425">here</a>.</p>
<p><strong>How often should I perform a test restore? </strong><br />
Do you have a good backup? Are you sure??? You know that scene in <a href="http://www.imdb.com/title/tt0104952/">My Cousin Vinny</a> where Vinny and Mona Lisa are arguing about the dripping faucet? </p>
<blockquote><p>Mona Lisa: Did it ever occur to you that it could be turned off and drip at the same time?<br />
Vinny: No, because if you turned it off, it wouldn&#8217;t drip.<br />
Mona Lisa: Maybe it&#8217;s broken.<br />
Vinny: Is that what you&#8217;re saying? It&#8217;s broken?<br />
Mona Lisa: Yeah, that&#8217;s it; it&#8217;s broken.<br />
Vinny: You sure?<br />
Mona Lisa: I&#8217;m positive.<br />
Vinny: Maybe you didn&#8217;t twist it hard enough.<br />
Mona Lisa: I twisted it just right.<br />
Vinny: How can you be so sure?<br />
Mona Lisa: If you will look in the manual, you will see that this particular model faucet requires a range of 10-16 foot pounds of torque. I routinely twist the maximum allowable torquage.<br />
Vinny: How can you be sure you used 16 foot pounds of torque?<br />
Mona Lisa: Because I used a Craftsman model 1019 Laboratory edition, signature series torque wrench. The kind used by Cal Tech High Energy physicists, and NASA engineers.<br />
Vinny: In that case, how can you be sure that&#8217;s accurate?<br />
Mona Lisa: Because a split second before the torque wrench was applied to the faucet handle, it had been calibrated by top members of the state and federal Departments of Weights and Measures, to be dead-on balls accurate. Here&#8217;s the certificate of validation.<br />
Vinny: &#8220;Dead-on balls accurate&#8221;?<br />
Mona Lisa: It&#8217;s an industry term.</p></blockquote>
<p>The scene is funny, but the point is valid. How can you be sure that your backups are &#8220;Dead-on balls accurate?&#8221; Perform test restores. If you haven&#8217;t performed a test restore then the backup cannot be relied upon. I can hear the question forming in your mind, &#8220;Do I have to perform a test restore every single day?&#8221; No, I don&#8217;t expect you to check every single backup to verify that it restores. However, once or twice a month isn&#8217;t out of line. After all, with the size of most of our databases, it only takes 10 to 15 minutes to perform a test restore anyway. </p>
<p>In future articles, I&#8217;ll show you how to perform database restores using both full and transaction log backups. I&#8217;ll also document the system I&#8217;m currently using. I backup both a SQL 2000 and 2008 R2 database server using t-sql scripts, do-it-yourself compression and encryption, as well as nightly test restores.  It will take me awhile to document, since I have to re-set all of that up from scratch at home. I&#8217;ll try to post these articles before Consona Connect. </p>
<p>Any questions? Did I forget anything? Any disagreements? </p>
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/08/sql-server-maintenance-plans-for-smallmid-sized-businesses-faqs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A Wake-Up Call</title>
		<link>http://www.made2mentor.com/2010/08/a-wake-up-call/</link>
		<comments>http://www.made2mentor.com/2010/08/a-wake-up-call/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 17:39:31 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Data Integrity]]></category>
		<category><![CDATA[Disaster Recovery]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3612</guid>
		<description><![CDATA[
			
				
			
		
<p>Last night I received a call from a independent M2M Consultant who needed help with a transaction log that was growing too large. One of the reasons I have this blog is to find others with skills which complement mine. I like to think of us as a group of rebel soldiers with various roles [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F08%2Fa-wake-up-call%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F08%2Fa-wake-up-call%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Last night I received a call from a independent M2M Consultant who needed help with a transaction log that was growing too large. One of the reasons I have this blog is to find others with skills which complement mine. I like to think of us as a group of rebel soldiers with various roles in a Galactic War with a tyrannical emperor, but that&#8217;s beside the point. The caller specializes in customizations and is not a database administrator. So, I started to refer him to my blog where I had listed the steps to take to deal with a transaction log growth problem, but then I realized that <strong>I hadn&#8217;t written it yet</strong>. Face palm!</p>
<p>First let me apologize because some personal life issues, as well as a super secret project I&#8217;ve been working on for the Made2Manage community, have gotten in the way of my blogging. I promise to do better in the future, starting tomorrow. </p>
<p>Anyway, in this case, the client had set up their full backups at midnight with a single transaction log backup at 11pm. If you&#8217;ve read my previous article about <a href="http://www.made2mentor.com/2010/04/sql-server-recovery-models-and-backup-types/">SQL Server Recovery Models</a>, you should have an idea of why that&#8217;s a bad idea. </p>
<p>Remember that there are two basic components of every SQL database, the data file and the transaction log. The transaction log keeps track of every transaction made since the last full or transaction log backup. I&#8217;ll discuss why in the next article, but I generally set transaction log backups every 15 &#8211; 60 minutes. Generally speaking, backing up the transaction log clears it&#8217;s free space and prevents excessive growth. Since this installation contained 23 hours of processing time in their transaction log every day, it was too large. </p>
<p>Their transaction log was a complete waste of time in this case because it&#8217;s purpose is to allow point in time recovery. If you don&#8217;t backup the transaction logs and hardware or other failure occurs, then you may lose the entire log. The only protection this kind of backup provided was if the server died between 11pm and midnight. However, during that hour no real work was taking place anyway. I suggested to him that he ask the business owner if he should create a new maintenance plan with more frequent transaction log backups or switch to Simple Recovery Model which doesn&#8217;t require them. </p>
<p>Assuming you have good backups, and the transaction log is backed up at fifteen minute intervals, written the to another server (or immediately copied to one after writing them locally) then the greatest loss of data would be less than 15 minutes. </p>
<p>Tomorrow I&#8217;ll publish an article covering the creation of simple maintenance plans for SQL Server and I will quickly follow up with detailed instructions as to how to deal with a transaction log growth problem as well. </p>
<p>Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/08/a-wake-up-call/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Who’s Using the Production Calendar?</title>
		<link>http://www.made2mentor.com/2010/08/whos-using-the-production-calendar/</link>
		<comments>http://www.made2mentor.com/2010/08/whos-using-the-production-calendar/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 12:30:22 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3584</guid>
		<description><![CDATA[
			
				
			
		
<p class="wp-caption-text">M2M Calendar</p>
<p>I&#8217;ve eluded to a super secret (if I told you, I&#8217;d have to kill you) project that I&#8217;ve been working on a few times recently. This poll is a part of it. I&#8217;d really like to know how many of you folks are using the M2M Production Calendar (CALNDR) to track workdays, weekdays, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F08%2Fwhos-using-the-production-calendar%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F08%2Fwhos-using-the-production-calendar%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<div id="attachment_3587" class="wp-caption aligncenter" style="width: 263px"><a href="http://www.made2mentor.com/wp-content/uploads/2010/08/M2M-Calendar.png"><img src="http://www.made2mentor.com/wp-content/uploads/2010/08/M2M-Calendar.png" alt="M2M Calendar" title="M2M Calendar" width="253" height="270" class="size-full wp-image-3587" /></a><p class="wp-caption-text">M2M Calendar</p></div>
<p>I&#8217;ve eluded to a super secret (if I told you, I&#8217;d have to kill you) project that I&#8217;ve been working on a few times recently. This poll is a part of it. I&#8217;d really like to know how many of you folks are using the M2M Production Calendar (CALNDR) to track workdays, weekdays, holidays, etc. </p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/08/whos-using-the-production-calendar/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Realizations From the Wait List</title>
		<link>http://www.made2mentor.com/2010/07/realizations-from-the-wait-list/</link>
		<comments>http://www.made2mentor.com/2010/07/realizations-from-the-wait-list/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 14:00:08 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[SQL Saturday]]></category>
		<category><![CDATA[Thankful]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3567</guid>
		<description><![CDATA[
			
				
			
		
<p>I&#8217;ve been volunteering with my local user group for awhile, and have been preaching community on this blog. One of the best ways to get involved, and learn for that matter, is to participate in SQL Saturdays. </p>
On The Wait List 
<p>Recently we decided to host a second SQL Saturday Event later this year. It [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Frealizations-from-the-wait-list%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Frealizations-from-the-wait-list%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.made2mentor.com/wp-content/uploads/2010/07/wait_list_image.jpg"><img src="http://www.made2mentor.com/wp-content/uploads/2010/07/wait_list_image.jpg" alt="Wait List" title="wait_list_image" width="300" height="209" class="alignleft size-full wp-image-3569" /></a>I&#8217;ve been volunteering with my <a href="http://northtexas.sqlpass.org/">local user group</a> for awhile, and have been preaching community on this blog. One of the best ways to get involved, and learn for that matter, is to participate in SQL Saturdays. </p>
<h3>On The Wait List </h3>
<p>Recently we decided to host a second <a href="http://www.sqlsaturday.com/56/eventhome.aspx">SQL Saturday Event</a> later this year. It will focus on Business Intelligence and will be smaller with about 200 people.</p>
<p>Anyway, even though I&#8217;m a member of the planning comittee, I&#8217;m still supposed to sign up as an attendee. And I tried to&#8230;. but it was completely full in less than 12 hours. I was shocked, it&#8217;s not like Bruce Springsteen is hosting this thing. </p>
<p>I kid you not, I&#8217;m on the wait list for my own SQL Saturday. </p>
<h3>What did I realize?</h3>
<ul>
<li>The SQL Community rocks. Where else can you get free high-quality training? </li>
<li>The quick &#8220;sell-out&#8221; is validation that our first SQL Saturday was awesome. Obviously I am geeked about further opportunites to volunteer. </li>
<li>People around me are growing and striving to become better to compete in the current economy. </li>
<li>I&#8217;m incredibly fortunate to belong to a excellent user group. Join yours today and if it&#8217;s not excellent get involved and help it grow.</li>
</ol>
<p>This whole thing is especially ironic since I was &#8220;the bouncer&#8221; in charge of the front registration for SQL Saturday Dallas. </p>
<p>I guess this time I&#8217;ll have to try the line, &#8220;Excuse me Mr. Bouncer, I&#8217;m with the DJ.&#8221; </p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/nuSiyFq6BjE&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/nuSiyFq6BjE&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/07/realizations-from-the-wait-list/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Updating a SQL Table From Another Table (Fixing Your Salesperson Admin Mistake)</title>
		<link>http://www.made2mentor.com/2010/07/updating-a-sql-table-from-another-table-fixing-your-salesperson-admin-mistake/</link>
		<comments>http://www.made2mentor.com/2010/07/updating-a-sql-table-from-another-table-fixing-your-salesperson-admin-mistake/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 17:40:34 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Data Integrity]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3552</guid>
		<description><![CDATA[
			
				
			
		
The Problem 
<p>Yesterday I demonstrated how to use T-sql to update the Customer Table (SLCDPM) to avoid hours of manual labor. I mentioned that you should always make a backup of the table before running an update statement in case you&#8217;ve made an error. </p>
<p>One of my readers, Kim, astutely asked me how to use [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Fupdating-a-sql-table-from-another-table-fixing-your-salesperson-admin-mistake%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Fupdating-a-sql-table-from-another-table-fixing-your-salesperson-admin-mistake%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<h3>The Problem </h3>
<p>Yesterday I demonstrated how to <a href="http://www.made2mentor.com/2010/07/using-t-sql-to-automatically-update-m2m-tables/">use T-sql to update</a> the Customer Table (SLCDPM) to avoid hours of manual labor. I mentioned that you should always make a backup of the table before running an update statement in case you&#8217;ve made an error. </p>
<p>One of my readers, Kim, astutely asked me how to use the backup table to fix said error. Well, the process is fairly simple. In this example, I&#8217;m working with the M2M Educational Database. </p>
<p>Let&#8217;s say that Luke Skywalker (initials LS) was hired as a new Salesperson at your company so you duitifully add him to the SLPN screen. Luke is replacing Chris Kelso (initials CK), who left to join the Galactic Empire. </p>
<p>Let&#8217;s say that you created the slcdpm_backup table that I suggested earlier but you made a mistake in your update statement. You were high on <a href="http://starwars.wikia.com/wiki/Glitterstim">Glitterstim</a> and day dreaming about a Twi Lek dancing girl and accidentally used Anakin Skywalker&#8217;s initials instead.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">UPDATE</span> slcdpm
<span style="color: #0000FF;">SET</span> FSALESPN <span style="color: #808080;">=</span> <span style="color: #FF0000;">'AS'</span> <span style="color: #008080;">-- NOT LS</span>
<span style="color: #0000FF;">WHERE</span> fsalespn <span style="color: #808080;">=</span> <span style="color: #FF0000;">'CK'</span></pre></div></div>

<p>Let&#8217;s further assume that you didn&#8217;t document the exact update statement used. A week later one of your Salespeople reports errors while trying to save customers and you realize that you&#8217;ve made some kind of mistake with the Customer table. </p>
<p>Ah hah you think, &#8220;I&#8217;ll just restore from the backup table.&#8221; Not so fast nerf herder, we need to investigate the changes so that we don&#8217;t make problems worse. </p>
<h3>The Solution</h3>
<p>The first thing you should do is compare your current customer table to the backup. Remember that in this example we can&#8217;t remember the exact update statement ran a week ago. Otherwise we would just run it with the correct initials. The following script will show you differences in your tables by comparing the current table with the backup via the identity_column.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">SELECT</span> SLC.<span style="color: #202020;">fcompany</span>
      ,SLC.<span style="color: #202020;">fcustno</span>
      ,SLC.<span style="color: #202020;">fsalespn</span> NewSP
      ,BAK.<span style="color: #202020;">fsalespn</span> OldSP
      ,SLC.<span style="color: #202020;">identity_column</span>
      ,BAK.<span style="color: #202020;">identity_column</span>
<span style="color: #0000FF;">FROM</span> slcdpm SLC
<span style="color: #0000FF;">FULL</span> outer join slcdpm_backup BAK <span style="color: #0000FF;">ON</span> BAK.<span style="color: #202020;">identity_column</span> <span style="color: #808080;">=</span> SLC.<span style="color: #202020;">identity_column</span>
<span style="color: #0000FF;">WHERE</span> SLC.<span style="color: #202020;">fsalespn</span> <span style="color: #808080;">&lt;&gt;</span> BAK.<span style="color: #202020;">fsalespn</span> or BAK.<span style="color: #202020;">fsalespn</span> <span style="color: #0000FF;">IS</span> null or SLC.<span style="color: #202020;">fsalespn</span> <span style="color: #0000FF;">IS</span> null</pre></div></div>

<p>You may want to use an inner join and remove the null statements from the where clause if you&#8217;re only interested in columns which have different values. The script above also shows records which exist in one table but not the other in addition to those that have changed. Anyway, the results may look like the grid below. The new records are circled in red while the changed records are in blue.<br />
<a href="http://www.made2mentor.com/wp-content/uploads/2010/07/fixing_salesperson.png"><img src="http://www.made2mentor.com/wp-content/uploads/2010/07/fixing_salesperson.png" alt="fixing salesperson" title="fixing_salesperson" width="466" height="191" class="aligncenter size-full wp-image-3556" /></a><br />
Now you know exactly how many records need to be changed. Update the current table with the following statement.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">UPDATE</span> slcdpm
<span style="color: #0000FF;">SET</span> fsalespn <span style="color: #808080;">=</span> BAK.<span style="color: #202020;">fsalespn</span>
<span style="color: #0000FF;">FROM</span> slcdpm SLC
<span style="color: #0000FF;">INNER</span> join slcdpm_backup BAK <span style="color: #0000FF;">ON</span> BAK.<span style="color: #202020;">identity_column</span> <span style="color: #808080;">=</span> SLC.<span style="color: #202020;">identity_column</span>
<span style="color: #0000FF;">WHERE</span> SLC.<span style="color: #202020;">fsalespn</span> <span style="color: #808080;">&lt;&gt;</span> BAK.<span style="color: #202020;">fsalespn</span>
<span style="color: #008080;">--and SLC.identity_column not in (3,5,7)</span></pre></div></div>

<p>A couple of things to note. First, I&#8217;ve used an inner join in my update statement but that isn&#8217;t actually necessary here. I&#8217;ve compared the tables on their identity_column fields, and in a comparison like this where each table may have values the other lacks, the join will ignore the null values. Also note the commented out portion of the Where clause. If the investigation had shown that in the past week some customer&#8217;s salesperson settings were legitimately changed, then you could use the where clause and specify which records should be skipped. </p>
<p>I mentioned in the last article that I should demonstrate how to do this using TOAD but when I started to write it up I was taking so many screenshots that I&#8217;ve decided to record a video instead. I&#8217;ll have a video up in a few days on how to use TOAD to synchronize tables. </p>
<p>Luckily the manual correction process is fast so Darth Vader won&#8217;t get wind of your failures and be forced to deal with you.</p>
<p>Any questions?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/07/updating-a-sql-table-from-another-table-fixing-your-salesperson-admin-mistake/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using T-SQL to Automatically Update M2M Tables</title>
		<link>http://www.made2mentor.com/2010/07/using-t-sql-to-automatically-update-m2m-tables/</link>
		<comments>http://www.made2mentor.com/2010/07/using-t-sql-to-automatically-update-m2m-tables/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 14:00:01 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Data Integrity]]></category>
		<category><![CDATA[Support]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3543</guid>
		<description><![CDATA[
			
				
			
		
<p>One of the primary values a good DBA brings a company is in automating tedious, time-consuming tasks. In my last article, I discussed the problems when adding a sales person to M2M. M2M&#8217;s standard procedure is to create a new sales person and manually re-assign every customer (over 700 of them) to the new sales [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Fusing-t-sql-to-automatically-update-m2m-tables%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Fusing-t-sql-to-automatically-update-m2m-tables%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>One of the primary values a good DBA brings a company is in automating tedious, time-consuming tasks. In my <a href="http://www.made2mentor.com/2010/07/salesperson-administration-problems/">last article,</a> I discussed the problems when adding a sales person to M2M. M2M&#8217;s standard procedure is to create a new sales person and manually re-assign every customer (over 700 of them) to the new sales person.</p>
<p>In this article I&#8217;ll demonstrate a better way to do so. Before reading on, please read my <a href="http://www.made2mentor.com/2010/03/standard-disclaimer/">standard disclaimer</a>. Also, please note that M2M does not recommend updating the M2M database outside of the M2M program, and will not assist you if you make a mistake, at least not without charging you an hourly rate to do so. </p>
<h3>The Basic Process</h3>
<ol>
<li>Always develop the script on a test server. </li>
<li>Before applying the script to the live server, always make a full backup of the database. </li>
<li> Create a select statement to verify that you are about to update the correct subset of data. </li>
<li>Make a backup copy of the table. Yes, I know you already made a backup of the entire database, but we need to make a separate backup of the table and keep it for reference for a few weeks. </li>
<li>Run any applicable reports which may be effected by the data change. In all of my years in M2M customization, I am still surprised by how quirky the database is and how seemingly insignificant changes can cause big problems. </li>
<li>Craft and run your update statement. In M2M you have to be particularly careful because the entire database lacks referential integrity so you can store nearly anything in most fields. It&#8217;s very easy to make a mistake. Make sure that the number of records updated equals the number in your original select statement.</li>
<li>Set a reminder to delete your backup table after you&#8217;re sure that no problems will arise. </li>
</ol>
<h3>Update the Sales Person Table</h3>
<p>Fire up your query tool of choice. I prefer <a href="http://www.quest.com/toad-for-sql-server/">TOAD for SQL Server</a>.  In this example, we are reassigning someone with the initials ZZZ with AAA. Following the steps above craft the Select statement like so:</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">USE</span> M2MData01
Go
&nbsp;
<span style="color: #0000FF;">SELECT</span> SLC.<span style="color: #202020;">fcompany</span>, SLC.<span style="color: #202020;">fcustno</span>, SLC.<span style="color: #202020;">fstate</span> <span style="color: #0000FF;">FROM</span> slcdpm SLC <span style="color: #0000FF;">WHERE</span> fsalespn <span style="color: #808080;">=</span> <span style="color: #FF0000;">'ZZZ'</span></pre></div></div>

<p>You should be presented with a grid of records which represent customers assigned to sales person ZZZ. Check the grid to make sure that these are the records you wish to change. </p>
<p>Next make a backup of the table with this statement.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">SELECT</span> <span style="color: #808080;">*</span> <span style="color: #0000FF;">INTO</span> slcdpm_Backup
<span style="color: #0000FF;">FROM</span> slcdpm</pre></div></div>

<p>This creates a copy which we will retain for a few weeks. Next run the Sales Commissions Report (RPCMSN) and export it for comparison. </p>
<p>The update statement would look like the following.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">UPDATE</span> slcdpm <span style="color: #0000FF;">SET</span> fsalespn <span style="color: #808080;">=</span> <span style="color: #FF0000;">'AAA'</span>
<span style="color: #0000FF;">WHERE</span> fsalespn <span style="color: #808080;">=</span> <span style="color: #FF0000;">'ZZZ'</span></pre></div></div>

<p>Note the number of rows effected. Be sure that it equals the number of rows returned in step 3. </p>
<p>Re-run the select statement above with the new initials to check your work.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">SELECT</span> SLC.<span style="color: #202020;">fcompany</span>, SLC.<span style="color: #202020;">fcustno</span>, SLC.<span style="color: #202020;">fstate</span> <span style="color: #0000FF;">FROM</span> slcdpm SLC <span style="color: #0000FF;">WHERE</span> fsalespn <span style="color: #808080;">=</span> <span style="color: #FF0000;">'AAA'</span></pre></div></div>

<p>Finally, re-run the Sales Commissions report and export it. You can then compare it to the first export to verify there were no changes. </p>
<p>In fact, if you export it as a Comma Delimited file you can use TOAD to file compare both and save yourself a lot of time. While this was a simple example, nearly all of my automatic updates are done this way. </p>
<p>Any questions? </p>
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/07/using-t-sql-to-automatically-update-m2m-tables/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Salesperson Administration Problems</title>
		<link>http://www.made2mentor.com/2010/07/salesperson-administration-problems/</link>
		<comments>http://www.made2mentor.com/2010/07/salesperson-administration-problems/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 14:00:54 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Administration]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3533</guid>
		<description><![CDATA[
			
				
			
		
<p>Recently we had a salesperson leave our company and they were subequently replaced. I was asked to add the new salesperson and to transfer all of the outgoing person&#8217;s accounts to the new guy.</p>
<p>So, I fired up the Salesperson (SLPN) screen and added the new salesperson. This was an internal promotion so I used the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Fsalesperson-administration-problems%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Fsalesperson-administration-problems%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Recently we had a salesperson leave our company and they were subequently replaced. I was asked to add the new salesperson and to transfer all of the outgoing person&#8217;s accounts to the new guy.</p>
<p>So, I fired up the Salesperson (SLPN) screen and added the new salesperson. This was an internal promotion so I used the initials he already had for his regular M2M login when I added him to SLPN. However, when I looked at the outgoing salesperson I noticed something amiss.</p>
<p>The salesperson&#8217;s initials do not have to match their M2M login initials. I realized this because I was looking in the customer table (SLCDPM) for his initials in the fsalespn field and the query returned no records. </p>
<p>I called M2M Support and they confirmed that the initials do not have to match. I&#8217;m rather anal, so I edited the initials to match in the Salesperson screen, and M2M allowed me to do so. However, <b>you should not do this.</b> If you do, the link between the salesperson table (slspns) and other tables in the system is broken. This effectively orphans those records. </p>
<p>Afterwards, if any customer assigned to that salesperson is edited on the CUST screen, you will receive the following error which will need to be corrected before any changes can be saved. </p>
<p><a href="http://www.made2mentor.com/wp-content/uploads/2010/07/salesperson_initials_error.png"><img src="http://www.made2mentor.com/wp-content/uploads/2010/07/salesperson_initials_error.png" alt="" title="salesperson_initials_error" width="367" height="131" class="aligncenter size-full wp-image-3534" /></a></p>
<p>Further, you cannot delete a salesperson who has records assigned to him. If you attempt to do so, you receive this error. </p>
<p><a href="http://www.made2mentor.com/wp-content/uploads/2010/07/salesperson_delete_error.png"><img src="http://www.made2mentor.com/wp-content/uploads/2010/07/salesperson_delete_error.png" alt="" title="salesperson_delete_error" width="364" height="194" class="aligncenter size-full wp-image-3536" /></a></p>
<p>This means that your list of salespeople will continue to grow forever  because there is no way to delete them. There is a <a href="http://www.m2mexpert.com/m2mexpert/default.aspx?pageid=699&#038;Id=119284">change request</a> for this problem, but it&#8217;s in the <a href="http://www.made2mentor.com/2009/05/reviewed-is-not-a-status/">Reviewed status</a> which suggests that it won&#8217;t be addressed in the near future. </p>
<p>M2M&#8217;s position on this issue is that we need to create the new salesperson, and then manually assign each customer individually to him in the M2M interface. Considering that in my case this is more than 700 accounts, this is not feasible. </p>
<p>In the next article, I will show you the unsupported way to fix this in minutes. </p>
<p>Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/07/salesperson-administration-problems/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What&#8217;s in a Name?</title>
		<link>http://www.made2mentor.com/2010/07/whats-in-a-name/</link>
		<comments>http://www.made2mentor.com/2010/07/whats-in-a-name/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 14:00:26 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>
		<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Visual FoxPro]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3523</guid>
		<description><![CDATA[
			
				
			
		
<p>In the past two weeks, I&#8217;ve had two separate people ask me the same question. They want to know how to decrypt the Utuser.dbf file so they can retrieve their user list from M2M. </p>
<p>While I won&#8217;t show you how to break M2M encryption, I will give you two simple ways to get your user [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Fwhats-in-a-name%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Fwhats-in-a-name%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>In the past two weeks, I&#8217;ve had two separate people ask me the same question. They want to know how to decrypt the Utuser.dbf file so they can retrieve their user list from M2M. </p>
<p>While I won&#8217;t show you how to break M2M encryption, I will give you two simple ways to get your user list. </p>
<p>M2M actually provides the solution in versions 5.52 and above. Go to your User Management Screen (USER) and click the browse button. You&#8217;ll be presented with something resembling the following.<br />
<a href="http://www.made2mentor.com/wp-content/uploads/2010/07/UserList.png"><img src="http://www.made2mentor.com/wp-content/uploads/2010/07/UserList.png" alt="" title="UserList" width="507" height="440" class="aligncenter size-full wp-image-3524" /></a></p>
<p>Many browse windows in the later versions offer the ability to export the contents to Excel, a very handy feature. So, export the grid to Excel and you have your user list. However, what can you do if you&#8217;re on a previous version? </p>
<p>As much as it pains me to say it, the answer is to use Visual FoxPro. However, in this case it&#8217;s very simple.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">SET</span> excl <span style="color: #0000FF;">OFF</span>
<span style="color: #0000FF;">OPEN</span> <span style="color: #0000FF;">DATA</span> X:\m2mdata\util\util.<span style="color: #202020;">dbc</span>
<span style="color: #0000FF;">SELECT</span> <span style="color: #0000FF;">DISTINCT</span> fcuname <span style="color: #0000FF;">FROM</span> utacc
copy <span style="color: #0000FF;">TO</span> c:\users.<span style="color: #202020;">xls</span> type xls</pre></div></div>

<p>This will achieve the same thing. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/07/whats-in-a-name/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Always Make a Backup When Performing FastForms Customizations</title>
		<link>http://www.made2mentor.com/2010/07/always-make-a-backup-when-performing-fastforms-customizations/</link>
		<comments>http://www.made2mentor.com/2010/07/always-make-a-backup-when-performing-fastforms-customizations/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 18:59:04 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Made2Manage]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[FastForms]]></category>

		<guid isPermaLink="false">http://www.made2mentor.com/?p=3505</guid>
		<description><![CDATA[
			
				
			
		
<p>As I&#8217;ve mentioned previously, I&#8217;ve been using FastForms for years and I have one basic rule that I never, ever break. I never make changes in FastForms with users in the system. M2M says you are safe to do so, but painful experience has shown me that this is unwise. </p>
<p>The problem is that the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Falways-make-a-backup-when-performing-fastforms-customizations%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.made2mentor.com%2F2010%2F07%2Falways-make-a-backup-when-performing-fastforms-customizations%2F&amp;source=Made2Mentor&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>As I&#8217;ve <a href="http://www.made2mentor.com/2009/02/the-fast-and-the-furious-fastforms-issues/">mentioned previously</a>, I&#8217;ve been using FastForms for years and I have one basic rule that I never, ever break. I never make changes in FastForms with users in the system. M2M says you are safe to do so, but painful experience has shown me that this is unwise. </p>
<p>The problem is that the program, and it&#8217;s underlying database system (Visual FoxPro), are simply too unstable. Once you have a problem with it, you&#8217;re forced to take drastic measures to fix it. I&#8217;ll explain in a future article how to completely remove a botched FastForms customization. </p>
<p>Well, I also have an unwritten rule that I&#8217;ve always followed when performing FastForms customizations, and that is to make a backup of the entire Util Folder when I do so. Now, I know that technically I only need to make a backup of FormXMaster and FormXItems, but it is simply easier to make a copy of the entire folder. In most installations the Util folder shouldn&#8217;t be 100MB anyway.</p>
<p>Why dedicate an entire post on this topic? Well, it&#8217;s simple. FastForms&#8217; bugginess burned me earlier this week, and I had not followed my unwritten rule. Further, because a problem occured with my backup server, I had to get the Util directory directly from tape. This takes a considerable amount of time, and I could have avoided that by taking 5 seconds to copy the Util directory. Luckily however, I had followed rule number one and performed this customization after hours. Otherwise, my M2M would have been down for nearly an hour while I scrambled to fix the problem. </p>
<p>So, learn from my mistakes. Whenever you are customizing FastForms, VBA, VFP Reports, etc make a copy of them before editing. It&#8217;ll save you time and headaches in the process. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.made2mentor.com/2010/07/always-make-a-backup-when-performing-fastforms-customizations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
