Unable to connect to the Data Repository

SQL Server performance monitoring and alerting

Moderators: eddie davis, priyasinha, Adam, chriskelly, Chris Lambrou, Chris Spencer

Unable to connect to the Data Repository

Postby joffwilliams » Tue Jun 05, 2012 1:09 am

I am performing a fresh installation of SQL Monitor 3. I receive this error message when attempting to load the SQL Monitor interface in my web browser:

"Unable to connect to the Data Repository

Value cannot be null. Parameter name: value"

Searching support, forums and Google resulted in no solution.

The base monitor and IIS are installed on one side of a two-node cluster running Windows Server 2008 R2. The data repository is in a clustered failover SQL Server 2012 instance, currently on the other side of the same cluster.

I'm positive connection credentials for the base monitor to the repository are correct - I created the database using the account the base monitor runs as. No clues in Event Viewer. I'm at a loose end with no ideas right now. If there is any log information for the base monitor I can post to help, or any further information, I will share it. I'd like to get SQL Monitor up and running again ASAP - I'm missing a crucial piece of my monitoring solution!

Thanks in advance for any assistance!
joffwilliams
 
Posts: 13
Joined: Tue Mar 27, 2012 4:10 pm
Location: Spokane, WA

Postby joffwilliams » Tue Jun 05, 2012 4:29 pm

Found the Base Deployment log file. This error keeps repeating:

2012-06-05 15:28:03,510 [ 7] WARN NHibernate.Type.CustomType - custom type is not Serializable: RedGate.Response.Common.Persistence.NHibernate.UserTypes.CredentialsUserType
2012-06-05 15:28:03,510 [ 7] WARN NHibernate.Type.CustomType - custom type is not Serializable: RedGate.Response.Common.Persistence.NHibernate.UserTypes.CredentialsUserType
2012-06-05 15:28:03,510 [ 7] WARN NHibernate.Type.CustomType - custom type is not Serializable: RedGate.Response.Common.Persistence.NHibernate.UserTypes.CredentialsUserType
2012-06-05 15:28:03,542 [ 7] ERROR RedGate.Response.Engine.Alerting.Base.Service.MonitoringAndStorageService - Unhandled exception in delayed start.
System.ArgumentNullException: Value cannot be null.
Parameter name: value
at System.BitConverter.ToString(Byte[] value)
at #RVG.#esG.#tQb()
at #Wze.#euG.#gOb(Int32 , String , Int32 , Int32 , String )
at #RVG.#mNH.#0IH()
at #RVG.#kNH.#3IH(Boolean )
at #eLv.#qNV..ctor(#nNV , RepositorySettingsSection , CollectionSettingsSection , AlertSettingsSection , FeatureUsageSettingsSection , #ffZ )
at #eLv.#dLv.#ANV()
joffwilliams
 
Posts: 13
Joined: Tue Mar 27, 2012 4:10 pm
Location: Spokane, WA

Postby Brian Donahue » Wed Jun 06, 2012 2:26 pm

Hi,

It looks like the "value cannot be null" exception is being thrown out of the SQL Monitor licensing components - it's trying to get a MAC address or a volume serial number from a computer and coming up empty.

I'd assume that the attributes are failing to come in from one of the SQL Server computers.

Can you try this:
Open a command prompt
Type WBEMTEST<enter>
Connect to \\\\<name of a SQL Server>\\root\\cimv2
In the query, use SELECT * FROM Win32_LogicalDisk where DriveType="3"
For each result, double-click and see if there is a "VolumeSerialNumber" property. This is one of the things that the licensing code will try to convert to a string.
Brian Donahue
 
Posts: 6670
Joined: Mon Aug 23, 2004 10:48 am

Postby joffwilliams » Wed Jun 06, 2012 4:06 pm

Brian,

Every result contained a VolumeSerialNumber property.

Perhaps I should note that there are no SQL Servers being monitored yet. I am unable to access the web UI to even begin using the software. Finishing installation is as far as I have got. I did have SQL Monitor running on a workstation, as a preliminary environment, but it died so I'm now performing a fresh installation on a proper server.
joffwilliams
 
Posts: 13
Joined: Tue Mar 27, 2012 4:10 pm
Location: Spokane, WA

Postby Brian Donahue » Thu Jun 07, 2012 9:09 am

What happens if you run the same WMI query on the same computer as the base monitor?
Brian Donahue
 
