Whilst installing a CRM 2011 on a SQL cluster some issues occurred that we resolved without any clear guidance from the web. The documentation available on the CRM installation is sparse and not very helpful when issues occur. So this is our story …
The installation so far
A SQL cluster has been installed for each of three SQL instances, each for a different application. Each of the SQL clusters has an Analysis Services instance and a SQL Agent. Reporting Services has been installed for each of the SQL instances on cluster node 1.
The SQL instances have been hardened as they will be accessed by machines in a DMZ. The hardening has consisted of disabling the SQL Browser service and setting explicit ports for the SQL instances.
Machines and Resources
The following machines and resource have been built and applications installed:
|Windows cluster name||db-crm.domain.local|
|cluster node 1||Server-db1.domain.local|
|cluster node 2||Server-db2.domain.local|
|CRM SQL Instance||Db-crm.domain.localdb_crm|
For applications that are accessing the SQL instances, SQL Aliases have been configured based on the SQL cluster name and the port that the instance has been configured to listen on. This approach allows for the alias name to be used when installing an application like SharePoint.
The account that is carrying out the installation of CRM has been setup specifically for this purpose and has been granted ‘Administrator’ permissions on both of the cluster nodes. In addition it has been temporarily granted SQL system administrator privileges.
Aims of CRM 2011 Installation
The CRM installation should be running on the CRM machine and the databases will be stored within the CRM SQL instance.
Issues with the CRM Installation
The instance name must be the same as computer name
Because the CRM SQL instance has had the SQL Browser service disabled as part of the hardening the preferred entry for the CRM SQL instance should be a SQL alias such as sql-crm.
The SQL alias is only used by the applications that use the SQL Native Client. Any code that uses the name of the SQL server in any other way, will not be able to resolve the name unless it happens to be the same as the name of the server. If the SQL alias is used the following error is reported:
The requested name is valid, but no data of the requested type was found
When entering the name of the instance the fully qualified name with the instance name cannot be used as the check for the SQL Server fails with the following message:
The solution is to add a SQL alias that defines the name of the SQL instance needs to be set up that has very particular properties:
The particular properties are as follows:
The name of the SQL cluster without the domain name and the name of the instance
Explicitly defined port that the instance is listening on
The fully qualified name of the SQL cluster without the name of the instance
These changes allowed the pre-req checks to pass successfully.