Friday, May 20, 2011

How Lync Server 2010 Setup installs and configure the RTCLocal SQL instance on a front-end server of an Enterprise Pool

I had to deploy a Lync Server 2010 Enterprise Pool about a month ago and while I thought it would take just a few hours to complete, it ended up taking a good day and a half.  The problem I ran into was for some odd reason the installation would only create the lis and xds database during the install:

image

It took me 10 reinstall attempts while cleaning out the settings in the configuration container of Active Directory and uninstalling the binaries to get the databases installed properly.  I took a good few hours performing post mortem on what I did differently but failed to figure out what was the problem.  Although I wasn’t able to figure out what caused my installs to fail, I did learn something about the installation while I was troubleshooting and that was how the databases were created.  Unfortunately, I just realized that I only had the logs for the RTCLocal SQL instance install for the front-end server and since I’m at the JFK airport with no free wireless access, I’ll spend the the time I have as I wait for my next flight to write about the local SQL RTCLocal instance and will retrieve the logs for the actual SQL install at a later time for another post.

The LCSSetup_Commands.txt file

Upon a successful Lync Server 2010 front-end server install, a text file named LCSSetup_Commands.txt actually gets created in the AppData folder of the account that you used to install the front-end server:

C:\Users\someAccountName\AppData\Local\Temp

image

If we open that log file, we’ll see that it contains a verbose log of the installation:

image

I won’t paste all the log entries in this post but what I’ll do is copy and paste the ones that are of interest for seeing what actually gets executed to create the databases for the local SQL instance named RTCLocal located on the front-end server.

Browsing through the log will show that the install actually uses the CScript.exe command to execute prewritten .wsf scripts which are copied to the C:\Program Files\Common Files\Microsoft Lync Server 2010\DbSetup folder when you run the Install Local Configuration Store step:

image

When the installer executes these scripts, parameters are also passed to customize the install for a local SQL install or a back-end server.  The following are the databases and the corresponding scripts that are found in the log file:

rtc

CScript.exe //U //Nologo DBSetup.wsf /sqlserver:localhost\rtclocal /serveracct:"SVR-LYNC-01\RTC Server Local Group;SVR-LYNC-01\RTC Component Local Group" /adminacct:"SVR-LYNC-01\RTC Local Administrators" /roacct:"SVR-LYNC-01\RTC Local Read-only Administrators" /role:se /verbose

--------------------------------------------------------------------------------------------

Installed SQL Server 2005 Backward Compatibility version is 8.05.2312

Connecting to SQL Server on localhost\rtclocal

SqlMajorVersion : 10

SqlMinorVersion : 0

SqlBuildNo : 2531

SQL version is acceptable: 10.0.2531.0

Default database data file path is c:\Program Files\Microsoft SQL Server\MSSQL10.RTCLOCAL\MSSQL\Data

Default database data file path is c:\Program Files\Microsoft SQL Server\MSSQL10.RTCLOCAL\MSSQL\Data

Default database log file path is c:\Program Files\Microsoft SQL Server\MSSQL10.RTCLOCAL\MSSQL\Data

