I recently had a customer engagement where the customer wanted to install a SQL 2012 two node Failover Cluster with one instance. OK, easy, did this a couple of times.
But then the customer came up with the Information, that the OS will be Windows Server 2012 R2. OK, older SQL on newer OS is very often a case where we need a service pack as minimum requirement. And yes, there is an article in MSDN.
SP1 is needed for the Support of SQL 2012 on Windows Server 2012 R2. In the past there was often something like this, just remember SQL 2008 on Windows Server 2008 R2. It was needed to just install SQL 2008 RTM and apply the SQL SP afterwards.
There are already media out there for SQL 2012 including SP1, but my customer only had the SQL 2012 RTM Version. So we tried it with the RTM Version, and wanted to apply the SP1 afterwards, because there was no recommendation until this time if SQL 2012 RTM with SP1 install is needed, or only SQL 2012 RTM and apply the SP after that.
So we started the Installation from the SQL 2012 RTM media, it all went well, the Progress bar with the insallation started.... and it was just nearly in the middle, when a message box came up, that the SQL Browser Service could not start. Hmm... went to services console, start.... no, error, could not start. So a look into the Windows Eventlog was needed. There was a nice little message...The SQL configuration for SQL is inaccessible or invalid. Hmm...
OK, we cancelled the setup and observed that was installed in 'Programs and features'. Setup Support files, SQL Browser, SQL Server (64 Bit), nearly everything was listed what is known for a successful installation. So we decided to de-install everything. It worked, only the 'SQL Server (64 Bit)' did not find any instance. OK, this really comes at the end of a SQL cluster installation, we stopped earlier.
I wanted to cleanup all the stuff in 'Program Files' and so on, but it was locked somehow.... OK, we did a reboot on both servers. Still no cleanup on Node 1 of the already installed bits in Program files etc. possible. So we left them there.
We now decided to go a different way. There is a great thing in SQL 2012 setup, called SMART SETUP. If the server is in the internet it will check there for updates. Server, in the internet..... huuuuhhhhh. No, never ever. But there is another option, you can point SQL Server Setup to a directory with the updates. So, we already had SQL 2012 SP1 setup there (This is around some 900 MB). We decided to go also for a cumulative update (CU), 6 was the actual one, so we downloaded this also. We created a directory on drive C of the server (C:\SQLUpdates, name it as you want, it is only an example here...) and copied both updates into this directory. Be careful: The CU update is in a self extracting zip, so unzip is first to get the exe and copy this to the directory.
So, how does SQL Setup now finds the updates?
Easy.... but not with a nomal double click on Setup.exe. Open a command line, and type 'SETUP.EXE /Action=installfailovercluster /updatesource=C:\SQLupdates'
When you install a normal SQL instance, the Action is 'install', when you add a node to a SQL Cluster the Action is 'addnode'.
We started the Setup from the SQL 2012 RTM media this way, on one of the pages at the beginning SQL Server tells you what it found (Service Pack 1 and another update on top of this, right) and... the Setup ran until the end, and our Failovercluster instance was there (It was fine with all the stuff alredy in Program Files etc.... very great Setup). We did the same on node 2, with Action as 'addnode' (Copy the updates locally to node 2, or share the Directory and call in /updatesource= from an UNC path. ) and it was fine. The Cluster was up and running.
In the meantime, the article above says that there might be Setup issues and SQL 2012 SP1 with Minimum CU3 should be used. Ah, really, I can prove this, you better go with a CU on top of SP1 to be on the safe side. Check the MSDN article frequently, it is updated from time to time with new Information.