Tag Archive: SBS


So you log into the SBS console and there is always a red X next to your server. When you navigate to Devices>Server, and click View Computer Alerts, you are confronted with an error:

The Best Practices Analyzer has completed a scan of your system and has found errors in your system configuration. For detailed information about the scan errors, manually run the Best Practices Analyzer tool. Error Count: 1

Well, let’s do what it says. Start>All Programs>SBS Tools>SBS 2008 BPA

If you dont have the BPA, you can download it here.

Click Go To Welcome Screen, then Select Options For a New Scan. Enter a label if you wish, I generally do not. Click Start Scan.

Wait 2-5 (mine takes 4:23) minutes, until it says complete, then hit view results. There is one critical issue. Mine happens to be

BPA Results

BPA Results

Yours might be different, but whatever the issue is, you should resolve it. My issue is that a DNS A resource points to two ip addresses: my server IP of 192.168.1.113 and my RRAS IP of 192.168.1.16. I wont be solving this at this time as it is not causing issues, but I will show you how to stop the daily alert from the BPA.

When you install the BPA, it sets a scheduled task to run nightly. This is cool, but I don’t need it running nightly- I run it once a week, or after major changes to Windows- why does it need to run daily. Go to Control Panel>Administrative Tools>Task Scheduler.

Click Task Scheduler Library- you should see a few scheduled tasks, one of them being SBS 2008 BPA. Right click the task, and click Delete and confirm.

Keep in mind that “Hide this alert from all results” from inside of the BPA will not stop the computer alert from displaying in the SBS Console.

UPDATE: One more thing you will need to do. Go to the SBS console, and click the Network tab. then click View Notification Settings on the right menu. The click Event Log Errors on the left manu. At the bottom, uncheck the BPA alert notification.

Notification Settings

Notification Settings

So I come into work, and load up the console only to see yellow and red warnings. Crap. Well, time to start fixing things.

SBS Console Screenshot

SBS Console

First thing I notice, is that one of my backups failed. this is troublesome, as my past problem with backups and VSS were quite an issue. So I go to the Backups tab, and click backup history. I then see the error “A Volume Shadow Copy Service operation failed. Unknown error (0x800423f3)”. This happened at 7AM, but not at 8PM- this leads me to believe the VSS service was busy so it could not backup my server. On to the event log.
 
I open the event log, and the first 1,000 entries are Outlook connecting and disconnecting. Ill investigate that later- now I will turn off outlook and scroll down to 7 AM. There it is, 3 events. Event ID’s 7001, 12298 and 12310. Before I investigate this, I want to make sure no other tasks are scheduled to run at 7AM. I go to Task Scheduler, and go through each task- theres nothing running at 7AM. I did however find two tasks named FSSScanXXX. That rung a bell as Forefront Security, which is uninstalled- deleted those tasks.
 
 
 
 
 
 
VSS Event ID 33
 
 
I plugged the three events into Google, and found this page. That post mentioned Hotfixes, but I don’t think I am ready for that yet. I did install Exchange 2007 SP2 recently, maybe that is the issue. Ill keep looking.
I stmble upon this post at TechArena, which rang a bell. I just installed Exchange 2007 Rollup 4- though at the failure time it was not installed. Well see how it reacts after the update.
 
The manually run Backup ran fine, no Eventlog errors or failures. Ill comment more on this once the scheduled task runs at 7 AM.
 
Update: The backup completed successfully overnight. It seems this error was in fact caused by a transient error and was corrected by applying Microsoft Exchange SP2 Update Rollup 4.

I use this simple script to backup some items on my server, which I would like separated out of the standard Windows SBS 2008 Backup and WSUS 3. It is possible to do a lot with the default server backup, but what if you need just one file? Welol, it’s a pain in the butt to get that out of a full server backup. You could use NTBackup to backup the whole server, but restoring that can be difficult, as SBS 2008 doesn’t recognize NTBackup’s. You could do it with the WBADMIN command, but a lot of people don’t know how to use it. So here is the script. I will post the code, then describe what each part does. Feel free to customize it, or post improvements on it. Im also going to remove all of the echo commands that I have that let me know what each stage is doing. To add a text feedback to this script that will inform you of what’s going on, do the following:

Type Echo
I use ***TEXT*** so that it is visually explicit.


