Monday, 2 March 2015

 Moving the WSUS 4 Database

"If it wasn’t for that last minute, nothing would ever get done."

Why might you want to do this in the first place? Having a database on the system drive is generally a bad idea. WSUS uses the Windows Internal Database which is located in the Windows folder. Having a database on a separate volume is generally a good idea, if only for performance reasons. 


1) Designate a new location for the database. Perhaps SSD or NAS based storage.

2) Like any WSUS administrator sooner or later realises, I had been given a database but no means to administer it.  I downloaded and installed the SQL Express Management Studio (SQL Server 2012 SP2, SQLManagementStudio_x64_ENU.exe)

3) Stop the WSUS service (services.msc)

4) Locate your WSUS Windows Internal Database (WID)

 C:\>dir c:\windows\WID\Data
 Volume in drive C has no label.
 Volume Serial Number is ****-****

 Directory of c:\windows\WID\Data

02.03.2015  22:18    <DIR>          .
02.03.2015  22:18    <DIR>          ..
02.03.2015  00:40         4.194.304 master.mdf
02.03.2015  00:40         1.048.576 mastlog.ldf
02.03.2015  00:40         2.162.688 model.mdf
02.03.2015  00:40           524.288 modellog.ldf
02.03.2015  00:40        13.107.200 msdbdata.mdf
02.03.2015  00:40           524.288 msdblog.ldf
02.03.2015  22:19     3.816.882.176 SUSDB.mdf
02.03.2015  22:19        25.296.896 SUSDB_log.ldf
02.03.2015  21:51        40.960.000 tempdb.mdf
02.03.2015  21:05        22.675.456 templog.ldf
              10 File(s)  3.927.375.872 bytes
               2 Dir(s)  112.296.820.736 bytes free


Making the move

In Management Studio, I connected to


I expanded Databases and detached the SUSSB

In this case the destination is a folder on volume d:. d:\WSUS DB

Moving the DB (elevated command prompt):

C:\>move c:\windows\wid\data\susdb* "d:\WSUS DB"
        2 file(s) moved.


It is too soon to re-attach the db. It would result in a read error or the database would be mounted as read-only. I needed to copy the NTFS permissions (ACL) first

PS C:\Windows\WID\data> Get-ACL | fl

Path   : Microsoft.PowerShell.Core\FileSystem::C:\Windows\WID\data
Owner  : BUILTIN\Administrators
Group  : BUILTIN\Administrators
Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         NT SERVICE\MSSQL$MICROSOFT##WID Allow  Write, Delete, Read, Synchronize
         NT SERVICE\MSSQL$MICROSOFT##WID Allow  -1073676288
Audit  :
Sddl   : O:BAG:BAD:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;;0x13019f;;;S-1-5-80-1184457765-4068085190-3456807688-22009523

PS C:\Windows\WID\data>

This entry is most important: NT SERVICE\MSSQL$MICROSOFT##WID , but I copied the ACL as a whole.

PS C:\Windows\WID\data> Get-Acl C:\Windows\WID\Data | Set-Acl -Path 'D:\WSUS DB'
PS C:\Windows\WID\data>

In SQL Management Studio, I re-attached the database.


 Next I started the WSUS service.


No comments:

Post a comment