Siemens PCS 7 V7.1 SP4 SQL Server 2005 Install Error 1603 Fix

David Krause10 min read
HMI / SCADASiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

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.

Engineering note: Error 1603 is a generic Windows Installer (MSI) status code. It does not indicate a single root cause - it is the catch-all returned when 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
Critical: PCS 7 V7.1 SP4 is not released for Windows Server 2008 64-bit. The workaround documented below was field-proven on Windows Server 2003 R2 32-bit. Do not attempt it on a non-released platform; the failure mode is different and the BINN replacement is not a substitute for an unsupported OS.

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:

  1. Stop the running MSSQL$WINCC service via SCM.
  2. Replace sqlservr.exe and sqlos.dll in the BINN folder.
  3. 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.

  1. Confirm OS: winver reports Windows Server 2003 R2, Service Pack 2, build 3790.
  2. Confirm account running setup: member of local Administrators. PCS 7 setup must not be elevated from a domain account with "Deny logon locally".
  3. Confirm no residual SQL instance: sc query | findstr MSSQL returns no rows. If any are present, run Add or Remove Programs → remove all "Microsoft SQL Server 2005" entries, then delete C:\Program Files\Microsoft SQL Server and C:\Documents and Settings\All Users\Application Data\Microsoft\SQL Server.
  4. Confirm Distributed Transaction Coordinator (MSDTC) service is set to Automatic and Started. WinCC's archive writers depend on MSDTC for cross-database transactions.
  5. Confirm 4 GB free on C: and at least 8 GB on the data volume; SQL tempdb defaults to the system drive during install.
  6. Disable antivirus on-access scanning on C:\Program Files\Microsoft SQL Server and the install temp folder for the duration of the setup.
  7. Capture a baseline with msinfo32 /report %temp%\preinstall.nfo for 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 @@VERSION returning 9.00.4035 or 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

  1. 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.
  2. On the donor server, copy the BINN binaries. Open an elevated command prompt:
    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
    Record the hashes. They are your integrity check.
  3. On the target (broken) server, stop the orphan service if it managed to start:
    sc query MSSQL$WINCC
    sc stop  MSSQL$WINCC
    sc query MSDTSSvc100
    Set start mode to Disabled temporarily: sc config MSSQL$WINCC start= disabled.
  4. 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
  5. Copy the donor binaries in place:
    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\"
    Verify the SHA256 against the donor manifest.
  6. 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$WINCC registers as Running. The setup proceeds to the WinCC connectivity components.
  7. 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.

  1. 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 /quiet with verbose logging to C:\kb919357.log.
  2. Full OS re-image. If a previous failed install left orphan registry keys under HKLM\SOFTWARE\Microsoft\Microsoft SQL Server and HKLM\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.
  3. 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.

  1. Service state: sc query MSSQL$WINCC returns STATE: 4 RUNNING; start mode 0 (boot) for servers, 2 (auto) for workstations.
  2. Engine version: from sqlcmd -S .\WINCC → SELECT @@VERSION; returns 9.00.4xxx or later.
  3. WinCC archive test: open WinCC Explorer → Tag Logging → start a runtime archive and confirm rows are written to CC_ALG_xxx tables.
  4. Redundancy check: if a redundant WinCC pair is configured, force a partner failover and confirm archive replay.
  5. 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.
  6. Compare msinfo32 /report %temp%\postinstall.nfo against 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 disks chained off an immutable base.
  • Never apply the PCS 7 setup over an existing partial SQL install. Always uninstall, delete the MSSQL.1 directory, and remove the SQLServer registry 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.

Back to blog