@ECHO OFF
@SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"
for /F "tokens=1-4 delims=/- " %%A in ('date/T') do set DATE=%%B%%C%%D
for /F "tokens=1-4 delims=:., " %%a in ('time/T') do set TIME=%%a%%b%%c

CHOICE /C:YN /D:N /T:3

%STSADM% -o backup -url "http://companyweb" -filename "\\solaceserver\300GB HP Backup\Companyweb Backup\Companyweb_Backup_%DATE%_%TIME%.dat" -backupmethod differential -item "farm" > "\\solaceserver\300GB HP Backup\Companyweb_Backup_log.txt"

xcopy /y "C:\windows\system32\inetsrv\config" "A:\IIS Backup\" /e > "A:\IIS_Backup_log.txt"
xcopy /y "D:\EZ Claim Data" "A:\EZ Backup\" /e > "A:\EZ_Backup_log.txt"
xcopy /y "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12" "A:\CompanywebStyle\" /e > "A:\Companyweb_Style_Backup_log.txt"

sqlcmd -S .\SBSMONITORING -i "C:\SQL Scripts\sbsmonitoringbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\admincontentbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\sharewebdbbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\spconfigbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\susdbbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\wsscontent_c76dcbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\wsscontent_cb60cbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\wsscontentbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\wsssearchbackup.sql"

IF EXIST A:\GPO_Backup RMDIR A:\GPO_Backup /s /q
IF NOT EXIST A:\GPO_Backup MD A:\GPO_Backup

FOR /f "tokens=1-3 delims=/ " %%a in ('DATE/T') do set date=%%b-%%a-%%c
FOR /F "tokens=1-5 delims=/: " %%j IN ('TIME/T') do set time=%%j-%%k

cd "C:\GPMC\SCRIPTS"
cscript BackupAllGPOs.wsf A:\GPO_Backup /Comment:"GPO backup on %DATE%_%TIME%" /Domain:solace.local

for /F "tokens=1-4 delims=/- " %%A in ('date/T') do set DATE=%%B%%C%%D
for /F "tokens=1-4 delims=:., " %%a in ('time/T') do set TIME=%%a%%b%%c

ntbackup backup "@A:\Exchange File Backup\Exchange_NTBackup_Config.bks" /a /d "Exchange Server" /v:no /r:no /rs:no /hc:off /m normal /j "Exchange Server" /l:s /f "A:\Exchange File Backup\Exchange_Backup_%DATE%_%TIME%.bkf" > "A:\Exchange_Backup_Log.txt"

:End
Code Description
@ECHO OFF This gags the code from being repeated visually on the script
@SET STSADM=”c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe” This sets the directory for STSADM. This might vary by computer depending upon your install, but the directory you see is the default.
for /F “tokens=1-4 delims=/- ” %%A in (‘date/T’) do set DATE=%%B%%C%%D for /F “tokens=1-4 delims=:., ” %%a in (‘time/T’) do set TIME=%%a%%b%%c This code and the following FOR code sets variables that allow us to put the date into a filename.
CHOICE /C:YN /D:N /T:3 This is a choice command, with a timer, /T:3 is 3 seconds. This doesn’t really do anything but pause- I add the text to it something like Press Ctrl-C to cancel backup now! Ctrl-C breaks the script.
%STSADM% -o backup -url “http://companyweb” -filename “\\solaceserver\300GB HP Backup\Companyweb Backup\Companyweb_Backup_%DATE%_%TIME%.dat” -backupmethod differential -item “farm” > “\\solaceserver\300GB HP Backup\Companyweb_Backup_log.txt” This runs the STSADM command. It is the command line version of Sharepoint Administration, and command backup without using the GUI in Central Administration. –o backup tells it to backup “http://companyweb”. –Filename tells us the location of the backup.dat. the > xxx.log.txt tells the script to output all the results of that command into a logfile. I have each command in a separate logfile to ease confusion.
xcopy /y “C:\windows\system32\inetsrv\config” “A:\IIS Backup\” /e > “A:\IIS_Backup_log.txt” Xcopy is simply a copy command. I run this on several critical directories, and make a hard backup of the files contained. /y makes the script overwrite, while the following “ are the backup target and backup end directory. /e copies subdirectories and folders.
sqlcmd -S .\SBSMONITORING -i “C:\SQL Scripts\sbsmonitoringbackup.sql” sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i “C:\SQL Scripts\admincontentbackup.sql” I run 10 of these. SQL 2005 Express does not offer native backup scheduling. But you can enter an instance, and manually set up a backup. Then you can script this to file, then you run the file from this script. How to do this is documented here.
IF EXIST A:\GPO_Backup RMDIR A:\GPO_Backup /s /q IF NOT EXIST A:\GPO_Backup MD A:\GPO_Backup This command checks for a directory. If it exists it deletes it and creates it again, empty. This keeps down the size of a directory.
cd “C:\GPMC\SCRIPTS” cscript BackupAllGPOs.wsf A:\GPO_Backup /Comment:”GPO backup on %DATE%_%TIME%” /Domain:solace.local This backups all Group Policy Objects. Download the script files from here. Change this command to match the location you install the .wsf files. Quite handy.
ntbackup backup “@A:\Exchange File Backup\Exchange_NTBackup_Config.bks” /a /d “Exchange Server” /v:no /r:no /rs:no /hc:off /m normal /j “Exchange Server” /l:s /f “A:\Exchange File Backup\Exchange_Backup_%DATE%_%TIME%.bkf” > “A:\Exchange_Backup_Log.txt” This performs an Exchange only backup. You need to create the backup with NTBackup, and save selection as. Then you reference the bks file in this script. The command descriptions are here.

