<?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"
	>

<channel>
	<title>Make IT Complete</title>
	<atom:link href="http://blog.makeitcomplete.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.makeitcomplete.com</link>
	<description>Technical Ramblings From an IT Professional</description>
	<pubDate>Wed, 06 Jan 2010 16:20:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>Rename SQL Server</title>
		<link>http://blog.makeitcomplete.com/2010/01/rename-sql-server/</link>
		<comments>http://blog.makeitcomplete.com/2010/01/rename-sql-server/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 16:20:29 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[Microsoft Technologies]]></category>

		<category><![CDATA[SQL Server]]></category>

		<category><![CDATA[SQL Server Rename]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=282</guid>
		<description><![CDATA[During the migration of SQL databases to a new SQL Server we find that we must rename the SQL Server to the original server name.  Renaming a machine on the network is easy eough but we must also run a T-SQL script to rename the server in MS-SQL
To correct @@SERVERNAME for a default instance use [...]]]></description>
			<content:encoded><![CDATA[<p>During the migration of SQL databases to a new SQL Server we find that we must rename the SQL Server to the original server name.  Renaming a machine on the network is easy eough but we must also run a T-SQL script to rename the server in MS-SQL</p>
<p>To correct @@SERVERNAME for a default instance use the following commands:</p>
<div class="code">exec sp_dropserver <em><strong>old_name</strong></em><br />
GO<br />
exec sp_addserver <em><strong>new_name</strong></em>, &#8216;local&#8217;<br />
GO</div>
<p>To correct @@SERVERNAME for a named instance:</p>
<div class="code">exec sp_dropserver <em><strong>old_nameinstancename</strong></em><br />
GO<br />
exec sp_addserver <em><strong>new_nameinstancename</strong></em>, &#8216;local&#8217;<br />
GO</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2010/01/rename-sql-server/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Makeitcomplete.com has completed the development on misscyfairhouston.com</title>
		<link>http://blog.makeitcomplete.com/2009/12/makeitcompletecom-has-completed-the-development-on-misscyfairhoustoncom/</link>
		<comments>http://blog.makeitcomplete.com/2009/12/makeitcompletecom-has-completed-the-development-on-misscyfairhoustoncom/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 22:19:23 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Web Hosting]]></category>

		<category><![CDATA[Hosting]]></category>

		<category><![CDATA[Miss Cy-Fair Houston]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=275</guid>
		<description><![CDATA[In a little more than a couple days we have helped the Cy-Fair Chamber of Commerce launch a web site for the Miss Cy-Fair Houston Pageant.  We developed this site using Drupal.  With some graphics work form Logo Origins to help match the printed materials and ads already submitted to press we teamed for excellent [...]]]></description>
			<content:encoded><![CDATA[<p>In a little more than a couple days we have helped the Cy-Fair Chamber of Commerce launch a web site for the Miss Cy-Fair Houston Pageant.  We developed this site using Drupal.  With some graphics work form Logo Origins to help match the printed materials and ads already submitted to press we teamed for excellent results.</p>
<p>Visit the site: <a href="http://www.misscyfairhouston.com">www.misscyfairhouston.com</a></p>
<p>Check out Logo Origins at <a href="http://www.logoorigins.com">Logo Origins</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2009/12/makeitcompletecom-has-completed-the-development-on-misscyfairhoustoncom/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Windows Uptime</title>
		<link>http://blog.makeitcomplete.com/2009/12/windows-uptime/</link>
		<comments>http://blog.makeitcomplete.com/2009/12/windows-uptime/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 16:36:19 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[Hosting Support]]></category>

		<category><![CDATA[Microsoft Technologies]]></category>

		<category><![CDATA[Windows OS]]></category>

		<category><![CDATA[Windows Up Time]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=272</guid>
		<description><![CDATA[Ever wonder how long your windows system has been online?  Found that in Windows you can get to this information by running
net stats srv
]]></description>
			<content:encoded><![CDATA[<p>Ever wonder how long your windows system has been online?  Found that in Windows you can get to this information by running</p>
<blockquote><p>net stats srv</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2009/12/windows-uptime/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Applied and update tonight for mod_security</title>
		<link>http://blog.makeitcomplete.com/2009/12/applied-and-update-tonight-for-mod_security/</link>
		<comments>http://blog.makeitcomplete.com/2009/12/applied-and-update-tonight-for-mod_security/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 05:29:38 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=270</guid>
		<description><![CDATA[We have updated the mod_security on our site this weekend.  Please let us know if you experience any difficulties with your sites.
]]></description>
			<content:encoded><![CDATA[<p>We have updated the mod_security on our site this weekend.  Please let us know if you experience any difficulties with your sites.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2009/12/applied-and-update-tonight-for-mod_security/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Small Office Virtualization</title>
		<link>http://blog.makeitcomplete.com/2009/12/small-office-virtualization/</link>
		<comments>http://blog.makeitcomplete.com/2009/12/small-office-virtualization/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 15:56:36 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=262</guid>
		<description><![CDATA[This blog entry is starting the journey of converting a small business office in to a virtualized office that will provide the same functionality virtaully as the office has today in the brick and mortar.
Background
A client with a small office has decided to move from their current office that is much too large and with [...]]]></description>
			<content:encoded><![CDATA[<p>This blog entry is starting the journey of converting a small business office in to a virtualized office that will provide the same functionality virtaully as the office has today in the brick and mortar.</p>
<h2>Background</h2>
<p>A client with a small office has decided to move from their current office that is much too large and with an adversarial land lord.  They have 4 employees and the owner is remote and located in God&#8217;s Country without high speed Internet.</p>
<p>The office generates a huge amound of paper but most of the work is completed on computers and they leverage 3rd party databases over the internet.</p>
<p>They have an Windows Domain running active directory on a single (very old) server.  All of their databases are in Access.  They do own a copy of SQL server but it has never been installed.</p>
<p>They currently get access to the Internet and dialtone from CBEYOND.  CBEYOND has been a very good provider for all of these services.</p>
<p>The office will physically no longer exist.</p>
<h2>The Plan</h2>
<p>We will remotely locate all of the users to their own home offices.  We will use a VoIP phone service from a company called Ring Central.  When we get into to the detail on this there will be another blog post.  Ring Central will provide phone service to the homes and their virtual PBX will have autoattendant, call routing, voice mail and the like.</p>
<p>We will move the server to a small data center that is willing to take the server in and provide some bandwidth.</p>
<h2><strong>Problems</strong></h2>
<p>We are planning on connecting the remote PCs to the server using a VPN connection.  During initial testing the VPN connection provided suitable access to the file system and to other network services but when the application are access the performance is unaccepatable.  This is due to the nature of the application of couse.  Remote access to M$ Access over a VPN is never going to be a good thing.</p>
<p>During the first test I was able to connect to the VPN server with no problem.  When I started the application it took over a minute for the first window of the applciation to open.  This is clearly because of the database access that was happening.  When the app was then available it could take as long as a minute to move from record to record.</p>
<p>Clearly this is not going to work.  There is not enough time in the project to attempt to rewrite the software or to even dive into how much data is actually being moved.</p>
<p><span id="more-262"></span><strong></strong></p>
<p><strong></strong></p>
<p><strong></p>
<h2>Possible Solutions</h2>
<p></strong></p>
<p>We are going create a virtual server in the data center that will have 4 Windows XP instances running on it.  I have lots of experience using ESX from VMWare but a cluster with new servers and shared storage is not in the cards for this project.  This is more like find the fastest desktop we have, pray that it has some memory and CPU and figure out how to use it.</p>
<p>There are many virtualization softwares out there.  There are some that have been very well baked and others that are still raw.  I have found a product from Sun that looks like it will fit the bill.  It is Sun&#8217;s VirtualBox.  I found it to be simple to install and use.  I also found that it has the ability to use a remote desktop client to connect, not to the virtual, but rather to the physical host providing a port number and remote control the environment.  This is important because it will let you access the virtual machine while booting if need be.</p>
<p>Next test will be deploying a copy of XP on a virtual and preparing it for use.  I will then sysprep the installation to make it ready for cloning.</p>
<p>We are going to install 4 copies of licenses Windows XP that will be configured to only run the database applications.  The other office apps will run from the users PCs at their homes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2009/12/small-office-virtualization/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Slow Large File Copy Issues</title>
		<link>http://blog.makeitcomplete.com/2009/12/slow-large-file-copy-issues/</link>
		<comments>http://blog.makeitcomplete.com/2009/12/slow-large-file-copy-issues/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 16:55:59 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[Microsoft Technologies]]></category>

		<category><![CDATA[Windows OS]]></category>

		<category><![CDATA[large file copy]]></category>

		<category><![CDATA[out of resources]]></category>

		<category><![CDATA[slow copy]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=260</guid>
		<description><![CDATA[From time to time, customers will call in to report &#8220;performance problems&#8221; that  they are having when copying large files from one location to another.  By  &#8220;performance problems&#8221;, they mean that the file isn&#8217;t copying as fast as they  expect.  The most common scenario is copying large SQL databases from server to  [...]]]></description>
			<content:encoded><![CDATA[<p>From time to time, customers will call in to report &#8220;performance problems&#8221; that  they are having when copying large files from one location to another.  By  &#8220;performance problems&#8221;, they mean that the file isn&#8217;t copying as fast as they  expect.  The most common scenario is copying large SQL databases from server to  server, but this could just as easily occur with other file types.  More often  than not, the customer has tried different methods of copying the file including  Windows Explorer, Copy, XCopy &amp; Robocopy - with the same results.  So &#8230;  what&#8217;s going on here?</p>
<p>Assuming that you aren&#8217;t experiencing network issues (and for the purposes of  this article, we&#8217;ll assume a healthy network), the problem lies in the way in  which the copy is performed - specifically Buffered v Unbuffered Input/Output  (I/O).  So let&#8217;s quickly define these terms.  Buffered I/O describes the process  by which the file system will buffer reads and writes to and from the disk in  the file system cache.  Buffered I/O is intended to speed up future reads and  writes to the same file but it has an associated overhead cost.  It is effective  for speeding up access to files that may change periodically or get accessed  frequently.  There are two buffered I/O functions commonly used in Windows  Applications such as Explorer, Copy, Robocopy or XCopy:</p>
<ul>
<li><a href="http://msdn2.microsoft.com/en-gb/library/aa363851.aspx" target="_blank">CopyFile()</a> - Copies an existing file to a new file</li>
<li><a href="http://msdn2.microsoft.com/en-gb/library/aa363852.aspx" target="_blank">CopyFileEx()</a> - This also copies an existing file to a new  file, but it can also call a specified callback function each time a portion of  the copy operation is completed, thus notifying the application of its progress  via the callback function.  Additionally, CopyFileEx can be canceled during the  copy operation.</li>
</ul>
<p>So looking at the definition of buffered I/O above, we can see where the  perceived performance problems lie - in the file system cache overhead.   Unbuffered I/O (or a raw file copy) is preferred when attempting to copy a large  file from one location to another when we do not intend to access the source  file after the copy is complete.  This will avoid the file system cache overhead  and prevent the file system cache from being effectively flushed by the large  file data.  Many applications accomplish this by calling CreateFile() to create  an empty destination file, then using the ReadFile() and WriteFile() functions  to transfer the data.</p>
<ul>
<li><a href="http://msdn2.microsoft.com/en-us/library/aa363858.aspx" target="_blank">CreateFile()</a> - The CreateFile function creates or opens a  file, file stream, directory, physical disk, volume, console buffer, tape drive,  communications resource, mailslot, or named pipe. The function returns a handle  that can be used to access an object.</li>
<li><a href="http://msdn2.microsoft.com/en-us/library/aa365467.aspx" target="_blank">ReadFile()</a> - The ReadFile function reads data from a file, and  starts at the position that the file pointer indicates. You can use this  function for both synchronous and asynchronous operations.</li>
<li><a href="http://msdn2.microsoft.com/en-us/library/aa365747.aspx" target="_blank">WriteFile()</a> - The WriteFile function writes data to a file at  the position specified by the file pointer. This function is designed for both  synchronous and asynchronous operation.</li>
</ul>
<p>For copying files around the network that are very large, my copy utility of  choice is ESEUTIL which is one of the database utilities provided with  Exchange.  To get ESEUTIL working on a non-Exchange server, you just need to  copy the ESEUTIL.EXE and ESE.DLL from your Exchange server to a folder on your  client machine.  It&#8217;s that easy.  There are x86 &amp; x64 versions of ESEUTIL,  so make sure you use the right version for your operating system.  The syntax  for ESEUTIL is very simple: <span style="color: #ff0000;"><em>eseutil /y &lt;srcfile&gt;  /d &lt;destfile&gt;</em></span><span style="color: #000000;">.  Of course, since we&#8217;re  using command line syntax - we can use ESEUTIL in batch files or scripts.   ESEUTIL is dependent on the Visual C++ Runtime Library which is available as a  <a href="http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&amp;displaylang=en" target="_blank">redistributable package</a>.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2009/12/slow-large-file-copy-issues/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Advanced User</title>
		<link>http://blog.makeitcomplete.com/2009/11/advanced-user/</link>
		<comments>http://blog.makeitcomplete.com/2009/11/advanced-user/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 00:07:52 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Advanced User]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=258</guid>
		<description><![CDATA[The advanced user module allows the filtering of users based on the user.module fields and optionally the profile.module fields. The fields available for filtering can be configured using the module settings. Eg. Site admin may search through 1000s of users to display all users who have not accessed their account.
Once the group of users with [...]]]></description>
			<content:encoded><![CDATA[<p>The advanced user module allows the filtering of users based on the user.module fields and optionally the profile.module fields. The fields available for filtering can be configured using the module settings. Eg. Site admin may search through 1000s of users to display all users who have not accessed their account.</p>
<p>Once the group of users with selected common denominators are filtered, the module can be used to perform functions that email, block, unblock, add or remove roles, or delete. Another nice feature is the ability to notify administrators or other roles, by email, of user account creation or profile changes.</p>
<p><a href="http://drupal.org/project/advuser">http://drupal.org/project/advuser</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2009/11/advanced-user/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Backing up Plesk Servers</title>
		<link>http://blog.makeitcomplete.com/2009/11/backing-up-plesk-servers/</link>
		<comments>http://blog.makeitcomplete.com/2009/11/backing-up-plesk-servers/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 05:54:11 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[Plesk]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=256</guid>
		<description><![CDATA[I found this article to be helpful.
http://kau-boys.ramarka.de/blog/webserver/plesk-backup-manager-auf-1und1-linux-root-server-einrichten?lang=en
]]></description>
			<content:encoded><![CDATA[<p>I found this article to be helpful.</p>
<p>http://kau-boys.ramarka.de/blog/webserver/plesk-backup-manager-auf-1und1-linux-root-server-einrichten?lang=en</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2009/11/backing-up-plesk-servers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Really Helpful Post about Connection Strings</title>
		<link>http://blog.makeitcomplete.com/2009/11/really-helpful-post-about-connection-strings/</link>
		<comments>http://blog.makeitcomplete.com/2009/11/really-helpful-post-about-connection-strings/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 18:42:52 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[SQL Server]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[Web Hosting]]></category>

		<category><![CDATA[Connection Strings]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=254</guid>
		<description><![CDATA[http://www.connectionstrings.com/sql-server-2005
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.connectionstrings.com/sql-server-2005">http://www.connectionstrings.com/sql-server-2005</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2009/11/really-helpful-post-about-connection-strings/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Auto Delete Content In Drupal</title>
		<link>http://blog.makeitcomplete.com/2009/05/auto-delete-content-in-drupal/</link>
		<comments>http://blog.makeitcomplete.com/2009/05/auto-delete-content-in-drupal/#comments</comments>
		<pubDate>Sun, 24 May 2009 05:03:11 +0000</pubDate>
		<dc:creator>jjackson</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Auto Delete Content]]></category>

		<guid isPermaLink="false">http://blog.makeitcomplete.com/?p=236</guid>
		<description><![CDATA[I have a client that wants to have content posted on his site automatically deleted when it reaches 30 days.  His site is built using Drupal and using the hook_cron() will let the scheduled cron job process the node deletions.
I created a Drupal module and in the .module file added function profeng_cron() as the hook [...]]]></description>
			<content:encoded><![CDATA[<p>I have a client that wants to have content posted on his site automatically deleted when it reaches 30 days.  His site is built using Drupal and using the hook_cron() will let the scheduled cron job process the node deletions.</p>
<p>I created a Drupal module and in the .module file added function profeng_cron() as the hook and it calls deleteagednodes with the type of content to be removed.  The function deleteagednodes does all of the work.  I created a query to return all of the nodes that have the desired content types and then using a where clause to filter on the created date.  In this example I am setting $expired_time to be now minus 30 days and in the query I am getting records that were created before the $expired_time.</p>
<p>I then take the results from the query and loop through all results.  Because the cron job runs as the anonymous user I select the user that owns the node and set the current user to the owner of the node.  I then call the Drupal node_delete.  When calling node_delete all of the heavy lifting of the delete like writing to the logs and sending notifications are executed.</p>
<blockquote><p>//cron hook</p>
<p>function profeng_cron()</p>
<p>{</p>
<p><span> </span>deleteagednodes(&#8217;inspectionreport&#8217;);</p>
<p>}</p>
<p>//function to delete content by tyoe that is over 30 days old</p>
<p>function deleteagednodes($contenttype)</p>
<p>{</p>
<p><span> </span></p>
<p><span> </span>$expired_time = strtotime(&#8217;-30 days&#8217;);</p>
<p><span> </span></p>
<p><span> </span>$query = db_query(&#8221;SELECT nid, uid FROM {node} AS n WHERE type = &#8216;%s&#8217; and created &lt;= &#8216;%s&#8217;&#8221;, $contenttype, $expired_time);</p>
<p><span> </span></p>
<p><span> </span>while($del = db_fetch_object($query))</p>
<p><span> </span>{</p>
<p><span> </span>global $user;</p>
<p><span> </span>$owner_account = user_load(array(&#8217;uid&#8217; =&gt; $del-&gt;uid));</p>
<p><span> </span>$temp_user = $user;</p>
<p><span> </span>$user = $owner_account;</p>
<p><span> </span>$this_edit['nid'] = $del-&gt;nid;</p>
<p><span> </span>node_delete($this_edit);</p>
<p><span> </span>$user = $temp_user;</p>
<p><span> </span></p>
<p><span> </span>}</p>
<p>}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.makeitcomplete.com/2009/05/auto-delete-content-in-drupal/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