Posts: 6670
Joined: Mon Aug 23, 2004 10:48 am

Postby joffwilliams » Fri Jun 08, 2012 4:44 pm

Same results for both nodes of the cluster. That is, the node the SQL Server instance is on and the node SQL Monitor is running from.
Jonathan Williams
Database Administrator
City of Spokane, WA
joffwilliams
 
Posts: 13
Joined: Tue Mar 27, 2012 4:10 pm
Location: Spokane, WA

Postby Brian Donahue » Mon Jun 11, 2012 9:20 am

Actually I wanted the disk ID for the base monitor computer.
Type WBEMTEST<enter>
Connect to \\\\<name of base monitor>\\root\\cimv2
In the query, use SELECT * FROM Win32_LogicalDisk where DriveType="3"
For each result, double-click and see if there is a "VolumeSerialNumber" property. This is one of the things that the licensing code will try to convert to a string.
Sorry for the confusion.
Brian Donahue
 
Posts: 6670
Joined: Mon Aug 23, 2004 10:48 am

Postby joffwilliams » Mon Jun 11, 2012 3:45 pm

Brian,

The base monitor computer is the second node of the cluster.

Node 1: SQL Server Instance (capable of failover to other node if necessary) with data repository, installed as Base Monitor user during installation.
Node 2: SQL Monitor Base Monitor and IIS

Hope that makes sense.
Jonathan Williams
Database Administrator
City of Spokane, WA
joffwilliams
 
Posts: 13
Joined: Tue Mar 27, 2012 4:10 pm
Location: Spokane, WA

Postby Brian Donahue » Tue Jun 12, 2012 9:52 am

The licensing code seems to be cluster-aware. How about this query:
Code: Select all
Type WBEMTEST<enter>
Connect to \\\\<name of base monitor>\\root\\MSCluster
In the query, use SELECT * FROM MSCluster_Disk
For each result, double-click and see if there is an "ID" property. This is one of the things that the licensing code will try to convert to a string.
Brian Donahue
 
Posts: 6670
Joined: Mon Aug 23, 2004 10:48 am

Postby joffwilliams » Tue Jun 12, 2012 4:55 pm

Brian,

I can run that query against node 1 from node 1 and against node 2 from node 2, but not from node 1 against node 2 and vice-versa. The results I did receive indicated each returned result had an ID property with a numeric value.
Jonathan Williams
Database Administrator
City of Spokane, WA
joffwilliams
 
Posts: 13
Joined: Tue Mar 27, 2012 4:10 pm
Location: Spokane, WA

Postby Brian Donahue » Tue Jun 12, 2012 5:30 pm

Can you please check the registry on the base monitor computer...
HKEY_LOCAL_MACHINE\\Cluster\\Quorum
Use the quorum ID in this query:
HKEY_LOCAL_MACHINE\\Cluster\\Resources\\<quorum ID>\\Parameters\\DiskUniqueIds
Next, look at
HKEY_LOCAL_MACHINE\\Cluster\\ClusterInstanceId
Brian Donahue
 
Posts: 6670
Joined: Mon Aug 23, 2004 10:48 am

Postby joffwilliams » Tue Jun 12, 2012 5:43 pm

Brian,

HKLM\\Cluster\\Quorum has an ID in the "Resource" entry.

HKLM\\Cluster\\Resources\\<quorum resource ID>\\Parameters has no DiskUniqueIds entries. There is a DiskIdGuid but it is blank.

HKLM\\Cluster\\ClusterInstanceID has an entry.
Jonathan Williams
Database Administrator
City of Spokane, WA
joffwilliams
 
Posts: 13
Joined: Tue Mar 27, 2012 4:10 pm
Location: Spokane, WA

Postby Brian Donahue » Wed Jun 13, 2012 10:08 am

Hi Joff,

That explains the cause of the problem, but I can't say how to fix it. This is critical information that MSCluster needs to function and use the shared disk, so if this ID is missing I'd assume the whole shared resource would break. So the disk ID is not available from the passive node perhaps?

I didn't see anything mentioned in the Microsoft KB about the registry entry being unavailable from the passive node, though...
Brian Donahue
 
Posts: 6670
Joined: Mon Aug 23, 2004 10:48 am


Return to SQL Monitor 3

Who is online

Users browsing this forum: No registered users and 0 guests