Wednesday, March 4, 2009

Hyper-V networking reset when copying VHD or creating ‘differencing VM’

Whenever you create a new Virtual Machine for an existing (previously configured) VHD (either by copying the VHD or using differencing disks), the networking configuration of the VM is reset.

This is because when creating a new VM, the Network Adapter(s) you assign receive a new Guid and are treated by the OS as new hardware.

The following post explains this behavior in detail:

http://blogs.technet.com/jhoward/archive/2008/07/22/hyper-v-why-is-networking-reset-in-my-vm-when-i-copy-a-vhd.aspx

Tuesday, March 3, 2009

MakeCab file length limitation

Apparently, there is a limitation to the maximum length of the source file in a DDF file that MakeCab can handle. When the file name exeeds 100 characters, you will receive a File not found error when running makecab.exe

See Michael Blumenthal's post at http://blumenthalit.net/blog/Lists/Posts/Post.aspx?ID=75 for full details.

Tuesday, February 17, 2009

SharePoint log files grow extremely large

Today I ran into a strange issue where the SharePoint log files (located in c:\program files\common files\microsoft shared\web server extensions\12\logs) on one of my development VPC’s would rapidly grow in size (5GB+) until I ran out of disk space.

The log file would fill up with the following message (up to 800 occurrences in just 3 thousands of a second!):

02/17/2009 10:57:14.96     OWSTIMER.EXE (0x0DF4)                       0x0E08    Windows SharePoint Services       Timer                             5uuf    Monitorable    The previous instance of the timer job 'Config Refresh', id '{1520A0E0-E8C6-47F8-BA89-5BEBE5774DFD}' for service '{25FB833C-D7DD-4776-AD50-58105B3A46F0}' is still running, so the current instance will be skipped.  Consider increasing the interval between jobs.

After searching the web for a little while, I found the solution was to clear the SharePoint Configuration Cache as described in this post by Joe Rodgers.

  1. Stop the OWSTIMER service on ALL of the MOSS servers in the farm.
  2. On the Index server, navigate to %ALLUSERSPROFILE% \Application Data\Microsoft\SharePoint\Config\<GUID> and delete all the XML files from the directory.
  3. Edit cache.ini and reset the number in the file to 1.
  4. Start the OWSTIMER service on the Index server and wait for XML files to begin to reappear in the directory.
  5. After you see XML files appearing on the Index server, repeat steps 2, 3 & 4 on the query server(s), waiting for XML files to appear before moving to subsequent servers.
  6. After the query servers have all been cleared, proceed to the WFE and Application servers in the farm, following steps 2, 3 & 4. for each server.

Wednesday, January 14, 2009

Poor network performance on Microsoft Hyper-V

I recently installed a Windows Server 2008 with Hyper-V to host my Virtual Machines. As overall performance seemed to be better than on Virtual Server 2005, I ran into very poor performance when copying files between the Guest and Host using a file share.

I tried several solutions I’ve found on the net, but in the end, I found that one should NOT use the ‘Legacy Network Adapter’ in Hyper-V but use the ‘Network Adapter’ when adding a network card to the VM.

When copying a 4GB (iso) from the VM to a (shared) USB drive attached to the Server, the speed went from barely 2MB/s to a reasonable 17MB/s.

Friday, December 19, 2008

“Value cannot be null” error on postback when using Grouping in SPGridView

When you use an SPGridview with grouping enabled, you will receive an exception whenever you perform a postback: Value cannot be null. Parameter name: container.

Patrick Rodgers came up with a solution which you can read here: http://www.thesug.org/blogs/patrickr/Lists/Posts/Post.aspx?ID=2

The solution is to create your own GridView that inherits from SPGridView and override LoadControlState to raise an event whenever the DataSource is null. The page or control that implement the GridView will need to implement an eventhandler and make sure the Grid is bound to it’s datasource.