Problem Description and Error Manifest
During the installation of WinCC 7.0 from the SIMATIC PCS 7 V7.1 SP4 DVD onto a Windows Server 2003 R2 host, the SQL Server 2005 setup terminates with the message "The SQL server service failed to start. For more information, see the SQL Server Books Online topics, 'How to: View SQL Server 2005 Setup Log Files' and 'Starting SQL Server manually'." The setup dialog returns control to the technician without rolling back cleanly, leaving a partial install in C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn.
Inspection of SQLSetup[MachineName]_SQL.log in %ProgramFiles%\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files surfaces two decisive entries:
Microsoft SQL Server 2005 - Update 'Hotfix 1546 for SQL Server Database Services 2005 ENU (KB919357)'
could not be installed. Error code 1603.
Microsoft SQL Server 2005 installation failed.
The hotfix referenced, KB919357, is a General Distribution Release (GDR) for the SQL Server 2005 Database Services engine. When its MSI returns 1603 (ERROR_INSTALL_FAILURE), every subsequent component in the WinCC 7.0 chain (WinCC Archive Server, Connectivity Pack, User Archives) fails because they all depend on a healthy SQL instance.
InstallExecuteSequence or InstallUISequence cannot complete. Always read the upstream MSI log line; do not stop at "1603".
Compatibility Requirements
Before any troubleshooting, confirm the target operating system against the official Siemens compatibility list. PCS 7 V7.1 SP4 is released only for the operating systems listed in entry 2334224 on the Siemens Industry Online Support. The supported server platforms are:
| Component | Released Platform | Build / Edition | Notes |
|---|---|---|---|
| PCS 7 Server (OS) | Windows Server 2003 R2 | Standard / Enterprise, 32-bit (x86) | SP2 or later mandatory |
| WinCC 7.0 Runtime | Windows Server 2003 R2 | 32-bit | Embedded in PCS 7 install |
| SQL Server 2005 | Standard Edition SP2 baseline | 32-bit, ENU build 9.00.3042 | SP3 required post-install |
| Workstation OS | Windows XP Professional SP3 | 32-bit | WinCC 7.0 client |
Root Cause Analysis
The failure sequence is deterministic. When the PCS 7 media invokes SQL Server 2005 setup with the WinCC instance configuration, the installer executes the KB919357 GDR MSI as a child action. That MSI performs three sub-actions that must succeed in order:
- Stop the running
MSSQL$WINCCservice via SCM. - Replace
sqlservr.exeandsqlos.dllin the BINN folder. - Restart the service and re-attach the master/model/msdb databases.
On Windows Server 2003 R2 with certain patch levels, the freshly delivered sqlservr.exe from the KB919357 payload carries a IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY flag that conflicts with a non-updated sqlos.dll. The MSI returns 1603, leaves the engine stopped, and the parent setup rolls forward with an unbootable instance. The binaries in the install media are stamped RTM 9.00.1399 for sqlos.dll but a post-RTM build for sqlservr.exe, which is the exact combination Microsoft describes in the SQL Server 2005 release notes as a known-incompatible pairing.
Pre-Installation Verification Checklist
Run the following on the target server before re-attempting the install. Each must pass; do not proceed on partial green.
- Confirm OS:
winverreports Windows Server 2003 R2, Service Pack 2, build 3790. - Confirm account running setup: member of local
Administrators. PCS 7 setup must not be elevated from a domain account with "Deny logon locally". - Confirm no residual SQL instance:
sc query | findstr MSSQLreturns no rows. If any are present, runAdd or Remove Programs→ remove all "Microsoft SQL Server 2005" entries, then deleteC:\Program Files\Microsoft SQL ServerandC:\Documents and Settings\All Users\Application Data\Microsoft\SQL Server. - Confirm
Distributed Transaction Coordinator (MSDTC)service is set to Automatic and Started. WinCC's archive writers depend on MSDTC for cross-database transactions. - Confirm 4 GB free on
C:and at least 8 GB on the data volume; SQL tempdb defaults to the system drive during install. - Disable antivirus on-access scanning on
C:\Program Files\Microsoft SQL Serverand the install temp folder for the duration of the setup. - Capture a baseline with
msinfo32 /report %temp%\preinstall.nfofor after-action comparison.
Resolution: BINN File Replacement Procedure
The field-proven remedy replaces the two engine binaries with a known-good pair from an already-patched SQL Server 2005 Standard Edition SP3 instance, then resumes setup. This is not a permanent fix - the goal is to let the install complete, then immediately install SP3 to bring the engine to a coherent build level.
Prerequisites
- A donor server with SQL Server 2005 Standard Edition SP3 32-bit ENU running and confirmed healthy. Verify with
SELECT @@VERSIONreturning9.00.4035or later in the 9.00.4xxx GDR range. - Local Administrator rights on both donor and target.
- External USB media or a mapped network share writable by both machines. Format: NTFS, large file support enabled.
Step-by-Step Procedure
- Stop the install cleanly on the error dialog. Do not click Cancel; leave the Retry / Cancel dialog open. If the parent setup was closed, restart it - the SQL sub-install will re-prompt at the same point.
-
On the donor server, copy the BINN binaries. Open an elevated command prompt:
Record the hashes. They are your integrity check.cd /d "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn" cryptgen.exe stop copy /Y sqlservr.exe E:\pcs7_recovery\ copy /Y sqlos.dll E:\pcs7_recovery\ certutil -hashfile E:\pcs7_recovery\sqlservr.exe SHA256 > E:\pcs7_recovery\sqlservr.sha256 certutil -hashfile E:\pcs7_recovery\sqlos.dll SHA256 > E:\pcs7_recovery\sqlos.sha256 -
On the target (broken) server, stop the orphan service if it managed to start:
Set start mode to Disabled temporarily:sc query MSSQL$WINCC sc stop MSSQL$WINCC sc query MSDTSSvc100sc config MSSQL$WINCC start= disabled. -
Back up the broken binaries (do not skip - rollback path):
cd /d "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn" ren sqlservr.exe sqlservr.exe.broken ren sqlos.dll sqlos.dll.broken -
Copy the donor binaries in place:
Verify the SHA256 against the donor manifest.copy /Y \\DONOR\pcs7_recovery\sqlservr.exe "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\" copy /Y \\DONOR\pcs7_recovery\sqlos.dll "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\" -
Return to the setup dialog and click Retry. The setup engine re-invokes the post-install action. With coherent binaries in place, the service starts and
MSSQL$WINCCregisters as Running. The setup proceeds to the WinCC connectivity components. - Do not reboot before installing SQL Server 2005 SP3. The instance is now running on donor binaries; a reboot is safe but the patch must be applied to lock in consistency:
\<media>\SQLServer2005SP3-KB955706-x86-ENU.exe /quiet /action=patch /instancename=WINCC
After SP3 completes, SELECT @@VERSION must return a build >= 9.00.4035. Delete the .broken backup files only after the install passes a full archive restart cycle.
SQL Server 2005 Setup Log Forensics
When the install fails, always work the log tree in this order. Each file answers a different question.
| Log file | Location | Use to answer |
|---|---|---|
SQLSetup*_SQL.log |
%ProgramFiles%\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files |
Top-level install result, version of binaries used |
SQLSetup*_Core(local).log |
Same directory | MSI execution chain, exact 1603 originating action |
Hotfix*_SQL.log |
Same directory, GDR subfolder | KB919357 patcher specific failure - read first when 1603 mentions a hotfix |
SUMMARY.txt |
Same directory, root | Exit code summary across all components |
sqlservr ErrorLog |
...\MSSQL.1\MSSQL\LOG\ERRORLOG |
Why the engine stopped after the failed patch |
| Windows Application Event Log | eventvwr.msc |
MSI 1001 / 11935 events with correlation to the failed action |
Search syntax for quick triage:
findstr /i /c:"1603" /c:"KB919357" /c:"sqlservr.exe" "C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files\*.log"
Alternative Remediation Paths
If the donor-binary method is not an option (isolated network, no second server), the following alternatives have also resolved the 1603 in field deployments.
-
Pre-apply the standalone KB919357 package from a separately downloaded Microsoft update cab, then rerun the PCS 7 setup so that its internal SQL install sees the instance already at the post-GDR level. Use
Hotfix.exe /quietwith verbose logging toC:\kb919357.log. -
Full OS re-image. If a previous failed install left orphan registry keys under
HKLM\SOFTWARE\Microsoft\Microsoft SQL ServerandHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, the cleanest resolution is a saved image restore. See Remove a SQL Server instance for the canonical cleanup sequence when a re-image is not possible. - Repair via Add or Remove Programs with the original SQL install media mounted, then immediately apply SP3. This is the lowest-risk option if the engine itself is functional and only the post-install hotfix failed.
Post-Installation Verification
After the PCS 7 install completes and SP3 is applied, run this checklist before handing the server to operations.
- Service state:
sc query MSSQL$WINCCreturnsSTATE: 4 RUNNING; start mode0(boot) for servers,2(auto) for workstations. - Engine version: from
sqlcmd -S .\WINCC→SELECT @@VERSION;returns9.00.4xxxor later. - WinCC archive test: open WinCC Explorer → Tag Logging → start a runtime archive and confirm rows are written to
CC_ALG_xxxtables. - Redundancy check: if a redundant WinCC pair is configured, force a partner failover and confirm archive replay.
- Backup baseline: capture a Windows Server Backup job and store offline. The recovery procedure above depends on having a known-good image to fall back to.
- Compare
msinfo32 /report %temp%\postinstall.nfoagainst the pre-install baseline. Discrepancies outside the SQL and WinCC entries must be investigated.
Prevention and Process Hardening
Document the following in your site acceptance procedure so the issue does not re-occur during the next migration.
- Maintain a golden donor SQL Server 2005 SP3 32-bit ENU image. Re-snapshot it once a quarter to keep the BINN binaries current against the latest GDR roll-up. Many sites have used a Hyper-V VM with
differencing diskschained off an immutable base. - Never apply the PCS 7 setup over an existing partial SQL install. Always uninstall, delete the
MSSQL.1directory, and remove theSQLServerregistry key before retrying. - Stage the install on a non-production box first when patching the master image, and capture
SELECT @@VERSION, SERVERPROPERTY('ProductLevel')in the site acceptance report. - Run a periodic review against the Siemens compatibility list 2334224 whenever a Windows update is being scheduled.
- Keep a printed runbook of the BINN replacement procedure in the engineering cabinet; this is the kind of recovery that must work in a maintenance window with no internet access.
Troubleshooting Matrix
| Symptom | Log Evidence | Likely Cause | Corrective Action |
|---|---|---|---|
| Setup halts with 1603 during KB919357 |
Hotfix*_SQL.log shows MSI 1603 on sqlservr.exe
|
Mismatched sqlservr/sqlos pair from install media | Apply BINN replacement procedure |
| 1603 immediately at setup launch |
SUMMARY.txt exit code 0x80070643 |
Pre-existing partial SQL install / registry orphans | Full uninstall + manual registry cleanup |
| Service starts then stops within 30 s | ERRORLOG: 9003, is_fatal | Corrupt master.mdf from interrupted install | Restore from backup; re-image if no backup |
| Install completes, WinCC cannot connect | WinCC log: cannot open database | TDS port 1433 blocked, MSDTC not started | Start MSDTC, open Windows Firewall port 1433 |
| Setup fails on Windows Server 2008 64-bit | Setup log: not supported on this platform | OS not on compatibility list 2334224 | Re-target to Windows Server 2003 R2 32-bit |
| SP3 patcher fails with 1642 | SP3 log: language mismatch | Donor binaries different locale (e.g. DEU vs ENU) | Re-pull binaries from an ENU donor only |
Frequently Asked Questions
Is the BINN file replacement procedure supported by Siemens or Microsoft?
No. It is an undocumented field workaround that exchanges two binaries from a healthy SQL Server 2005 SP3 instance to break the install dead-lock caused by the KB919357 GDR. The instance must be brought to SP3 immediately after, and the broken originals retained until a clean re-image is confirmed.
Will this fix work on Windows Server 2008 R2 64-bit?
No. PCS 7 V7.1 SP4 is not released for Windows Server 2008 64-bit per Siemens entry 2334224, and the WINCC instance itself expects 32-bit SQL Server 2005. The supported platform is Windows Server 2003 R2 32-bit with SP2 or later. Attempting the install on an unsupported OS will fail differently and the BINN replacement will not save it.
What is KB919357 and why does it fail with 1603?
KB919357 is a General Distribution Release for the SQL Server 2005 Database Services engine. It ships an updated sqlservr.exe that, on certain Windows Server 2003 R2 patch levels, is incompatible with the RTM sqlos.dll the PCS 7 install media deploys. The MSI returns 1603 (ERROR_INSTALL_FAILURE) when the engine restart validation step cannot complete. Reading the Hotfix log in 90\Setup Bootstrap\LOG\Files confirms this is the exact failure point.
Can I just install SQL Server 2005 manually before running the PCS 7 setup?
Yes, and it is the cleanest preventative path. Install SQL Server 2005 Standard Edition 32-bit ENU to SP2 baseline, apply KB919357 standalone, upgrade to SP3, then run the PCS 7 install and select the existing instance instead of letting it create one. This avoids the media-bundled hotfix path entirely and is the recommended approach for new deployments.
After the install, what is the minimum SQL Server 2005 build level I should leave the system at?
Build 9.00.4035 or later, with SP3 applied. Verify with SELECT @@VERSION returning a value starting with Microsoft SQL Server 2005 - 9.00.4. Anything below the 9.00.4xxx GDR range is vulnerable to the original KB919357 incompatibility and to the MS09-004 (KB960089) and MS09-062 (KB971644) advisories.