(Database rtcdyn doesn't exist.)

Creating database rtcdyn

    DbFile : PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\rtcdyn.mdf
    LogFile: PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\rtcdyn.ldf

Executing resource SetDbOptions on rtcdyn

Executing batch dbcommon.sql on rtcdyn

Executing batch types.sql on rtcdyn

Executing batch roles.sql on rtcdyn

Executing batch dbrtcdyn.sql on rtcdyn

(Database doesn't exist. Performing clean install.)

Creating database rtc

    DbFile : PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\rtc.mdf
    LogFile: PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\rtc.ldf

Executing resource SetDbOptions on rtc

Executing batch dbcommon.sql on rtc

Executing batch types.sql on rtc

Executing batch roles.sql on rtc

Executing batch dbrtc.sql on rtc

Executing resource LinkStaticAndDynamicDatabases on rtc

Executing resource DbReIndex on rtc

Setting security in rtc

DbOwner is now sa

SVR-LYNC-01\RTC Component Local Group has a Win32_Account instance of SIDType 4

Refreshing existing SVR-LYNC-01\RTC Component Local Group SQL login

Adding SVR-LYNC-01\RTC Component Local Group SQL login

Adding SVR-LYNC-01\RTC Component Local Group db user in rtc

SVR-LYNC-01\RTC Local Administrators has a Win32_Account instance of SIDType 4

Refreshing existing SVR-LYNC-01\RTC Local Administrators SQL login

Adding SVR-LYNC-01\RTC Local Administrators SQL login

Adding SVR-LYNC-01\RTC Local Administrators db user in rtc

SVR-LYNC-01\RTC Local Read-only Administrators has a Win32_Account instance of SIDType 4

Refreshing existing SVR-LYNC-01\RTC Local Read-only Administrators SQL login

Adding SVR-LYNC-01\RTC Local Read-only Administrators SQL login

Adding SVR-LYNC-01\RTC Local Read-only Administrators db user in rtc

SVR-LYNC-01\RTC Server Local Group has a Win32_Account instance of SIDType 4

Refreshing existing SVR-LYNC-01\RTC Server Local Group SQL login

Adding SVR-LYNC-01\RTC Server Local Group SQL login

Adding SVR-LYNC-01\RTC Server Local Group db user in rtc

Adding user SVR-LYNC-01\RTC Server Local Group to role ServerRole

Adding user SVR-LYNC-01\RTC Component Local Group to role ServerRole

Adding user SVR-LYNC-01\RTC Local Read-only Administrators to role ReadOnlyRole

Adding user SVR-LYNC-01\RTC Local Administrators to role AdminRole

Successfully added logins and db users to the specified database roles in rtc

Setting Db schema version to 59

Setting Db sproc version to 35

Setting security in rtcdyn

Opened database rtc

Db owner is sa

Adding SVR-LYNC-01\RTC Component Local Group db user in rtcdyn

DataBaseRole.AddMember succeeded for SVR-LYNC-01\RTC Component Local Group (  )

Adding SVR-LYNC-01\RTC Server Local Group db user in rtcdyn

DataBaseRole.AddMember succeeded for SVR-LYNC-01\RTC Server Local Group (  )

Adding SVR-LYNC-01\RTC Local Administrators db user in rtcdyn

DataBaseRole.AddMember succeeded for SVR-LYNC-01\RTC Local Administrators (  )

Successfully assigned security to rtcdyn from rtc

rtcdyn

CScript.exe //U //Nologo DBSetup.wsf /sqlserver:localhost\rtclocal /serveracct:"SVR-LYNC-01\RTC Server Local Group;SVR-LYNC-01\RTC Component Local Group" /adminacct:"SVR-LYNC-01\RTC Local Administrators" /roacct:"SVR-LYNC-01\RTC Local Read-only Administrators" /role:se /verbose

--------------------------------------------------------------------------------------------

Installed SQL Server 2005 Backward Compatibility version is 8.05.2312

Connecting to SQL Server on localhost\rtclocal

SqlMajorVersion : 10

SqlMinorVersion : 0

SqlBuildNo : 2531

SQL version is acceptable: 10.0.2531.0

Default database data file path is c:\Program Files\Microsoft SQL Server\MSSQL10.RTCLOCAL\MSSQL\Data

Default database data file path is c:\Program Files\Microsoft SQL Server\MSSQL10.RTCLOCAL\MSSQL\Data

Default database log file path is c:\Program Files\Microsoft SQL Server\MSSQL10.RTCLOCAL\MSSQL\Data

(Database rtcdyn doesn't exist.)

Creating database rtcdyn

    DbFile : PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\rtcdyn.mdf
    LogFile: PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\rtcdyn.ldf

Executing resource SetDbOptions on rtcdyn

Executing batch dbcommon.sql on rtcdyn

Executing batch types.sql on rtcdyn

Executing batch roles.sql on rtcdyn

Executing batch dbrtcdyn.sql on rtcdyn

(Database doesn't exist. Performing clean install.)

Creating database rtc

    DbFile : PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\rtc.mdf
    LogFile: PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\rtc.ldf

Executing resource SetDbOptions on rtc

Executing batch dbcommon.sql on rtc

Executing batch types.sql on rtc

Executing batch roles.sql on rtc

Executing batch dbrtc.sql on rtc

Executing resource LinkStaticAndDynamicDatabases on rtc

Executing resource DbReIndex on rtc

Setting security in rtc

DbOwner is now sa

SVR-LYNC-01\RTC Component Local Group has a Win32_Account instance of SIDType 4

Refreshing existing SVR-LYNC-01\RTC Component Local Group SQL login

Adding SVR-LYNC-01\RTC Component Local Group SQL login

Adding SVR-LYNC-01\RTC Component Local Group db user in rtc

SVR-LYNC-01\RTC Local Administrators has a Win32_Account instance of SIDType 4

Refreshing existing SVR-LYNC-01\RTC Local Administrators SQL login

Adding SVR-LYNC-01\RTC Local Administrators SQL login

Adding SVR-LYNC-01\RTC Local Administrators db user in rtc

SVR-LYNC-01\RTC Local Read-only Administrators has a Win32_Account instance of SIDType 4

Refreshing existing SVR-LYNC-01\RTC Local Read-only Administrators SQL login

Adding SVR-LYNC-01\RTC Local Read-only Administrators SQL login

Adding SVR-LYNC-01\RTC Local Read-only Administrators db user in rtc

SVR-LYNC-01\RTC Server Local Group has a Win32_Account instance of SIDType 4

Refreshing existing SVR-LYNC-01\RTC Server Local Group SQL login

Adding SVR-LYNC-01\RTC Server Local Group SQL login

Adding SVR-LYNC-01\RTC Server Local Group db user in rtc

Adding user SVR-LYNC-01\RTC Server Local Group to role ServerRole

Adding user SVR-LYNC-01\RTC Component Local Group to role ServerRole

Adding user SVR-LYNC-01\RTC Local Read-only Administrators to role ReadOnlyRole

Adding user SVR-LYNC-01\RTC Local Administrators to role AdminRole

Successfully added logins and db users to the specified database roles in rtc

Setting Db schema version to 59

Setting Db sproc version to 35

Setting security in rtcdyn

Opened database rtc

Db owner is sa

Adding SVR-LYNC-01\RTC Component Local Group db user in rtcdyn

DataBaseRole.AddMember succeeded for SVR-LYNC-01\RTC Component Local Group (  )

Adding SVR-LYNC-01\RTC Server Local Group db user in rtcdyn

DataBaseRole.AddMember succeeded for SVR-LYNC-01\RTC Server Local Group (  )

Adding SVR-LYNC-01\RTC Local Administrators db user in rtcdyn

DataBaseRole.AddMember succeeded for SVR-LYNC-01\RTC Local Administrators (  )

Successfully assigned security to rtcdyn from rtc

xds

CScript.exe //U //Nologo xdssetup.wsf /clean /publisheracct:"RTC Local Administrators" /replicatoracct:"NT SERVICE\REPLICA;RTC Local Config Replicator" /consumeracct:"RTC Server Local Group;RTC Component Local Group;RTC Local Read-only Administrators" /role:replica /verbose

--------------------------------------------------------------------------------------------

Installed SQL Server 2005 Backward Compatibility version is 8.05.2312

Connecting to SQL Server on SVR-LYNC-01\rtclocal

SqlMajorVersion : 10

SqlMinorVersion : 0

SqlBuildNo : 2531

SQL version is acceptable: 10.0.2531.0

Default database data file path is c:\Program Files\Microsoft SQL Server\MSSQL10.RTCLOCAL\MSSQL\Data

Default database data file path is c:\Program Files\Microsoft SQL Server\MSSQL10.RTCLOCAL\MSSQL\Data

Default database log file path is c:\Program Files\Microsoft SQL Server\MSSQL10.RTCLOCAL\MSSQL\Data

(Database xds doesn't exist.)

Creating database xds

    DbFile : PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\xds.mdf
    LogFile: PhysicalName = c:\program files\microsoft sql server\mssql10.rtclocal\mssql\data\xds.ldf

Executing batch dbcommon.sql on xds

Executing resource SetDbRoles on xds

Executing batch xds.sql on xds

Setting replica role

Executing resource SetReplica on xds

Executing resource DbReIndex on xds

Setting security in xds

DbOwner is now sa

NT SERVICE\REPLICA is not a valid SQL login. A SQL login with this name will be created.

NT SERVICE\REPLICA doesn't have a Win32_Account instance

Adding NT SERVICE\REPLICA SQL login

Adding NT SERVICE\REPLICA db user in xds

SVR-LYNC-01\RTC Component Local Group is not a valid SQL login. A SQL login with this name will be created.

SVR-LYNC-01\RTC Component Local Group has a Win32_Account instance of SIDType 4

Adding SVR-LYNC-01\RTC Component Local Group SQL login

Adding SVR-LYNC-01\RTC Component Local Group db user in xds

SVR-LYNC-01\RTC Local Administrators is not a valid SQL login. A SQL login with this name will be created.

SVR-LYNC-01\RTC Local Administrators has a Win32_Account instance of SIDType 4

Adding SVR-LYNC-01\RTC Local Administrators SQL login

Adding SVR-LYNC-01\RTC Local Administrators db user in xds

SVR-LYNC-01\RTC Local Config Replicator is not a valid SQL login. A SQL login with this name will be created.

SVR-LYNC-01\RTC Local Config Replicator has a Win32_Account instance of SIDType 4

Adding SVR-LYNC-01\RTC Local Config Replicator SQL login

Adding SVR-LYNC-01\RTC Local Config Replicator db user in xds

SVR-LYNC-01\RTC Local Read-only Administrators is not a valid SQL login. A SQL login with this name will be created.

SVR-LYNC-01\RTC Local Read-only Administrators has a Win32_Account instance of SIDType 4

Adding SVR-LYNC-01\RTC Local Read-only Administrators SQL login

Adding SVR-LYNC-01\RTC Local Read-only Administrators db user in xds

SVR-LYNC-01\RTC Server Local Group is not a valid SQL login. A SQL login with this name will be created.

SVR-LYNC-01\RTC Server Local Group has a Win32_Account instance of SIDType 4

Adding SVR-LYNC-01\RTC Server Local Group SQL login

Adding SVR-LYNC-01\RTC Server Local Group db user in xds

Adding user SVR-LYNC-01\RTC Local Administrators to role PublisherRole

Adding user SVR-LYNC-01\RTC Server Local Group to role ConsumerRole

Adding user SVR-LYNC-01\RTC Component Local Group to role ConsumerRole

Adding user SVR-LYNC-01\RTC Local Read-only Administrators to role ConsumerRole

Adding user NT SERVICE\REPLICA to role ReplicatorRole

Adding user SVR-LYNC-01\RTC Local Config Replicator to role ReplicatorRole

Adding user NT SERVICE\REPLICA to role PublisherRole

Adding user SVR-LYNC-01\RTC Local Config Replicator to role PublisherRole

Successfully added logins and db users to the specified database roles in xds

Setting Db schema version to 10

Setting Db sproc version to 8

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

There you have it, the scripts and parameters used to install and configure the 3 databases found in the local SQL instance on the front-end server.

image

A word of caution that although these commands can be used to install the databases for the local instance, I wouldn’t recommend manually installing these databases in any situation.  There is too much room for mistakes and as most of us know, we are all prone to errors.

1 comment:

Graham Cropley said...

The problem I was having is the Lync Server Replica Replication Agent wouldn't start. I was getting errors that related to a database issue, (it was previously fine). Using ocslogger and snooper I was able to see that the Replica service was reporting "a schema or sproc version mismatch was detected". Actual = 0.0, Expected = 10.13

But I'm using Lync Server 2013. Your post pointed me in the right direction, but the scripts you mentioned do not seem to exist anymore.

But, Under Program Files > Common Files -> Microsoft Lync Server 2013 -> DBSetup. There is a file called InstallCsDatabase.exe

If you run that you'll get examples of what command line options you can set.

For exmaple,

InstallCsDatabase.exe /Clean /Feature:RtcDatabaseStore /SqlServer:your.fqdn.here\rtclocal

Will rebuild the rtc + rtcdyn databases.

And,

InstallCsDatabase.exe /Clean /Feature:CentralMgmtStore /SqlServer:your.fqdb.here\rtclocal

Will rebuild the xds database.