Wednesday, February 19, 2014

Detatch database failed for Server 'SQL-SERVER'. Error 3703

While trying to dismount a database I ran into the error: Cannot detach the database 'Database Name' because it is currently in use. (Microsoft SQL Server, Error: 3703).

This almost always happens due to an open connection which you can drop during the detachment process, but I like to exclude that option. This helps determine if the database still has connections to anything. There are two queries you can run that will tell you what is connected to the database. First run the below query.

select * from sys.sysprocesses where dbid = db_id('Database Name')
The returned results will display a host name, and a login name. Using the two you can determine if the connection is initiated locally, or externally. If externally, simply go to the server that is connecting to it and remove any User or System DSNs. If none are listed the database is likely configured inside of an application. Refer to your documentation for whatever application resides on the server in order to remove the database connections.

If you find that the connection was initiated locally, you will need to run the below query. This query provides information about current users, sessions, and processes in an instance of the Microsoft SQL Server Database Engine. The information can be filtered to return only those processes that are not idle, that belong to a specific user, or that belong to a specific session.

Using the status, loginname, hostname, dbname, and cmd fields you can likely determine what process is locking the database locally. In almost all cases I've seen it is due to a backup, transaction log shipping, or some other type of SQL related task.

If you've managed to track down the culprit and removed the connection to the database you should now be able to proceed with detaching the database without dropping open connections. For more information about SQL sp_ commands click HERE.

Monday, February 17, 2014

How to configure a CentOS Linux Server in 5 steps

Below is a quick tutorial on how to setup a new CentOS server with basic settings quickly. I will also show you how to lock down SSH to secure the system. However, this is by no means a complete list of instructions for securing the CentOS operating system. We will create a basic non-super user, lock down SSH, configure the firewall, and set a static IP address.

1. First let's set the root user password.

[root@localhost ~]# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
2. Now let's create a basic non-super user and set the password
[root@localhost ~]# adduser newusername
[root@localhost ~]# passwd newusername
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
3. Next let's edit the SSH configuration.
[root@localhost ~]# vi /etc/ssh/sshd_config
Here we can configure SSH to use a custom port and restrict SSH access so the root user cannot login. You will also need to restart the ssh service for the changes to take effect. Use :wq to save the configuration when finished.
# Prevent root logins:
PermitRootLogin no

#Port 22
Port 123
You can restart the sshd service with the command below.
[root@localhost ~]# service sshd restart
4. Next we need to edit the iptables configuration so the server will accept traffic on the new SSH port. Use :wq to save the configuration when finished.
[root@localhost ~]# vi /etc/sysconfig/iptables
While in the iptables config you should see a line referencing port 22 already. Change the port to the new port we set previously.
-A INPUT -m state --state NEW -m tcp -p tcp --dport 123 -j ACCEPT
If you wanted to restrict access to a network such as, edit the line as shown.
-A INPUT -s -m state --state NEW -p tcp --dport 123 -j ACCEPT
For the above changes to take effect you must restart the iptables service.
[root@localhost ~]# service iptables restart
5. Now, let's configure an ip interface as the last step. Use :wq to save the configuration when finished.
[root@localhost ~]# vi /etc/sysconfigc/network-scripts/ifcfg-eth0
Here you can edit the relevant settings as needed.
Now restart the network service and you're set!
[root@localhost ~]# /etc/init.d/network restart

Resetting Windows Passwords

Recently I received the below request for help through the Contact Me section of my blog.

"Hi vTechie, I have a situation with a VM in my vSphere environment. We lost admin access to the VM (XP) and are unable to get back in. The machine has lost domain connectivity and we are unable to login as a user with cached credentials. We do not know when computer lost domain connectivity. Please help!"

This is a strong case for why you want to use linked clones in VMware View and Persona Management. VMware View and Persona Management together make virtual machines disposable and all of the user data is stored on a server instead of on the VMs. In this case when a VM has an issue you can set VMs to automatically refresh (reimaged) or you can do it manually. This prevents the need to fix broken VMs and generally makes life easier for both admins and users alike.

To answer the original question you must reset the user password you are trying to login as or login as a domain admin to regain access to the VM. If the domain trust relationship on the VM has been broken you must login as the local Administrator account to rejoin the computer to the domain. Again, this is not required if it is a linked clone. In that situation you would refresh or recompose that particular VM. If you do not know the local Administrator password you must reset it.

There is a boot disk you can download called Hiren's BootCD. Simply download the ISO and boot into the password recovery environment to reset the local Administrator password. You will also likely need to boot the VM into BIOS to move the CD Rom up in the boot order. In order to "Force BIOS Setup" right click the VM and select edit. Then click the Option tab at the top as shown below, and check the box for "Force BIOS Setup".

Once in the password recovery environment follow the instructions on the Hiren's BootCD website to unlock the local Administrator account. Once you've successfully logged in as the local Administrator you can rejoin the computer to the domain or recover user data.

If you have a question or would like to make a request for something you would like to see on my blog feel free to reach out to me.

Thursday, February 13, 2014

How to Install the VMware Tools on CentOS

It is very important that you install VMware Tools in the guest operating system. With the VMware Tools installed VMs support significantly faster performance, time synchronization, and other enhanced features. Below are the steps to install the VMware Tools on CentOS.

1. Install the prerequisites into your CentOS. If asked any questions take all of the defaults.
[root@localhost ~]# yum install perl gcc make kernel-headers kernel-devel -y
2. Next attach the VMware Tools using the vSphere client.

3. Mount and extract the VMware Tools to a temporary location.
[root@localhost tmp]# mount /dev/cdrom /mnt
[root@localhost tmp]# cd /mnt
[root@localhost tmp]# ls
VMwareTools-8.3.7-341836.tar.gz  yum.log
[root@localhost tmp]# mkdir /etc/temp1
[root@localhost tmp]# tar xzvf VMwareTools-8.3.7-341836.tar.gz -C /etc/temp1/
4. CD to the directory where the tools were extracted and start install.
[root@localhost tmp]# cd /etc/temp1
[root@localhost temp1]# cd vmware-tools-distrib
[root@localhost vmware-tools-distrib]# ls
bin  doc  etc  FILES  INSTALL  installer  lib
[root@localhost vmware-tools-distrib]# ./
5. During the install take all of the defaults, then reboot your VM. Enjoy!