My Home Network

A prerequisite of working in IT is the need for an overcomplex home network setup. With that in mind, i thought i'd share some details of mine. I'm a big fan of media. Pictures, videos, films, TV series. The media streaming ability of my network is its biggest advantage.

I use the endpoints in both my living room and bedroom to stream media from the Twonky media server installed on the Western Digital 4Tb NAS. The Twonky server and both the Xbox and PS3 endpoints use DLNA for this.

My IP camera uploads images to the WD NAS upon motion detection and keeps a watchful eye over my garden shed. Alerts are also sent remotely to my WP7 handheld device for when i'm not at home.

The DDWRT firmware on my Linksys router allows IPSEC VPN setup and dynamic DNS updates for easy and secure remote access.

OCS Edge Server Wizard Fails

Like many others i have a set procedure for building up new server instances. And one of those procedures is bring the machine fully upto the latest service pack and patch level with all the most recent hotfixes and bug fixes. After running through this procedure recently, then attempting to install the OCS 2007 R2 Edge server services, my install wizard failed, with the following error, and i was left wondering why.

Failure
[0xC3EC78D8] Failed to read the Office Communications Server version information. This can happen if the computer clock is not set to correct date and time






I checked both the time and date of the system, and as i suspected, they were both fine, all were in sync with other network members.

I eventually tracked the issue down to one of my previously installed KB fixes, (KB974571)
.
It appears that this issue is well known about with the OCS community, here a re a few links on it...
http://communicationsserverteam.com/archive/2009/10/14/632.aspx
http://support.microsoft.com/kb/974571

Uninstalling the patch, then rerunning the edge server wizard, resolved my issues, and the install proceeded successfully.

Changing Twonky Media Content Base Path

So I recently purchased a new NAS drive for my home network. I have a large music library, and even larger library of digital pictures so went whole hog and got the new Western Digital MybookWorld 2, 4Tb version. This comes pre-installed with Twonky Media Server. I created a folder structure to match that of my existing NAS drive and copied the contents over, then set about configuring the Twonky Media Server (I use this to stream my Videos/Music/Pictures to endpoints around my house, Xbox 360, PS3, Iphone). Only to find that the Twonky media server is preconfigured to a base content path 2 folder structures higher than I have placed my media! :|

When I attempted to specify a new content location in Twonky I couldn’t select the new folders I had created (even when attempting to start the path with ../../Datavolume/Media). When examining the log files that Twonky creates I noticed that there was a contentbase defined as..

“INI value:contentbase=/DataVolume/Public/”

Whereas all my media was located in “/DataVolume/Media/”. I did find a few ways of changing this value which consisted of enabling ssh onto the nas, and altering the twonky ini file with vi. While I am extremely competent with Linux and Vi afer working as an Oracle DBA for a number of years I steered clear of this for the following reasons.
..

A) My Western Digital warranty going bye bye! (I paid £300+ pounds for the nas and don’t want to lose it!)
B) Should the procedure go wrong I wasn’t looking forward to reinstalling Twonky from scratch!

I found the following (not very well documented) procedure to change the URL from a browser window. Just enter the command in your address window and follow any credential prompts if you have authentication enabled.

http://IP:Port/rpc/set_option?contentbase=New Base Path

For Example…
http://192.168.1.10:9000/rpc/set_option?contentbase=/DataVolume/Media


OCS/Outlook Integration Presence Issues

We have been having a few issues with getting the OCS Presence Indictator working correctly with Outlook 2007. When you hover over the presence jelly bean in the Preview Pane, you get ‘Presence Unknown’ even through OCS and even Sharepoint detect the correct status:

OCS Presence Unknown

After some extensive research, most people recommend the following registry key settings:

"REG_DWORD HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\PersonaMenu\RTCApplication=3"
"REG_DWORD HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\PersonaMenu\RTCApplication=3"

"HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\12.0\Outlook\IM] "SetOnlineStatusLevel"=dword:00000003"
[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\PersonaMenu]
"QueryServiceForStatus"=dword:00000002

However, this didnt seem to resolve the issue. By experimentation, we tried:

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\PersonaMenu]
"QueryServiceForStatus"=dword:00000002

and changed the dword value to 3. The presence is now working as expected. According to the Microsoft site, this can only be set to 0, 1 or 2.

Feel free to investigate and let me know how you get on!

Lync Server 2010 Publishing Topology - MSDE SQL Instance

So after resolving the issue below with regards to installing Lync Server using the wrong credentials, i then hit another problem with the Central Management Store. This time the error was...

