Friday, 23 September 2011

Unable to bring a Named Instance of SQL server 2005 Online in Cluster

The problem is that we have a Named instance of SQL Server 2005 in a 2 node cluster. While trying to bring the SQL Services online we get these error messages in the Application Event Log.

Application Event Log: 
Event Type:       Error
Event Source:    MSSQL$SQL2k5
Event Category: (3)
Event ID:          19019
Date:                7/17/2009
Time:                7:12:00 AM
User:                N/A
Computer:         BLRS2R17-3
Description:
[sqsrvres] ODBC sqldriverconnect failed

Event Type:       Error
Event Source:    MSSQL$SQL2k5
Event Category: (3)
Event ID:          19019
Date:                7/17/2009
Time:                7:12:00 AM
User:                N/A
Computer:         BLRS2R17-3
Description:
[sqsrvres] checkODBCConnectError: sqlstate = 08001; native error = ffffffff; message = [Microsoft][SQL Native Client]SQL Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF].

Event Type:       Error
Event Source:    MSSQL$SQL2k5
Event Category: (3)
Event ID:          19019
Date:                7/17/2009
Time:                7:12:00 AM
User:                N/A
Computer:         BLRS2R17-3
Description:
[sqsrvres] ODBC sqldriverconnect failed

Event Type:       Error
Event Source:    MSSQL$SQL2k5
Event Category: (3)
Event ID:          19019
Date:                7/17/2009
Time:                7:12:00 AM
User:                N/A
Computer:         BLRS2R17-3
Description:
[sqsrvres] checkODBCConnectError: sqlstate = HYT00; native error = 0; message = [Microsoft][SQL Native Client]Login timeout expired


Cause:
The cluster service is not able to Connect with Clustered Named instance of SQL Server. SQL Browser even though running is not actually listening for requests.  

Note: The SQL Server Browser program runs as a Windows service. SQL Server Browser listens for incoming requests for Microsoft SQL Server resources and provides information about SQL Server instances installed on the computer.

Resolution:

We restarted the SQL Server Browser Service on both the nodes and after that SQL resource came online in cluster. :)



Issue with SSRS 2005 while migrating to New server and its Resolution

We had an issue where reporting services was working fine but reports are not online..we tried connecting the reporting services and database engine using SSMS but no issues.. haven't seen any kind of login failure/any clue of what could have caused this issue in reports log files..

Current setup of reporting server(Server A):

1. OS: windows 2003 R2
2. Reporting Services/SQL Server: SQL Server 2005 SP3

It seems to be like .Net framework issue/asp.net issue..so they tried to uninstall the .Net framework but IIS also needs to be uninstalled..hence we recommended below steps..
1.       Uninstall IIS v6.0  - SA
2.       Uninstall .Net framework 2.0.50727 and other .Net Framework, then reboot box - SA
3.       Reinstall .Net Framework 2.0.50727 and IIS v6.0 - SA
4.       Configure SQL web-based reporting in IIS v6.0- DBA

SA had some troubles uninstalling the .Ne framework and as usual SA screwed up the server which results in reporting services not coming online..finally we have to rebuilt the server to migrate the reports to the new server..{{ business team is jumping on as usual as they want to look at the month end reports }}

IMPORTANT: Always make sure to backup Encryption key in reporting services before migration..

In my case we forget to backup this key before uninstalling .Net framework and after screwed up uninstallation, reporting services was not coming online, so there is no way we can backup encryption key using RSKeyMgmt or Reporting services config. File name will be extension snk.

we performed the below steps to bring the reporting services back online..

1. Built a new server named Server B with windows 2008 R2 SP1
2. if you install IIS on windows 2008 R2, by default it install IIS 7.5 version.. There is option to enable the IIS 6.0 compatibility to make sql server 2005 RS works fine. sql server 2005 reporting services doesn't recognize IIS 7.5.

Here is the link to install IIS 6.0 compatibility and register ASP.NET in IIS

