最近在重装Sharepoint 2010时,运行配置向导创建DB失败,异常的原因也比较奇怪。具体异常日志如下所示:
1: 9/16/2012 10:49:06 9 INF Creating a new farm with config db SharePoint_Config content db SharePoint_AdminContent_b2d2eaa3-a3cf-4420-a100-33926db462c4 server 10.10.10.111 for farm mode
2: 09/16/2012 10:49:22 9 ERR Task configdb has failed with an unknown exception
3: 09/16/2012 10:49:22 9 ERR Exception: System.InvalidOperationException: An error occurred while getting information about the user sharepoint at server xxx.com: Access is denied
4: at Microsoft.SharePoint.Win32.SPNetApi32.NetUserGetInfo1(String server, String name)
5: at Microsoft.SharePoint.Administration.SPManagedAccount.GetUserAccountControl(String username)
6: at Microsoft.SharePoint.Administration.SPManagedAccount.Update()
7: at Microsoft.SharePoint.Administration.SPProcessIdentity.Update()
8: at Microsoft.SharePoint.Administration.SPApplicationPool.Update()
9: at Microsoft.SharePoint.Administration.SPWebApplication.CreateDefaultInstance(SPWebService service, Guid id, String applicationPoolId, SPProcessAccount processAccount, String iisServerComment, Boolean secureSocketsLayer, String iisHostHeader, Int32 iisPort, Boolean iisAllowAnonymous, DirectoryInfo iisRootDirectory, Uri defaultZoneUri, Boolean iisEnsureNTLM, Boolean createDatabase, String databaseServer, String databaseName, String databaseUsername, String databasePassword, SPSearchServiceInstance searchServiceInstance, Boolean autoActivateFeatures)
10: at Microsoft.SharePoint.Administration.SPWebApplication.CreateDefaultInstance(SPWebService service, Guid id, String applicationPoolId, IdentityType identityType, String applicationPoolUsername, SecureString applicationPoolPassword, String iisServerComment, Boolean secureSocketsLayer, String iisHostHeader, Int32 iisPort, Boolean iisAllowAnonymous, DirectoryInfo iisRootDirectory, Uri defaultZoneUri, Boolean iisEnsureNTLM, Boolean createDatabase, String databaseServer, String databaseName, String databaseUsername, String databasePassword, SPSearchServiceInstance searchServiceInstance, Boolean autoActivateFeatures)
11: at Microsoft.SharePoint.Administration.SPAdministrationWebApplication.CreateDefaultInstance(SqlConnectionStringBuilder administrationContentDatabase, SPWebService adminService, IdentityType identityType, String farmUser, SecureString farmPassword)
12: at Microsoft.SharePoint.Administration.SPFarm.CreateAdministrationWebService(SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword)
13: at Microsoft.SharePoint.Administration.SPFarm.CreateBasicServices(SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword)
14: at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword, SecureString masterPassphrase)
15: at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, String farmUser, SecureString farmPassword, SecureString masterPassphrase)
16: at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.CreateOrConnectConfigDb()
17: at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.Run()
18: at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()
值得注意的是该异常:Exception: System.InvalidOperationException: An error occurred while getting information about the user sharepoint at server xxx.com: Access is denied。
根据日志,第一反应是读写数据库权限不够,也就是数据库连接不上,查看db服务器,发现DB已经创建成功了,那么就不是这个问题了。然后怀疑配置的域账号权限不够,查看发现是域管理员,并且加入到了本地管理员组,那么就不存在权限不足的问题了。
苦思冥想加问技术群,均没找到思路,而国内没有任何关于此异常的帖子。最后通过老外的只字片语得到灵感:在运行配置向导时,虽然输入了域账号进行配置,但是配置时并不是使用所配置的域账号,而是使用的当前登录用户。也就是说,不能使用目标服务器本地管理员登录,而应该使用需要所配置的域账户进行登录服务器,然后运行配置向导。至此,折腾了大半天的问题终于解决。