Sharepoint Server Error saat update

Di suatu siang yang indah, tiba-tiba situs public facing berbasis SharePoint 2007 di kantor down dengan hanya memberikan tulisan

Server error: http://go.microsoft.com/fwlink?LinkID=96177.

Setelah diselidiki di event-trace, ternyata terjadi perbedaan skema database yang diinginkan engine terupdate dan skema yang ada di mesin server.

Perbedaan Skema

Perbedaan Skema

The schema version (3.1.8.0) of the database WSS_Content_XXX on HOST is not consistent with the expected database schema version (3.1.11.0) on HOST. Connections to this database from this server have been blocked to avoid data loss. Upgrade the web front end or the content database to ensure that these versions match.

Kemungkinan besar proses automatic update mengalami kegagalan ditengah jalan sehingga menyebabkan database tidak terupdate.

Untuk meyakinkan dugaan ini kita bisa mengecek file Update.Log untuk mengetahui error apa yang terjadi.

 
[SPManager] [ERROR] [6/10/2010 12:18:13 PM]: ReflexiveUpgrade [SPSearchDatabase Name=WSS_Search_MITRIAS0_5b62466df46740b7a42fb2152eca8fae Parent=SPDatabaseServiceInstance Name=OfficeServers] failed.
[SPManager] [ERROR] [6/10/2010 12:18:13 PM]: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
[SPManager] [ERROR] [6/10/2010 12:18:13 PM]:    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
at System.Data.SqlClient.TdsParserStateObject.ReadByte()

Ternyata ada banyak error disana (aku hitung ada 20-an) so memang proses automatic-update nampak tidak selesai or something.

Dengan bersenjatakan dugaan-dugaan diatas, kemudian kita tanya sama mbah Google.

Ada beberapa situs yang memberikan berbagai solusi

  1. Update Versions table di database manual  ke nomor schema yang diinginkan (menurut blog post ini)
  2. Menjalankan stsadm (menurut forum ini)

Since cara pertama nampak kasar, dan kita mesti berhati-hati dengan garansi produk 🙂 cara ke-2 dilakukan.

stsadm -o  upgrade -inplace -url http://yourhostname:centraladminport 

Dan it work!

Kenapa begitu?

  1. stsadm.exe -o upgrade
     ini mengupgrade sebuah site yang dispecify di url
  2. -inplace inplace artinya akan mengupgrade site yang dispecify di url imediately, artinya database akan diupdate accordingly
  3. -url tempat kita specify site yang mau diupgrade

Somehow walau command diatas nampak tidak relevan dengan kasus kita 😀 , dia akan mengupdate tabel version (in which sama aja kaya solusi #1) dan membereskan masalah ini.

Satu masalah teratasi, Kudos for mbah Google 😀