http://geekswithblogs.net/jimhlavin/archive/2008/04/01/installing-sql-server-2005-reporting-services-on-windows-server-2008.aspx

3. Install sql server 2005 SP1 database engine and reporting services on Server B. Make sure to select install reporting services with no default settings..because this reporting services can be configured later using RS config.. My company uses only default settings, so it doesn't matter..if you go with configure default settings, reportserver and reportservertempdb will be created in sql server 2005.

4. Once installation is successful, go with configuring the Reporting services..
Follow this link to do.. also make sure to take snapshot of your RSconfigs in Server B and enter the data accordingly..

http://www.mssqltips.com/tip.asp?tip=1453

5. Once you configure this at the step Database setup, click on New that way reportserver and reportservertempdb database will be created in sql server 2005

6. Make sure to take the backup of this freshly created reportserver and reportservertempdb, which may be needed if we want to rever to fresh configs.. you can create fresh db using Database setup also..

7. Once you configure all settings now do initialization in RSConfig for Server B that will create entry in ReportServer.Keys table with ServerB as machine name..backup this row..

you will see application pools, reportserver, reports default website also created in IIS. IIS/ASP.NET should use only NetworkService account.. connection to reporting services/db can use sql server domain account..

8. Stop the reporting services on Server B

9. Now restore the backed up Server A - reportserver and reportservertempdb(optional) on Server B with replace option that way all reports and key of the old servers will be restored..

10. Delete the row entry for old machine name(Server A) in reportserce.Keys table

9. Now insert the backed up rows from step 7 in reportserver.keys table

10. Start the reporting services and initialization will show only one entry..

11. Open IIS management console 6.0, then browse reports you can see all reports but if you run,  it will fail with error saying either to restore the backed up encryption key or delete the encryption contents..

12. we don't have encryption key available, so we have deleted the contents of encryption key using RSConfig tool. This will delete only connection string/credentials declared in data source(data source name won't be deleted) or any subscriptions, reports(rss), permissions, models won't be affected at all..that's good..

13. Update all data sources with appropriate connection string/credentials and you are all set..

Now all the reports were fine without any issues. :)

In case if you have latest encryption key backup(snk file) available, then restore it in step-12, then you don't have edit any data sources..






Thursday, 10 February 2011

Check what are the SQL Components installed on the Server using T-SQL

One day I was ask to see if what are the SQL components installed on the server. It is very easy to check it from SQL Configuration manager if we are checking it for 1 or 2 SQL servers. But in my case my manager gave me a list of 200 SQL servers and asked me to provide the list of components installed and the Version of SQL Servers.

So after some manual work to collect this information I thought that maybe there could be a better way. So I wrote this script to help out. I am providing here T-SQL script which I used in VB Script to get the asked information in one shot for all the servers.

Here is how this script could help you
1. Determine the status of SQL server service(s) - running or not
2. Determine if the service is installed or not
I have executed it on the following servers
1. 32 bit and 64 bit
2. SQL 2005 with SP3 - Stand alone and on multiple instances
3. SQL 2008 with SP1 and SP2 - Stand alone and on multiple instances
4. SQL 2008 R2 latest patches
Hope you find it useful.
T-SQL Script:


