Beim Öffnen einer Excel-Datei mittels Excel Services, erscheint auf dem SharePoint Server die Fehlermeldung: The workbook cannot be opened.

1856567587564

Im Event Log wird ersichtlich, dass der Grund für die Fehlermeldung darin liegt, dass der Benutzer, unter dem der Excel Services Application Pool läuft, keine Zugriffsberechtigung auf die Content Datenbank hat.

Log Name: Application
Source: Microsoft-SharePoint Products-SharePoint Foundation
Event ID: 3760
Task Category: Database
Level: Critical
User: TECHTASK\ExcelServices
Description:
SQL Database ‘SPS2010_Content_techtask_com_00’ on SQL Server instance ‘TTSQL01’ not found. Additional error information from SQL Server is included below.

Cannot open database “SPS2010_Content_techtask_com_00” requested by the login. The login failed.
Login failed for user ‘TECHTASK\ExcelServices’.

Der entsprechende Benutzer kann über PowerShell relativ einfach ausgelesen und berechtigt werden:

  • Öffnen Sie die SharePoint 2010 Management Shell mit administrativen Rechten
  • Führen Sie Get-SPWebApplication aus, um alle Web Application URLs anzuzeigen
  • Führen Sie Get-SPServiceApplicationPool aus, um alle Service Application Pools mit den dazugehörigen Benutzern angezeigt zu bekommen
  • Führen Sie $w = Get-SPWebApplication –Identity <Web Application URL> aus. Ersetzen Sie dabei <Web Application URL> mit der zuvor per PowerShell ausgelesenen URL der betroffenen Web Application (z.B. $w = Get-SPWebApplication –Identity http://www.techtask.com)
  • Führen Sie $w.GrantAccessToProcessIdentity(“<ProcessAccountName>“) aus. Ersetzen Sie dabei <ProcessAccountName> mit dem zuvor ausgelesenen Service Application Pool User, welcher den Service Application Pool betreibt, in welchem Excel Services laufen (z.B. $w.GrantAccessToProcessIdentity(“TECHTASK\ExcelServices”)).
    Mit diesem PowerShell Befehl wird in diesem Beispiel der Benutzer TECHTASK\ExcelServices als db_owner den Content Datenbanken der Web Application http://www.techtask.com hinterlegt.