Posts

Windows 8 Hyper-V Support

I installed Windows 8 shortly it was released and I’ve been running it for almost two months now. I’m still in a learning mode to teach old dog new tricks. I have a few gripes here and there, such as the need for two screens (start screen and desktop), the absence of the start button and its search, the quest for dumbing down the OS, and the fact that my Quickbooks PDF converter doesn’t work anymore.

However, I do like the performance boost (Windows 8 really flies on a solid state disk). I also discover gems here and there and one of them is the Hyper-V support. For those of you who need to run virtual machines, such as to test prerelease bits or run other guest operating systems, you know that in the pre-Windows 8 era you had to rely on either VirtualBox or VMWare because Virtual PC wasn’t capable of running 64-bit guest Windows (required for SharePoint for example). Now, Hyper-V is built in Windows 8 and installing it is a snap. Steven Sinofsky wrote a nice coverage of Windows 8 Hyper-V in his blog “Bringing Hyper-V to Windows 8” which includes also a short video of how to install it. Trust me, you’ll really appreciate how simple the install process is.

Anticipating the forthcoming release of SharePoint 2013, today I stood up a Windows Server 2012 VM using Hyper-V on a Windows 8 host and I loved the experience. There is no need to install extensions to enable keyboard and mouse integration, or to go through bizarre steps to resize the virtual disk in order to free up more space. For example, expanding the disk to free up more space is a simple two-step procedure:

  1. Use the Hyper-V manager to edit and expand the virtual disk.
  2. Start the VM. Assuming a Windows guest OS, use the Disk Manager to extend the volume to include the newly allocated space.

Tip If you plan to stood up a VM for BI testing, plan for at least 40 GB virtual disk to install Windows Server 2012, SQL Server 2012, and SharePoint. This is where a second disk (I highly recommend a solid state disk) comes handy.

Kerberos Woes

[Wikipedia] Cerberus, (pronounced /ˈsɜrb(ə)rəs/);[1] Greek form: Κέρβερος, /ˈkerberos/[2] in Greek and Roman mythology, is a multi-headed hound (usually three-headed) which guards the gates of Hades, to prevent those who have crossed the river Styx from ever escaping.

I think Microsoft got the name right although the Windows version of Kerberos has more than three heads for sure. Yet another weekend spent in troubleshooting Kerberos. This one has an interesting setup.

  1. SharePoint Server 2010 on a Web Front End (WFE) box.
  2. SharePoint Server 2010 (core install) + SQL Server and Reporting Services 2008 integrated with SharePoint on a second box.
  3. Analysis Services 2008 R2 on a third box.

The customer wanted this setup to minimize the SQL Server licenses. Microsoft recommends installing Reporting Services on the WFE servers but this requires as many SQL Server licenses as the number of the WFE servers, plus probably two more (for SQL Server to host the SharePoint configuration databases and Analysis Services (if it is on a separate box). By contrast, the above setup requires two SQL Server licenses irrespective of the number of the WFE servers.

We hit issue #1 when we tried to deploy from BIDS and we got a login prompt that just won’t go away. This was related to the fact that the SQL Server setup configures Reporting Services for NTLM authentication. Since this scenario required Kerberos delegation, we have to change the following setting in the rsreportserver.config file:

<Authentication>

<AuthenticationTypes>

    <RSWindowsNegotiate/>

    <!–RSWindowsNTLM/–>

</AuthenticationTypes>

<EnableAuthPersistence>true</EnableAuthPersistence>

</Authentication>

As you can see, we had to disable NTLM and add Negotiate. This helped us to a point where BIDS can deploy reports to the SharePoint site and we can manage data sources and report properties. However, for some reason, after a few minutes the data source and report definitions somehow would get invalidated and trying to access their properties result in HTTP 401 User unauthorized error. Re-deploying the reports and definitions “fix” the definitions for a few minutes and then 401 error again.

More troubleshooting…and we figured out the issue was related to a misconfigured SPN entry for the SSRS service account on the ServicePoint core (database) server by executing setspn -l <SSRS service account>. The results didn’t include http/<the account used for SQL Server>. Once we got the Active Directory administrator fix this, the issue went away.

We found the Configuring Kerberos Authentication for SSRS 2008 R2 with SharePoint 2010 whitepaper very useful. It’s a must read before venturing into the Kerberos candy land

Good luck!

Virtual Adventures

Scenario: Mount base and differencing VHD disks using Windows Virtual PC on Windows 7 x64.

Dude, did you run out of BI stuff to talk about? I didn’t but I think other folks may benefit from my experience especially MCTs who have discovered that Windows 7 hasn’t happened yet to the Microsoft Official Curriculum and resorted to all sorts of hacks to get Virtual Server 2005 or Lab Launcher working with Windows 7. In the process, I’ve learned a lot about the virtualization technology that goes beyond just mounting disks. OK, I have a hidden agenda to write this blog as well – I want to document these steps.

So, I am preparing to teach 6326A – Implementing and Maintaining Microsoft SQL Server 2008 Reporting Services in an instructor-led environment where I have to install the required software on the student’s machine. After downloading the trainer resources, I have discovered that Microsoft provides 6236A-NY-SQL-01.vhd disk which requires a base disk Base08A.vhd. Reading the setup guide included in the course revealed that Microsoft wants me to install Virtual Server 2005 on both the instructor and students machines.

Gotcha 1: Virtual Server 2005 doesn’t run on Windows 7. Browsing the MCT private groups I came across posts discussing a hack around this limitation but I didn’t want go that way. Not to mention that Microsoft Lab Launcher, which apparently is intended to simplify the VHD deployment to student machines, doesn’t run on Win 7 as well. A double-gotcha which picked up my interest and stirred my hacking instincts to get the whole thing working with Virtual PC. After all, I can’t control what OS the students run or the training center has installed.

OK, but this is just VHD disk, isn’t it? So, it should run on Windows Virtual PC, right? So, I created a new virtual machine and attempted to mount 6236A-NY-SQL-01.vhd but I was greeted with the following informative error:

Cannot attach the virtual hard disk to the virtual machine. Check the values provided and try again.

Then I mounted Base08A.vhd and I was able to boot the VM only to find out that it includes the Windows Server 2008 OS only. Where is the cool SQL Server BI stuff? This is the part where I realized that my virtual knowledge needs brushing up. Enter differencing disks. This of course is not explained in the setup document, so don’t try to find it there. I figured that Base08A.vhd is the base disk that has the OS only while the 6236A-NY-SQL-01.vhd is the differencing disk that has the rest (SQL Server 2008 + Reporting Services samples and Adventure Works database) installed. To prove my hypothesis, I used the Sun’s VirtualBox. I use VirtualBox for my personal VM work because it supports x64 guess OS, which Virtual PC doesn’t support (shame). I used the Disk Manager to add both the base and difference images and … lo and behold, the VM booted up and I was able to verify that SQL Server 2008 and rest of the goodies are installed.

But I didn’t want to force the students to install VirtualBox so I continued hacking my way to Windows Virtual PC. In a Eureka moment, I examined the Windows Event log and saw the following message:

The parent virtual hard disk ‘C:\Program Files\Microsoft Learning\Base\Base08A.vhd’ for the differencing virtual hard disk ‘C:\VPC\3263\6236A-NY-SQL-01.vhd’ does not exist. Please reconnect the differencing virtual hard disk to the correct parent virtual hard disk.

So, the base disk path is hardcoded in the differencing image. The following commands confirmed this.

  1. Went to command prompt and entered (the actual commands are in bold):

    C:\>Diskpart

    DISKPART> select vdisk file=”c:\vpc\6236\6236A-NY-SQL-01.vhd”

    DiskPart successfully selected the virtual disk file.

    DISKPART> detail vdisk

    Device type ID: 2 (VHD)

    Vendor ID: {EC984AEC-A0F9-47E9-901F-71415A66345B} (Microsoft Corporation)

    State: Added

    Virtual size: 64 GB

    Physical size: 9 GB

    Filename: c:\vpc\6236\6236A-NY-SQL-01.vhd

    Is Child: Yes

    Parent Filename: C:\Program Files\Microsoft Learning\Base\Base08A.vhd

    Associated disk#: Not found.

  2. I moved the based image (Base08A.vhd) to C:\Program Files\Microsoft Learning\Base. With a baited breath, I repeated the process of creating a new virtual machine in Windows Virtual PC pointing to the existing 6236A-NY-SQL-01.vhd but I got the first error:

    Cannot attach the virtual hard disk to the virtual machine. Check the values provided and try again.

    No more details in the Windows event log. At this point, I posted a question to the Windows 7 Virtualization discussion forum and I was clued in the disk virtual size (not physical size) could be the issue since Virtual PC doesn’t support disks larger than 127 GB. Although after attaching the 6236A-NY-SQL-01.vhd using the Windows 7 Disk Manager I could see that the virtual size is 64 GB, I compacted the base disk using these steps. That didn’t help and the hour was getting late. So I threw the white towel on the differencing disk approach (for now) and decided to merge the differencing disk into the base disk.

    Assuming the commands in step 1), I executed the following commands:

    DISKPART>detach vdisk

    DiskPart successfully detached the virtual disk file.

    DISKPART>merge vdisk depth=1

    100 percent complete

    (after a long wait …)

    DiskPart successfully merged the differencing chain.

    Now that I had the disks merged I was able to create a new virtual machine successfully using the base disk image (Base08A.vhd) which combined both the original and differencing disks. Since the differencing disk was merged, I could delete 6236A-NY-SQL-01.vhd.

Gotcha 2: After booting the virtual machine, I was able to log in using the pre-defined Student account. However, attempting to run the SQL Server Management Studio, I got an error that the SQL Server 2008 evaluation period has expired. I attempted to reset the Windows Server 2008 (guest OS) system date, but after a few seconds the date would revert to the present date. More binging the Internet solved the issue.

  1. Shut down the VM.
  2. Open the vmc file in Notepad.
  3. Chang the last six digits to a year ago (070109)
    <time_bytes type=”bytes”>57002400060004070109</time_bytes>
  4. Further down the file, disable guest-to-host OS time synchronization:
    <host_time_sync>

    <enabled type=”boolean”>false</enabled>

    <frequency type=”integer”>15</frequency>

    <threshold type=”integer”>10</threshold>

    </host_time_sync>

  5. Boot VM. Now change the system date to 07-01-09.

    Success!