Error:
An error occurred: "System.UnauthorizedAccessException" "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"



And the event log showed the following...


Log Name: System

Source: LsaSrv

Date: 15/11/2010 11:00:36

Event ID: 6037

Task Category: None

Level: Warning

Keywords: Classic

User: N/A

Computer: LyncPool.LyncTest.Local


Description:

The program sqlservr.exe, with the assigned process ID 2368, could not authenticate locally by using the target name MSSQLSvc/testpool.lynctest.local:49245. The target name used is not valid. A target name should refer to one of the local computer names, for example, the DNS host name. Try a different target name.

I determined that this was because of loopback checking in my particular setup. In that the hostname of my Lync pool server was lyncpool.lynctest.local and my pool name was lynctest.lynctest.local.

The solution was to add a registry key to disable loopback checking.


Run regedit and browse to the following...
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

Create a dword with the following values
DisableLoopbackCheck Value:1

Oh, and Kudos to Kevin Feasel who's blog i found this solution on.

Outlook Signatures Centralized

Keeping every ones Outlook email signature in line with company policy is a nightmare of a task. You often find users edit it slightly with images, different symbols for their phone number and most of all, the constant change in upcoming events or products.

I needed to find a solution that centralised signature management, without the cost of a third party application or more software for IT to support. After searching the internet, VB seemed like the best option. The full script can be downloaded here. Simply download the file and rename it to .vbs.

The script can be deployed as a login script with group policy and gives Administrators:

- Centralised Control over Events and Formatting
- Automated Job Title, Phone Number and Email Address Control
- Piece of mind that corporate image is being portrayed.

Lync Server 2010 Publishing Topology Error


Came across this one today, when publishing your selected topology from the Lync Server Topology Builder, the publishing wizard fails at the first step of "Creating Central Management Store". The following will also be logged in the deployment log.

Error: An error occurred: "Microsoft.Rtc.Management.Deployment.DeploymentException" "Cannot determine where to install database files because Windows Management Instrumentation on the database server is unavailable from your computer or user account. To continue, you can resolve this issue, or you can specify where you want to install the files."

.......... Have you logged in as a member of the "CSAdministrator" group.....

Server 2008 Slow Logon Network Access – TCP Offload & TCP Autotuning

TCP offload or "chimney offload" provides a direct connection (a "chimney") between applications and a TCP offload-capable NIC. This feature enables such a NIC to perform TCP processing for offloaded connections which reduces processor overhead and makes network communications more efficient. Another feature in Server 2008 TCP/IP is Receive Window Auto-Tuning Level for TCP connections. TCP AutoTuning enables TCP window scaling by default and automatically tunes the TCP receive window size for each individual connection based on the bandwidth delay product (BDP) and the rate at which the application reads data from the connection. Theoretically, with TCP auto-tuning, network connection throughput in Server 2008 should be improved for best performance and efficiency. However, this is not always the case. Unfortunately, these “features” can cause many untold issues with specific physical/virtual hardware. In our environment we experienced very slow logon times (2003 active directory functional level with 2008 member servers), LDAP failures and generally very slow network access from the 2008 member servers. An MS support ticket suggested we disabled the autotuning and offloading, which successfully resolved our issues.

To check the current state of chimney offload and TCP autotuning, run the following command.

netsh interface tcp show global

To disable chimney offloading and TCP autotuning, run the following command.

netsh interface tcp set global chimney=disabled autotuninglevel=disabled

Moving SQL 2005 System Databases - Step By Step Instructions

Moving SQL System Database Files

MASTER DATABASE

1) Update the –d –l and –e paths on the startup parameters to the intended new location

-dE:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf;-eE:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lE:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf

2) Shutdown sql server

3) Move the master.dbf and master.ldf files

Ensure that the log file directory in the new location is created ready

4) DO NOT STARTUP THE DB AT THIS POINT (THE MASTER AND RESOURCE DATABASE HAVE TO BE MOVED AND LOCATED IN THE SAME DIRECTORY!)

RESOURCE DATABASE

1) Run net start mssqlserver /f /T3608 from command prompt to start the server in single user and master recovery only mode

2) Close the object explorer in SQL Server Management Studio (as this uses your one connection)

3) ALTER DATABASE mssqlsystemresource

MODIFY FILE (NAME=data, FILENAME= 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource.mdf');

GO
ALTER DATABASE mssqlsystemresource
MODIFY FILE (NAME=log, FILENAME= 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource.ldf');
GO

4) ALTER DATABASE mssqlsystemresource SET READ_ONLY;


5) Shutdown the DB

