Thursday, December 27, 2007

SharePoint 2007 - Not enough storage is available to process this command

I have been getting this error message from our SharePoint server:

Time: 20071227163429.000000+660
Type: Error
Event ID: 6482
Message: Application Server Administration job failed for service instance Microsoft.Office.Server.Search.Administration.SearchAdminSharedWebServiceInstance (6de3e5d2-33f9-4223-a750-284f8d826641).

Reason: Not enough storage is available to process this command.

Techinal Support Details:
System.Runtime.InteropServices.COMException (0x80070008): Not enough storage is available to process this command.

Server stack trace:
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.get_IsContainer()
at System.DirectoryServices.DirectoryEntries.CheckIsContainer()
at System.DirectoryServices.DirectoryEntries.Find(String name, String schemaClassName)
at Microsoft.SharePoint.AdministrationOperation.Metabase.MetabaseObjectCollection`1.Find(String name)
at Microsoft.SharePoint.AdministrationOperation.Metabase.MetabaseObjectCollection`1.get_Item(String name)
at Microsoft.SharePoint.AdministrationOperation.SPProvisioningAssistant.ProvisionIisApplicationPool(String name, ApplicationPoolIdentityType identityType, String userName, SecureString password, TimeSpan idleTimeout, TimeSpan periodicRestartTime)
at Microsoft.SharePoint.AdministrationOperation.SPAdministrationOperation.DoProvisionIisApplicationPool(String name, Int32 identityType, String userName, String password, TimeSpan idleTimeout, TimeSpan periodicRestartTime)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Microsoft.SharePoint.AdministrationOperation.SPAdministrationOperation.DoProvisionIisApplicationPool(String name, Int32 identityType, String userName, String password, TimeSpan idleTimeout, TimeSpan periodicRestartTime)
at Microsoft.SharePoint.Administration.SPMetabaseManager.ProvisionIisApplicationPool(String name, Int32 identityType, String userName, SecureString password, TimeSpan idleTimeout, TimeSpan periodicRestartTime)
at Microsoft.Office.Server.Administration.SharedWebServiceInstance.Synchronize()
at Microsoft.Office.Server.Administration.ApplicationServerJob.ProvisionLocalSharedServiceInstances(Boolean isAdministrationServiceJob)
http://eventid.net/display.asp?eventid

and

Time: 20071227163341.000000+660
Type: Error
Event ID: 6398
Message: The Execute method of job definition Microsoft.Office.Server.Administration.ApplicationServerAdministrationServiceJob (ID 60dda38f-4b1d-4286-a12d-3cfbb8eb02b8) threw an exception. More information is included below.

Old format or invalid type library.


There are a lot of talks about this issue on the Net - solution with hotfix: KB923145 or KB923028 - but I am not convinced that was the solution for this issue.

The work around is to reboot the server - but this is not a solution at all for a production server!

To temporarily stop this event error, restart the "Windows SharePoint Services Administration" and "Windows SharePoint Services Timer" services.

I hope SP1 will fix this issue :)

Monday, December 24, 2007

BlackBerry Enterprise Server Upgrade

If you have a plan to upgrade your BES from version 4.0 to version 4.1, read on...

There are 3 methods of upgrade options: in-place, cutover and phased. I am going to show you the cutover method which installs the new BES on the new computer and migrates database from the old BES to the new one.

Let's assume your existing server name is oldbes, the new server name is newbes. You have an AD service account called: besadmin and your MSDE configuration database is stored in BESMgmt

Step-by-step

  • Install Windows 2003 + SP2 on the new server and name it newbes. Join to the domain where the oldbes server domain is located. Give a temporary static IP address
  • Add besadmin as a local administrator and give right to 'Log on as a service' in the local security settings of the newbes computer
  • Login to the oldbes computer as besadmin; we are going to backup the database (MSDE): Open the cmd prompt and run:

osql -E
1> backup database BESMgmt to disk="C:\BESMgmt.bak"
2> go
3> quit

  • Login to the newbes computer as besadmin; install the MSDEA from microsoft with the following command, and start the MSSQLSERVER service and change the startup type to automatic:

setup.exe SAPWD="yoursapassword"

  • Download the MAPI client and CDO from Microsoft, and install it on newbes computer
  • Restore the database to the newbes computer (login as besadmin); copy the BESMgmt.bak file from the oldbes computer to C:\ drive of newbes computer. Open the command prompt:

osql –E
1> restore database BESMgmt from disk = “C:\BESMgmt.bak” with recovery, replace
2> go
3> quit

  • Login to oldbes computer as besadmin, and stop all BES services and change all the services startup type to disabled. Change the IP address of oldbes to different IP address; Change the IP address of newbes to oldbes's old IP address - this to make sure the Firewall still allow port 3101 outbound to RIM from the newbes computer
  • Now depending on your service pack level of BES installed on the oldbes computer, you need to install them again exactly to the same service pack level on the newbes computer. For example: if your oldbes is version 4.0.6, then you need to install the same version of BES to the newbes computer
  • During the installation on the newbes, it will ask you for the "BlackBerry Server Name:" you need to give the oldbes computer name, NOT the newbes!
  • Once you have got to the same service pack level installed on the newbes computer, start install the 4.1 version of BES; It will ask you to upgrade the database, and Click Yes to upgrade the database
  • Follow the rest of the installation and you are done!

Thursday, December 13, 2007

BartPE with USB key

I've got this working finally - install BartPE to USB key. With additional plugins, this helps a lot when you want to 'ghost' and doing other stuff

steps:
Buy a USB flash disk > 1 GB

Download the latest BartPE - link

Install BartPE, e.g. C:\bartpe

Download Windows 2003 SP1 - link

Extract the Windows 2003 SP1 to temp folder:
w2k3sp1.exe -x, e.g. c:\temp

Create a folder in the bartpe:
c:\bartpe\srsp1

Copy the extracted files to the srsp1 folders:
copy c:\temp\i386\setupldr.bin c:\bartpe\srsp1

Expand ramdisk.sys file
expand -r c:\temp\i386\ramdisk.sy_ c:\bartpe\srsp1

Build your BartPE as normal, use the Windows 2003 + SP1 CD as the source files and you must output the file to "BartPE" folder. You do not need to generate ISO file. You might want to add plugins, and drivers before you build this

To format and build the image to the USB Drive - Z: - (first time only):
pe2usb -f Z:

If you do not want to format, just run:
pe2usb Z:

USB drive won't get assigned drive letter automatically

I had this issue with my computer:
when I plug in any USB drive to my computer, the disk management can see the drive, but it won't assign any drive letter to it. I have to assign the letter manually before I can see the files in it.

To fix it, I disable a service called: SPTD
go to the regedit:
My Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sptd

change the Start key from 0 (start) to 4 (disable)