Thursday, December 6, 2007

Add windows components on Virtuozzo for Windows fix

I ran into this issue while using Virtuozzo 3.5.1 SP1 on Windows Server 2003 SP1 Datacenter Edition x64.
When creating new virtual private servers most default components are already installed, but when you want to add extra windows components (add/remove software -> windows components), you bump into this error:

Setup library wssoc.dll could not be loaded, or function StorageServerSetupProc could not be found.
The specific error code is 0x7e.

There is currently no fix available for this, it will be solved in Virtuozzo 4.0.
You can however fix this yourself by creating a new custom application template, using the virtuozzo template creation wizard. Choose to create a template from manually selected data, be sure to have created a temporary VPS already, you'll need to enter the vps id, and desired template name.
When prompted which files you want to include, add these:

Finish the wizard, then run the command "vzpkgdeploy -i <templatename>" to enable this template.

Friday, November 16, 2007

Automate Virtuozzo backups on Windows

There is currently no GUI option to automate Virtuozzo backups, although not in current version 3.5.1 SP1.
This will be possible in Virtuozzo 4.0, which is currently in beta.

I'm using 2 bat files to script the backups and remove the oldest backup.
The first script creates a full backup of all virtual private servers using the vzbackup command:

for /F "skip=3 usebackq tokens=*" %%i in (`cmd /c "vzlist -ao veid"`) do (cmd /c "vzbackup "%%i && echo VE ID %%i has been backed up!)

To be able execute the second script you need to download RmEmpty, an executable which allows you to remove empty directories, get it here

First, we'll have to search the destination folder on the backup node for files older then x days, in this example I use 4 days.
forfiles /P e:\vz\backups /S -D -4 /c "cmd /c del /q @file"

The forfiles is a default windows binary, some information about the given variables:
/P indicates the path to start searching
/S instructs forfiles to recurse into subdirectories
/D selects files with a last modified data less than or equal to (-)
/C indicates the command to execute for each file
The /q is to delete the files quietly, otherwise it will ask for a confirmation before deletion.

After deleting the files we'll search for empty directories, and remove them:
C:\system\rmemp12\RMEMPTY.EXE e:\vz\backups\

Be aware that if e:\vz\backups\ itself is also empty, it will remove that one too! So always keep at least 1 file in that directory, I use a simple readme.txt so it never gets deleted.

Wednesday, August 22, 2007

Install VMware Tools on Debian

During installation the kernel headers and a C compiler will be required, to check which kernel you are using type this command:

# uname -r

# apt-get install linux-headers-2.6.18-5-686
# apt-get install make gcc

Now that the required packages are installed follow these steps to install the vmware tools:

1. click install vmware tools from the vmware server console menu
2. mkdir /mnt/cdrom
3. mount /dev/cdrom /mnt/cdrom
4. cd /tmp
5. tar zxf /mnt/cdrom/VMwareTools-1.0.3-44356.tar.gz
6. cd vmware-tools-distrib
7. ./
8. accept the default paths and choose to run the at the end

The VMware tools have now been installed.

Wednesday, August 15, 2007

Transfer SQL Server Jobs from SQL Server 2000 to 2005

To transfer sql server jobs from sql server 2000 to sql server 2005 you can use SQL Server Business Intelligence Development Studio.

1. Click file -> new -> project to create a new Integration Services Project
2. Click view -> toolbox so you can see an overview of all the items
3. From the toolbox, drag the "transfer jobs task" to the control flow window
4. Right click the transfer job task and click edit
5. Select jobs and enter the source and destination server, you can test the connection immediately
6. Choose to transfer all jobs, or only the ones you can select from the given list
7. Set the desired IfObjectExists and EnableJobsAtDestination option and click OK
8. Right-click the transfer jobs task and click execute task

If the job fails it will turn red, if it succeeds it turns green. Click on execution results to check for errors.
A couple of reasons why the task would fail:

  • the job owner does not exist on the destination server, you can modiy this on the source server in the job properties

  • if you have e-mail notifications enabled on the job, be sure the operator exists on the destination server or disable this

  • if the database for which the job will be executed does not exist that job transfer will fail

A couple screenshots from the transfer jobs task properties and the execution results:


Monday, August 6, 2007

Deploy Windows Server 2003 using WDS

  • Install WS 2008 and WDS

  • Copy boot.wim from \sources folder from a Vista DVD

  • Use WDS to add that boot.wim to the boot images

  • Right-click this image, and select "Create capture boot image", call it Capture or something similar

  • Add this capture image to the boot images

  • Disable all boot images, except for the capture image

  • Install Windows Server 2003 with service packs, updates, applications,... on a new server

  • Extract the content of \support\tools\ from the ws 2003 cd to c:\sysprep on the new server

  • Run c:\sysprep\setupmgr.exe to create a sysprep answer file for future deployments

  • Save the answerfile as sysprep.inf and copy it to the WDS server

  • Run c:\sysprep\sysprep.exe /reseal /mini /reboot

  • When the server reboots, press F12 twice to do a PXE boot and load the winPE for capturing

  • Follow the steps until you get to the Image Capture Source screen, here you can select the volume, usually this would be C:\, you have the option to immediately upload the captured image to the WDS server, be sure to have created an image group first. Type the ip address of the WDS server, and then you have to type the credentials to connect (turn off the windows firewall)

WDS Capture Image

  • When finished, click close, the server will reboot and load the sysprep wizard, complete this wizard. In future deployments this will be done by sysprep.inf

  • Copy the sysprep.inf that you saved earlier on the WDS server to \RemoteInstall\Images\<imagegroup>\<imagename>\$OEM$\$1\Sysprep\ (you have to create this structure)

  • Create an unattended file for the WDS client and attach this to the WDS server:

