Monday, March 1, 2010

Sharepoit 2010 - Search service application

One of the multiple evolutions of the last version of Sharepoint upon the last one is how Sharepoint manages the different services.

Bye bye Shared Service Provider (SSP), Hello the Services applications.

The management of those applications is accessible via the "manage Service applications" of the central admin page.
Yesterday I had a super search app that was working fine with all my scopes and metadatas. Sounded good, no?
Obviously, it's when things go the best that some ununderstandable sh.t happens... In my event viewer, from yesterday nigth til now and every minutes, I had a message saying that my crawl DB wasn't accessible. Damned What have I done??
So as a solution I tried to reset all my indexes... Nope..
I then tried to detach and attach the Search App db... Nope...
I finally decided to save all my settings and to delete my search application (and all the DBs and to recreate it (I'd rather take 1h to do this instead of asking myself the all day "what the fuck wht the fuck"

Here I am now... I can't create a search application : the form opens asking me the app pools and the account , and after a minute and 31 seconds... I have this error

Errors were encountered during the configuration of the Search Service Application.
System.Data.SqlClient.SqlException: User does not have permission to perform this action. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command) at Microsoft.Office.Server.Data.SqlServerManager.GrantLogin(String user) at Microsoft.Office.Server.Search.Administration.SearchDatabase.GrantAccess(String username, String role) at Microsoft.Office.Server.Search.Administration.SearchDatabase.SynchronizeAccessRules(SearchServiceApplication searchApp) at Microsoft.Office.Server.Search.Administration.SearchServiceApplication.SynchronizeDatabases() at Microsoft.Office.Server.Search.Administration.SearchServiceApplication.Provision() at Microsoft.Office.Server.Search.Administration.SearchConfigWizard.b__22() at Microsoft.Office.Server.Search.Administration.SearchAdminUtils.UpdateIgnoreSPUpdatedConcurrencyException(String description, SearchAdminUtilsUpdateDelegate updateDelegate, SearchAdminUtilsRefreshObjectDelegate refreshObjectDelegate) at Microsoft.Office.Server.Search.Administration.SearchConfigWizard.CreateSearchApp() at Microsoft.Office.Server.Search.Administration.SearchConfigWizard.ProvisionSearchServiceApplication() at Microsoft.Office.Server.Search.Administration.SearchConfigurationJobDefinition.ExecuteTimerJob()

Ooupppppps, so... so far.... no search service for my users :-/

Mmmm, let's check what could have happened ...
This line is interesting "
Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command) at Microsoft.Office.Server.Data.SqlServerManager.GrantLogin(String user) "

Am I having SQLServer secrutiy troubles??
If I check the security settings in SQL Server on my staging environment and on my production environment I notice that my service account on my production environment doesn't have the "SecurityAdmin" right ... DAMNED ! I GOT YOUUUUUUU !!