Unable to connect to the Data Repository

joffwilliamsjoffwilliams Posts: 16
edited June 13, 2012 5:08AM in SQL Monitor Previous Versions
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!
Jonathan Williams
Database Administrator
City of Spokane, WA

Comments

  • 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()
    Jonathan Williams
    Database Administrator
    City of Spokane, WA
  • Brian DonahueBrian Donahue Posts: 6,590 New member
    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,

    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.
    Jonathan Williams
    Database Administrator
    City of Spokane, WA
  • Brian DonahueBrian Donahue Posts: 6,590 New member
    What happens if you run the same WMI query on the same computer as the base monitor?
  • 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
  • Brian DonahueBrian Donahue Posts: 6,590 New member
    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,

    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
  • Brian DonahueBrian Donahue Posts: 6,590 New member
    The licensing code seems to be cluster-aware. How about this query:
    Type WBEMTEST&lt;enter&gt; 
    Connect to \\&lt;name of base monitor&gt;\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,

    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
  • Brian DonahueBrian Donahue Posts: 6,590 New member
    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,

    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
  • Brian DonahueBrian Donahue Posts: 6,590 New member
    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...
Sign In or Register to comment.