/*------------------------------------------*/
/* SQL Server Components Check Utility */
/*------------------------------------------*/
/*------------------------------------------*/
SET NOCOUNT ON
/* ------------------------------------------ Inital Setup -----------------------------------------------------*/
CREATE TABLE #RegResult
(
ResultValue NVARCHAR(4)
)
CREATE TABLE #ServicesServiceStatus /*Create temp tables*/
(
RowID INT IDENTITY(1,1)
,ServerName NVARCHAR(128)
,ServiceName NVARCHAR(128)
,ServiceStatus varchar(128)
,StatusDateTime DATETIME DEFAULT (GETDATE())
,PhysicalSrverName NVARCHAR(128)
)
DECLARE
@ChkInstanceName nvarchar(128) /*Stores SQL Instance Name*/
,@ChkSrvName nvarchar(128) /*Stores Server Name*/
,@TrueSrvName nvarchar(128) /*Stores where code name needed */
,@SQLSrv NVARCHAR(128) /*Stores server name*/
,@PhysicalSrvName NVARCHAR(128) /*Stores physical name*/
,@FTS nvarchar(128) /*Stores Full Text Search Service name*/
,@RS nvarchar(128) /*Stores Reporting Service name*/
,@SQLAgent NVARCHAR(128) /*Stores SQL Agent Service name*/
,@OLAP nvarchar(128) /*Stores Analysis Service name*/
,@REGKEY NVARCHAR(128) /*Stores Registry Key information*/
SET @PhysicalSrvName = CAST(SERVERPROPERTY('MachineName') AS VARCHAR(128))
SET @ChkSrvName = CAST(SERVERPROPERTY('INSTANCENAME') AS VARCHAR(128))
SET @ChkInstanceName = @@serverName
IF @ChkSrvName IS NULL /*Detect default or named instance*/
BEGIN
SET @TrueSrvName = 'MSQLSERVER'
SELECT @OLAP = 'MSSQLServerOLAPService' /*Setting up proper service name*/
SELECT @FTS = 'MSFTESQL'
SELECT @RS = 'ReportServer'
SELECT @SQLAgent = 'SQLSERVERAGENT'
SELECT @SQLSrv = 'MSSQLSERVER'
END
ELSE
BEGIN
SET @TrueSrvName = CAST(SERVERPROPERTY('INSTANCENAME') AS VARCHAR(128))
SET @SQLSrv = '$'+@ChkSrvName
SELECT @OLAP = 'MSOLAP' + @SQLSrv /*Setting up proper service name*/
SELECT @FTS = 'MSFTESQL' + @SQLSrv
SELECT @RS = 'ReportServer' + @SQLSrv
SELECT @SQLAgent = 'SQLAgent' + @SQLSrv
SELECT @SQLSrv = 'MSSQL' + @SQLSrv
END
/* ---------------------------------- SQL Server Service Section ----------------------------------------------*/
SET @REGKEY = 'System\CurrentControlSet\Services\'+@SQLSrv
INSERT #RegResult ( ResultValue ) EXEC master.sys.xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key=@REGKEY
IF (SELECT ResultValue FROM #RegResult) = 1
BEGIN
INSERT #ServicesServiceStatus (ServiceStatus) /*Detecting staus of SQL Sever service*/
EXEC xp_servicecontrol N'QUERYSTATE',@SQLSrv
UPDATE #ServicesServiceStatus set ServiceName = 'MS SQL Server Service' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
ELSE
BEGIN
INSERT INTO #ServicesServiceStatus (ServiceStatus) VALUES ('NOT INSTALLED')
UPDATE #ServicesServiceStatus set ServiceName = 'MS SQL Server Service' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
/* ---------------------------------- SQL Server Agent Service Section -----------------------------------------*/
SET @REGKEY = 'System\CurrentControlSet\Services\'+@SQLAgent
INSERT #RegResult ( ResultValue ) EXEC master.sys.xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key=@REGKEY
IF (SELECT ResultValue FROM #RegResult) = 1
BEGIN
INSERT #ServicesServiceStatus (ServiceStatus) /*Detecting staus of SQL Agent service*/
EXEC xp_servicecontrol N'QUERYSTATE',@SQLAgent
UPDATE #ServicesServiceStatus set ServiceName = 'SQL Server Agent Service' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
ELSE
BEGIN
INSERT INTO #ServicesServiceStatus (ServiceStatus) VALUES ('NOT INSTALLED')
UPDATE #ServicesServiceStatus set ServiceName = 'SQL Server Agent Service' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
/* ---------------------------------- SQL Browser Service Section ----------------------------------------------*/
SET @REGKEY = 'System\CurrentControlSet\Services\SQLBrowser'
INSERT #RegResult ( ResultValue ) EXEC master.sys.xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key=@REGKEY
IF (SELECT ResultValue FROM #RegResult) = 1
BEGIN
INSERT #ServicesServiceStatus (ServiceStatus) /*Detecting staus of SQL Browser Service*/
EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',N'sqlbrowser'
UPDATE #ServicesServiceStatus set ServiceName = 'SQL Browser Service - Instance Independent' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
ELSE
BEGIN
INSERT INTO #ServicesServiceStatus (ServiceStatus) VALUES ('NOT INSTALLED')
UPDATE #ServicesServiceStatus set ServiceName = 'SQL Browser Service - Instance Independent' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
/* ---------------------------------- Integration Service Section ----------------------------------------------*/
SET @REGKEY = 'System\CurrentControlSet\Services\MsDtsServer'
INSERT #RegResult ( ResultValue ) EXEC master.sys.xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key=@REGKEY
IF (SELECT ResultValue FROM #RegResult) = 1
BEGIN
INSERT #ServicesServiceStatus (ServiceStatus) /*Detecting staus of Intergration Service*/
EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',N'MsDtsServer'
UPDATE #ServicesServiceStatus set ServiceName = 'Intergration Service - Instance Independent' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
ELSE
BEGIN
INSERT INTO #ServicesServiceStatus (ServiceStatus) VALUES ('NOT INSTALLED')
UPDATE #ServicesServiceStatus set ServiceName = 'Intergration Service - Instance Independent' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
/* ---------------------------------- Reporting Service Section ------------------------------------------------*/
SET @REGKEY = 'System\CurrentControlSet\Services\'+@RS
INSERT #RegResult ( ResultValue ) EXEC master.sys.xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key=@REGKEY
IF (SELECT ResultValue FROM #RegResult) = 1
BEGIN
INSERT #ServicesServiceStatus (ServiceStatus) /*Detecting staus of Reporting service*/
EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',@RS
UPDATE #ServicesServiceStatus set ServiceName = 'Reporting Service' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
ELSE
BEGIN
INSERT INTO #ServicesServiceStatus (ServiceStatus) VALUES ('NOT INSTALLED')
UPDATE #ServicesServiceStatus set ServiceName = 'Reporting Service' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
/* ---------------------------------- Analysis Service Section -------------------------------------------------*/
IF @ChkSrvName IS NULL /*Detect default or named instance*/
BEGIN
SET @OLAP = 'MSSQLServerOLAPService'
END
ELSE
BEGIN
SET @OLAP = 'MSOLAP'+'$'+@ChkSrvName
SET @REGKEY = 'System\CurrentControlSet\Services\'+@OLAP
END
INSERT #RegResult ( ResultValue ) EXEC master.sys.xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key=@REGKEY
IF (SELECT ResultValue FROM #RegResult) = 1
BEGIN
INSERT #ServicesServiceStatus (ServiceStatus) /*Detecting staus of Analysis service*/
EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',@OLAP
UPDATE #ServicesServiceStatus set ServiceName = 'Analysis Services' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
ELSE
BEGIN
INSERT INTO #ServicesServiceStatus (ServiceStatus) VALUES ('NOT INSTALLED')
UPDATE #ServicesServiceStatus set ServiceName = 'Analysis Services' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
/* ---------------------------------- Full Text Search Service Section -----------------------------------------*/
SET @REGKEY = 'System\CurrentControlSet\Services\'+@FTS
INSERT #RegResult ( ResultValue ) EXEC master.sys.xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key=@REGKEY
IF (SELECT ResultValue FROM #RegResult) = 1
BEGIN
INSERT #ServicesServiceStatus (ServiceStatus) /*Detecting staus of Full Text Search service*/
EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',@FTS
UPDATE #ServicesServiceStatus set ServiceName = 'Full Text Search Service' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
ELSE
BEGIN
INSERT INTO #ServicesServiceStatus (ServiceStatus) VALUES ('NOT INSTALLED')
UPDATE #ServicesServiceStatus set ServiceName = 'Full Text Search Service' where RowID = @@identity
UPDATE #ServicesServiceStatus set ServerName = @TrueSrvName where RowID = @@identity
UPDATE #ServicesServiceStatus set PhysicalSrverName = @PhysicalSrvName where RowID = @@identity
TRUNCATE TABLE #RegResult
END
/* -------------------------------------------------------------------------------------------------------------*/
SELECT PhysicalSrverName AS 'Physical Server Name' /*Display finding*/
,ServerName AS 'SQL Instance Name'
,ServiceName AS 'SQL Server Services'
,ServiceStatus AS 'Current Service Service Status'
,StatusDateTime AS 'Date/Time Service Status Checked'
FROM #ServicesServiceStatus
/* -------------------------------------------------------------------------------------------------------------*/
DROP TABLE #ServicesServiceStatus /*Perform cleanup*/
DROP TABLE #RegResult

Saturday, 24 January 2009

SQL 2005 Cluster Installation on Mounted Drives

I got a chance to install SQL 2005 in Cluster environment over Mounted Drives. It was a good experience and great learning for me. I am sharing the important things here which we have to keep in mind before starting this activity.

Here is little bit difference in Installation on Normal Drives and Mounted Drives. Because these are LPA servers, you cannot add the accounts to the NT admin group - if they get added we need to get CSS help to remove them so this is a very important thing.
‎‎
Because of that the permissions need to be set manually on the mounted drives. As they are mount points it can only be done through Disk Manager, not in the file explore and install to the mount points - not a normal install.
‎‎
So instead of fixed drives like C, D and E, you have to install bits on Mounted Drives.
‎‎
At any rate, if you do the permissions steps correctly then installation will go pretty smooth.

Prerequisites for Cluster installation of SQL 2005 over Mounted Drives:

Prerequisite 1: Copy the SQL bits on fixed drive.
Prerequisite 2: Add the Service Account in Security Policy on all the nodes.
‎‎
Below are the lists of entry of Security Policies where we need to add the Service Account before installation:

1. Act as part of the Operating System
2. Adjust Memory quotas for a process
3. Allow log on through terminal Services
4. Backup files and directories
5. Bypass traverse checking
6. Debug programs
7. Increase scheduling priority
8. Lock pages in memory
9. Log on as a batch job
10. Log on as service
11. Manage auditing and security log
12. Replace a process level token
13. Restore files and directories

Prerequisite 3: Grant permission to the Service Account manually on mounted drives through Disk Manager. Don’t use file explore.
Prerequisite 4: Stop MOM, e-Trust and SNMP Services on all nodes.Prerequisite 5: Change NON SIGINGING DRIVE value to 0 on all nodes. (Registry value)Prerequisite 6: Change the environment variable value to C:\TEMP (My Computer -> Properties -> Advance -> Environment Variable) on all nodes.
Prerequisite 7: TS into Active Node using your account. (Check No one logged on passive nodes)
Installation Steps:
Step 1:
Run Step.exe from SQL Bits. From here installation will go as per normal installation. Always use mounted drives for DATA file path.
Step 2: Choose the components whatever you want to install like Normal installation.
Step 3: Use the SQL and Agent service account.Step 4: Provide the Domain Group name under which service account exists.
Step 5: Read the information which comes on every dialog box and act accordingly till Finish Button.
Hope these steps will help you a lot whenever you will get a chance to install SQL 2005 over mounted drives.

Sunday, 4 January 2009

Delete Entry from Services.msc using command or registry key

Create or Delete A Service in Windows:
Services are added from the Command Prompt. You need to know the actual service name as opposed to what Microsoft calls the Display Name. For example, if you wanted to create or delete the Help and Support service, the name used at the Command Prompt would be "helpsvc" rather than the Display Name of "Help and Support". The actual service name can be obtained by typing services.msc in Run on the Start Menu and then double clicking the Display Name of the service. Once you know the name;
To Create A Service
Start Run and type cmd in the Open: line. Click OK.
Type: sc create Service_Name
Reboot the system

To Delete A Service
Start Run and type cmd in the Open: line. Click OK.
Type: sc delete Service_Name
Reboot the system

If you prefer to work in the registry rather than through the command prompt to delete services:
Click Start Run and type regedit in the Open: line. Click OK.
Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Scroll down the left pane, locate the service name, right click it and select Delete.
Reboot the system
Note: Take the registry backup before removing anything from registry.
Ref URL: http://www.theeldergeek.com/add_a_service_in_windows_xp.htm

Saturday, 27 December 2008

Manually Uninstalling SLS

Normally in cluster, we need to manually uninstall the SQL LiteSpeed.

Here the steps for uninstalling the SLS manually:

Delete the following XPs from within master
xp_file_search
xp_sqllitespeed_version
xp_sqllitespeed_licenseinfo

Use the following query for removing the XPs:

if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[xp_sqllitespeed_licenseinfo]') and OBJECTPROPERTY(id,N'IsExtendedProc') = 1)exec sp_dropextendedproc N'[dbo].[xp_sqllitespeed_licenseinfo]'
if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[xp_sqllitespeed_version]') and OBJECTPROPERTY(id,N'IsExtendedProc') = 1)exec sp_dropextendedproc N'[dbo].[xp_sqllitespeed_version]'

if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[ xp_file_search]') and OBJECTPROPERTY(id,N'IsExtendedProc') = 1)exec sp_dropextendedproc N'[dbo].[xp_file_search]'

Remove the following registry entries:
HKLM\SOFTWARE\Imceda
HKCU\Software\Imceda
HKCR\CLSID\{FAB7BBA2…}

Delete the following DLLs from SQL Binn folder:

xpSLS.dll
xpSLSImportStats.dll
xpLogShipping.dll

Delete all parent/child Imceda directories.

Binary files are removed from the directories ($\Imceda\LiteSpeed\SQL Server\Engine\Logs). Any of those parent\child directories should be deleted from all nodes in the cluster.

Tips during the installation of SLS on SQL Cluster:

When installing, installation should be performed from the Active node in the cluster to a drive that is unshared, but common to all nodes. E.g., D: drive (physical not virtual). Also be sure that “Remote Registry” service (svchost.exe) is running to help propagate bits to the passive node\nodes. SLS is cluster aware and should get installed on both nodes.



During phase 2 of installation (Instance Configuration: XP Installation), please be sure to choose ‘Do Nothing’ under Install Action for each instance that is active, and is not on the node(Virtual server) currently undergoing installation. Please find the screen shot below:

Here are the Xps associated with corresponding DLLs in SQL LiteSpeed:

Ø xpSLS.dll
xp_backup_database
xp_backup_log
xp_delete_tsmfile
xp_file_search
xp_memory_size
xp_objectrecovery
xp_objectrecovery_viewcontents
xp_rebind_tsmmc
xp_restore_checkpassword
xp_restore_database
xp_restore_filelistonly
xp_restore_headeronly
xp_restore_log
xp_restore_setinfo
xp_restore_verifyonly
xp_sls_bcp
xp_slsAddRegMultiString
xp_slsReadProgress
xp_slsRemoveRegMultiString
xp_sqllitespeed_debug
xp_sqllitespeed_licenseinfo
xp_sqllitespeed_version
xp_view_tsmcontents
xp_view_tsmfilespaces
xp_view_tsmmc


Ø xpLogShipping.dll'
xp_slssqlmaint'

Ø xpSLSImportStats.dll

xp_litespeed_importstats
xp_litespeed_readlogs

MSDB database has been corrupted in SQL2000

We now proceed further with following steps:
1. Restart the SQL server using trace flag 3608 then detach msdb databse. (-T3608)2. Navigating to the directory 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn' and doing the following: start sqlservr.exe -c -T3608
3. Move or rename the damaged msdb files (msdbdata.mdf and msdblog.ldf in the 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data' directory)
4. Run the instmsdb.sql script in the 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Install' directory
Shutdown and restart the server without the 3608 trace flag