6) Move the files to the new location

7) Restart the services normally

8)
SELECT name, physical_name AS CurrentLocation, state_desc

FROM sys.master_files
WHERE database_id = DB_ID('master');
GO

TEMP DATABASE

1)
USE master;

GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\tempdb.mdf');
GO

ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\templog.ldf');
GO

2) Restart the services

3) Verify files exist in new location

4)
SELECT name, physical_name AS CurrentLocation, state_desc

FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');

5) Delete files from old location

MODEL AND MSDB DATABASES

1) ALTER DATABASE model MODIFY FILE ( NAME = modeldev , FILENAME = 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\model.mdf' )

2) ALTER DATABASE model MODIFY FILE ( NAME = modellog , FILENAME = 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\modellog.ldf' )

3) ALTER DATABASE msdb MODIFY FILE ( NAME = msdbdata , FILENAME = 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\msdbdata.mdf' )

4) ALTER DATABASE msdb MODIFY FILE ( NAME = msdblog , FILENAME = 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\msdblog.ldf' )

5) Shutdown the sql services

6) Move the files to the new location

7) Startup the instance again

8) Check the new paths using the following statements…

use model
go
sp_helpfile
go

use msbd
go
sp_helpfile
go

Good luck!

Passive node cluster service issues following Windows Updates



I recently came across the following issue, and found very little documentation online about it, so thought i'd add it here to help others. Following the installation of some windows updates security patches onto a passive SQL cluster node, the cluster service refused to start. Event id 7031, 1073, 1173, 1123 were all logged in the system event log.

Event Type: Warning
Event Source: ClusSvc
Event Category: Node Mgr
Event ID: 1123
Date: 01/11/2010
Time: 13:21:56
User: N/A
Computer: PASSIVENODE
Description:
The node lost communication with cluster node 'ACTIVENODE' on network 'Heartbeat (Left)'.
--------------------------------
Event Type: Error
Event Source: ClusSvc
Event Category: Membership Mgr
Event ID: 1173
Date: 01/11/2010
Time: 13:22:39
User: N/A
Computer: PASSIVENODE
Description:
Cluster service is shutting down because the membership engine detected a membership event while trying to join the server cluster. Shutting down is the normal response to this type of event. Cluster service will restart per the Service Manager's recovery actions.
--------------------------------
Event Type: Error
Event Source: ClusSvc
Event Category: Startup/Shutdown
Event ID: 1073
Date: 01/11/2010
Time: 13:22:39
User: N/A
Computer: PASSIVENODE
Description:
Cluster service was halted to prevent an inconsistency within the server cluster. The error code was 5890.

After numerous network traces and diagnostics i discovered that one of the windows updates previously installed (KB97546) had updated a file named MSV1_0.dll on the passive cluster, this had caused a version mismatch and was the cause of the problems. The active node had a file version 5.2.3790.4587 where as the passive node had 5.2.3790.3959.

Before discovering the mismatch we had already evicted the passive node from the cluster, so i can't say whether just uninstalling KB975467 from the passive node would resolve the issues. Most likely, it will.


Below was my full set of troubleshooting/resolution steps.

  • Suspected a Network Issue so collected Network Monitor Trace for Heartbeat NIC - came out clean.
  • Evicted NODE B from cluster and ran, cluster.exe node /forcecleanup
  • Tried adding NODE B in cluster but it failed to start Cluster Service during the join process.
  • Confirmed following registry entries on both the nodes were the same,

Verified that HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LMCompatibilityLevel and it is set to 2.

Verified that HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\lmcompatibilitylevel and restrictanonymous are the same on all nodes.

Verified that HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ntlmminclientsec and ntlmminserversec are the same on all nodes.

  • Verified the Cluster Service Account Password used was correct and not expired.
  • Checked HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Cluster Server and Clusterinstallationstate was set to 1 on passive node and it was set to 2 on active node.
  • Confirmed the subnet mask for all the interfaces in cluster on both the nodes were configured correctly.
  • Investigated installed KB's and noticed that there was a mismatch in the file version of MSV1_0.dll between the cluster nodes.
  • Tried replacing the .dll file from NODE A but that did not help.
  • Uninstalled KB 975467 from NODE B and the file version was reverted to 5.2.3790.4530.
  • Successfully re added the passive node into the cluster and restarted the cluster service.
Hope this helps someone else out!