<?xml version="1.0" ?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-Setup" publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS" processorArchitecture="x86">

  • Create an auto-cast session for this image to be deployed on other machines

Tuesday, July 31, 2007

Inject VMWare NIC driver into Windows Server 2008 boot image

This guide only works on WS 2008 or Vista. The WAIK is supported on WS 2003 and XP too, but the driver injection will fail.
You can download the WAIK here.

Install the WAIK, open the Windows PE Tools Command Prompt. Also, have the WS 2008 boot.wim ready, and mount the VMWare Tools image by clicking "Install VMWare Tools", this will mount the drivers on the cd-rom drive.
If you are not doing these steps on a virtual machine, you can also just download these drivers (vmxnet).

1. copype x86 c:\windowspe
2. imagex /info "c:\path\to\x86\boot.wim"
In the WIM Information, look for the Boot Index, in this case the boot index is 2. We will use this in the next step.

3. imagex /mountrw "c:\path\to\x86\boot.wim" 2 c:\windowspe\mount
4. peimg /inf="c:\path\to\vmxnet\win2k\vmxnet.inf" c:\windowspe\mount\windows
5. peimg /inf="c:\path\to\vmxnet\win2k\vmware-nic.inf" c:\windowspe\mount\windows
You should see "PEIMG completed the operation successfully". If you would do this on a XP or 2003 machine, the message would be "PEIMG failed to complete the operation with status code 0x800703fb".
It's possible that this WILL work in future versions, but at the moment it doesn't

6. imagex /unmount c:\windowspe\mount /commit

The boot.wim image has now been injected with the VMWare NIC drivers.

There is an alternative to this, instead of doing the above driver injection procedure, you can add this to your .vmx file to have network support too: ethernet0.VirtualDev="e1000"

Wednesday, July 25, 2007

Clear System Event Log (SEL) on DELL PowerEdge Server

I had to ran the diagnostic tools on a dell pe 1950 server, but the test stopped very early with the message "the system event log contains memory related errors".
There are several ways to clear the SEL, one that can be performed locally and one remotely.

1. Clear the SEL locally
At boot, press ctrl-E to set the BMC ip address, in this same window you can choose to clear the system event log.

2. Clear the SEL remotely
If you have not already set an ip address for the BMC, do it now by pressing ctrl-E at boot. Besides configuring the ip address, enable IPMI too.
At the client be sure to have the bmc management utility installed, the default installation path is c:\program files\dell\sysmgt\bmc.
Perform the following command to clear the sel: ipmish.exe -ip -u root -p calvin sel clear
To view how many entries are in the sel: ipmish.exe -ip -u root -p calvin sel status

Change logical filename of SQL database

Perform this query to change the logical filename of both the data and logfile of you database.

(NAME = <DBFileName_DATA>, NEWNAME='NewDBFileName_Data')

(NAME = DBFileName_Log, NEWNAME='NewDBFileName_Log')

Install VMWare Tools on Server Core

In VMware Server Console, click "Install VMware Tools".
The setup GUI will not automaticly appear, so you have to run it manually. Actually by clicking on "install vmware tools" the cd-rom drive was mounted with tools, so you can now type "D:", and then run setup.exe.
This will run the setup GUI and you can install the tools like you would normally.

Install Active Directory Domain Services on Server Core

To install active directory on windows server 2008, server core edition, you must first create an answer file for the unattended installation, because server core does not offer the GUI wizard.
This sample answer file is to install a new domain in a new forest, with the installation of a DNS server.

InstallDNS = Yes
ConfirmGc = Yes
DNSOnNetwork = no
DomainLevel = 2
DomainNetBiosName= mydomain
ForestLevel = 2
NewDomain = Forest
NewDomainDNSName = mydomain
Password = mypassword
ReplicaOrNewDomain = Domain
SafeModeAdminPassword = mypassword

Save this file as "answerfile.txt" and then run the following command:

dcpromo /answer:answerfile.txt

Change schema for all tables in SQL Server 2005

By using the stored procedure MSforeachtable it's possible to perform the ALTER SCHEMA sql statement for all tables in a given database.
To change the schema for all tables this would look like:

exec sp_MSforeachtable "ALTER SCHEMA new_schema TRANSFER ? PRINT '? modified' "

Which would look like this if you want to alter schema to dbo:

exec sp_MSforeachtable "ALTER SCHEMA dbo TRANSFER ? PRINT '? modified' "

Tuesday, July 24, 2007

A matching connector cannot be found to route the external recipient

When I wanted to send an e-mail from my exchange mailbox to an external e-mail address, the message wasn't send.
I tracked the message in the Queue Viewer and it couldn't be sent because of this: "A matching connector cannot be found to route the external recipient".

To be able to send messages to external domains you have to create a send connector for domain "*". You can do this in the Organization Hub Transport Configuration:

exchange address space

530 5.7.1 Client was not authenticated

I got this error after sending an e-mail from an external domain over the internet to the exchange server, the message bounced with "530 5.7.1 Client was not authenticated" as error.
This is caused by the fact that I did not install an Edge Transport Server and did not specificly allow anonymous connections on the default receive connector.

By default Exchange 2007 servers not running the Edge Transport role will only accept inbound smtp connections from Exchange Users (clients), Exchange Servers (other Exchange 2007 servers) and Exchange Legacy Servers (legacy Exchange 2003 & below servers). To allow annonymous smtp connections for your server, run the following management shell command:

Set-ReceiveConnector -Identity "Default EXCHANGE" -PermissionGroups "AnonymousUsers"