If you are a Sharepoint Administrator, great. SQL Admin, awsome. If you know programming, sweet. But what about those of us that don’t know these things? What if you manage a small Sharepoint site, and don’t know the inner workings of SQL? Extracting content from a database backup after a restore can be a nightmare.

I discovered this post and I had to put it here- this tool is rediculously usefull. Pascal Gill designed a small program with GUI which can be used to extract content from a sharepoint database, and it even keeps directory structure and subfolders. I also used it to extract a custom list with metadata so that I could put it onto my new site. Thanks Pascal!

Sharepoint Exporter

Sharepoint Exporter

The site is here.

The tool is here.

If you have any questions about what to fill in for the database name and server fields, please post here or on Pascal’s blog.
This tool is not my creation, and I can not assure you of the files contents. I can however vouch for the validity of the program and code, as I have used it many times.

Exchange Management Console Database Recovery

Exchange Management Console Database Recovery

I now extracted a new copy of the mailbox database from the backup, using NTBackup again. I restored it to my desktop, not the original location. I opened MS Exchange 2007 MC, and clicked on Toolbox in the navigation pane. Then I clicked on Database Recovery Management. I left everything default and hit next, next.

  1. I clicked Create a Recovery Storage Group.
  2. I left everything as default, default name, and linked it to the First Storage Group, which now contains my current mailboxes.
  3. After the wizard completed, I navigated to the location of the storage group folder, which is inside my First Storage Group folder.
  4. I copy all of the files from the restored Exchange database folder- about 3 Gb in 25 files.
  5. I then try to mount the database from inside the Database Wizard- which comes back with some MapiCallError. Gah!
  6. So I run Repair Database. It gives me a warning- but at this point, who cares.
  7. I let it run, and it completes. And the database mounts successfully!

Now how do I get the mail back? I run the Merge or Copy wizard, which I zip through not really knowing what is going on- and after completion, it restored no mailboxes, the GUID did not match. So I take some more time, and click advanced options. I match and sort by Mailbox Name and try to merge again- still an error with the matching. So I go back into advanced options, and I Restore them to my admin mailbox. I create a folder called Restore, and select all the mailboxes to restore. This runs for a while, and I am seeing items appear.

And then they stop appearing, and my email slows to a crawl. Ugh, Exchange. I delete all of the exported items, half of which did not show up anyhow. So I decided to try a slower approach. I export ONE users mailbox into my mailbox at a time, and it worked. I then exported each of the items from that restored mailbox out of Outlook to a shared folder. I go to a workstation, and log in as that user, and then import their old mail items back into their Exchange mailboxes. It works, thank God. There is a way to do it from the server using EMS, but this requires Exchange Tools 32bit, which you can’t install on a 64bit server. So since I would need to go to another PC anyways, I might as well just restore them from PST files. A whole lot of this episode could have been avoided by knowing exactly what was going on- which I now do. If anyone needs any advice, please feel free to post here and I will do my best to provide the appropriate resources.

%d bloggers like this: