martedì 8 febbraio 2011

Restoring Windows XP backup + Microsoft SQL Server (Express) 2005

When restoring this backup on a pre-existing Windows XP machine, a malfunctioning in the Microsoft SQL Server 2005 occurred.
These are the problems that I encountered.

1) When trying to connect to the DB ("Microsoft SQL Server Management Studio Express"), this error occurs:

TITLE: Connect to Server
------------------------------

Cannot connect to PCG5116\SQLEXPRESS.

------------------------------
ADDITIONAL INFORMATION:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) (Microsoft SQL Server, Error: -1)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=-1&LinkId=20476


2) On the other hand, if I try to open "SQL Server Configuration Manager", I get this error:

Cannot connect to WMI provider. You do not have permission or the server is unreachable. Note that you can only manage SQL Server 2005 servers with SQL Server Configuration Manager.
Invalid class [0x80041010]

3) I also tried to access the DB configuration from the "SQL Server 2005 Surface Area Configuration", clicking on one of the two possible choices to chow the configuration, and what I got was:

TITLE: Surface Area Configuration
------------------------------

Computer localhost does not exist on the network, or the computer cannot be configured remotely. Verify that the remote computer has the required Windows Management Instrumentation components and then try again. (SQLSAC)

------------------------------
ADDITIONAL INFORMATION:

An exception occurred in SMO while trying to manage a service. (Microsoft.SqlServer.Smo)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.InnerWmiException&LinkId=20476

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

Failed to retrieve data for this request. (Microsoft.SqlServer.SmoEnum)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476

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

Invalid class (System.Management)

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


In addition, going in Windows Event Viewer (Control Panel), for every attempt to access the DB or its configuration, I got this error entry:
Event Type: Error
Event Source: MSSQL$SQLEXPRESS
Event Category: (2)
Event ID: 17058
Date: 10-12-2010
Time: 18:29:35
User: N/A
Computer: PCG5116
Description:
initerrlog: Could not open error log file 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG'. Operating system error = 5(Access is denied.).

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Data:
0000: a2 42 00 00 10 00 00 00 ¢B......
0008: 13 00 00 00 50 00 43 00 ....P.C.
0010: 47 00 35 00 31 00 31 00 G.5.1.1.
0018: 36 00 5c 00 53 00 51 00 6.\.S.Q.
0020: 4c 00 45 00 58 00 50 00 L.E.X.P.
0028: 52 00 45 00 53 00 53 00 R.E.S.S.
0030: 00 00 00 00 00 00 ......

It then seems that there is some problem with the access rights on the SQL Server (its services and files)
Then I noticed that the SQL Server service (SQLExpress) is stopped (in Control Panel -> Administrative Tools -> Services). It cannot start because:
Windows could not start the SQL Server (SQLEXPRESS) on Local Computer. For more information, review the System Event Log. If this is a non-Microsoft service, contact the vendor, and refer to service-specific error code 17058.
In the same window, in Log On tab I noticed that there the configuration "Log on as: This account -> AUTHORITY\NetworkService".


SOLUTION: If changing to Log on as: Local System Account, the service starts without any problem. And anyone can access from the net the SQL Server too!!! :)

Part of the solution (probably): restore the WMI repository, with this script

net stop winmgmt /Y
c:
cd %systemroot%\system32\wbem
rd /S /Q repository


regsvr32 /s %systemroot%\system32\scecli.dll
regsvr32 /s %systemroot%\system32\userenv.dll


mofcomp cimwin32.mof
mofcomp cimwin32.mfl
mofcomp rsop.mof
mofcomp rsop.mfl
for /f %%s in ('dir /b /s *.dll') do regsvr32 /s %%s
for /f %%s in ('dir /b *.mof') do mofcomp %%s
for /f %%s in ('dir /b *.mfl') do mofcomp %%s
echo DONE reboot
pause

Nessun commento: