6

Je configure un abonnement dans une instance de SQL Server 2012 SP1 Reporting Services qui exporte un fichier de 34 Mo vers l'extension de rendu XLSX OpenXML Excel 2007-2013. L'abonnement renvoie l'erreur suivante:Exception de stockage isolé: Impossible de déterminer l'identité du domaine

System.IO.IsolatedStorage.IsolatedStorageException: Impossible de déterminer l'identité du domaine.

J'ai vérifié qu'il est possible d'exporter le rapport du Gestionnaire de rapports vers l'extension de rendu Excel 2007-2013 XLSX OpenXML sans problème. Cette erreur se produit uniquement lorsque le rapport est exécuté via un abonnement. J'ai fait des recherches et a trouvé ce les recommandations suivantes sur le web:

  1. Deux Microsoft Connect séparés bug rapports 764356 et 764556 qui ont pas arounds de travail cotées en bourse.

  2. Une recommandation d'échelonner les abonnements afin qu'un seul s'exécute à la fois. Cela n'aide pas car un seul abonnement est en cours d'exécution au moment de l'erreur.

  3. Une recommandation pour utiliser la méthode de rendu Excel 2003 et diviser les lignes en onglets distincts pour éviter la limite de 65 536 lignes. J'ai vérifié ces travaux, mais ce n'était pas une solution acceptable du point de vue des parties prenantes.

  4. Un commentaire indiquant qu'un rapport utilisant la méthode de rendu Excel 2007-2013 d'une taille supérieure à 10 Mo passe de la génération en mémoire à l'utilisation du stockage isolé. Il n'y a aucune explication pourquoi c'est mauvais et je suppose que cela a été fait pour une bonne raison - peut-être pour limiter la consommation de RAM.

  5. Une suggestion pour élever des autorisations pour les utilisateurs dans le dossier de stockage isolé pour l'application ASP.NET. Je n'ai pas pu trouver l'emplacement du dossier Stockage isolé pour Reporting Services.

  6. Une suggestion pour envelopper le code ASP.NET pour le stockage isolé avec du code supplémentaire qui contourne ce problème. Je ne pouvais pas trouver un moyen d'appliquer cette solution à Reporting Services car il s'agit d'un produit fourni par Microsoft.

  7. Une suggestion pour modifier les fichiers web.config Report Manager et Report Server pour inclure maxRequestLength = "200000" dans le nœud httpRuntime. Cela n'a pas changé les résultats.

  8. Une suggestion pour augmenter explicitement les paramètres de mémoire dans RSReportServer.config. Cela n'a pas semblé utile car l'erreur concerne Isolated Storage, mais je l'ai essayée par désespoir. Cela n'a pas changé les résultats.

  9. Une suggestion pour modifier la valeur DatabaseQueryTimeout de 120 à quelque chose de plus grand. Cela n'a pas changé les résultats.

  10. Une suggestion pour modifier la valeur de délai d'exécution d'abonnement. Cela n'a pas changé les résultats.

Voici une copie de l'entrée complète du journal d'erreur:

reportrendering!WindowsService_5!1628!04/03/2013-09:48:33:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingException: , Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingException: An error occurred during rendering of the report. ---> Microsoft.ReportingServices.OnDemandReportRendering.ReportRenderingException: An error occurred during rendering of the report. ---> System.IO.IsolatedStorage.IsolatedStorageException: Unable to determine the identity of domain. 
    at System.IO.IsolatedStorage.IsolatedStorage._GetAccountingInfo(Evidence evidence, Type evidenceType, IsolatedStorageScope fAssmDomApp, Object& oNormalized) 
    at System.IO.IsolatedStorage.IsolatedStorage.GetAccountingInfo(Evidence evidence, Type evidenceType, IsolatedStorageScope fAssmDomApp, String& typeName, String& instanceName) 
    at System.IO.IsolatedStorage.IsolatedStorage._InitStore(IsolatedStorageScope scope, Evidence domainEv, Type domainEvidenceType, Evidence assemEv, Type assemblyEvidenceType, Evidence appEv, Type appEvidenceType) 
    at System.IO.IsolatedStorage.IsolatedStorage.InitStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType) 
    at System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType) 
    at MS.Internal.IO.Packaging.PackagingUtilities.ReliableIsolatedStorageFileFolder..ctor() 
    at MS.Internal.IO.Packaging.PackagingUtilities.GetDefaultIsolatedStorageFile() 
    at MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName(Int32 retryCount, String& fileName) 
    at MS.Internal.IO.Packaging.SparseMemoryStream.EnsureIsolatedStoreStream() 
    at MS.Internal.IO.Packaging.SparseMemoryStream.SwitchModeIfNecessary() 
    at MS.Internal.IO.Zip.ZipIOFileItemStream.Write(Byte[] buffer, Int32 offset, Int32 count) 
    at System.IO.Compression.DeflateStream.InternalWrite(Byte[] array, Int32 offset, Int32 count, Boolean isAsync) 
    at System.IO.Compression.DeflateStream.Write(Byte[] array, Int32 offset, Int32 count) 
    at MS.Internal.IO.Packaging.CompressStream.Write(Byte[] buffer, Int32 offset, Int32 count) 
    at MS.Internal.IO.Zip.ProgressiveCrcCalculatingStream.Write(Byte[] buffer, Int32 offset, Int32 count) 
    at MS.Internal.IO.Zip.ZipIOModeEnforcingStream.Write(Byte[] buffer, Int32 offset, Int32 count) 
    at Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.XMLModel.XMLStreamsheetModel.WriteStreamToStream(Stream from, Stream to) 
    at Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.XMLModel.XMLStreamsheetModel.Cleanup() 
    at Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.OpenXmlGenerator.FinalizeWorksheet() 
    at Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.OpenXmlGenerator.NextWorksheet() 
    at Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer.Render(Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection 
+0

Malheureusement, il semble que vous avez trouvé un bug ou une limitation dans les services d'établissement de rapports Excel renderer (bien que si vous pouvez générer le rapport dans le Gestionnaire de rapports il ressemble à un bug pour moi). 34 Mo est un rapport de feuille de calcul assez volumineux. Est-ce réellement un rapport ou est-ce un extrait de données? Peut-il être exporté au format CSV au lieu du format Excel? Pourriez-vous utiliser SSIS pour exporter les données vers une feuille de calcul à la place? – Nathan

+0

J'ai mis à jour les bugs de connexion pour inclure des informations de cette question. J'ai travaillé autour de ce bogue en déchirant le rapport via l'URL ReportServer dans une tâche de script de package SSIS. –

Répondre

4

Vous pouvez trouver une solution ici: http://rekiwi.blogspot.com/2008/12/unable-to-determine-identity-of-domain.html

Dans le composant COM, créez un nouveau AppDomain avec la preuve appropriée et exécutez le code dans cela.

Voici un exemple de code qui a résolu le problème pour moi:

AppDomainSetup setup = new AppDomainSetup(); 
setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory.ToString(); 

//Then we need our evidence 
System.Security.Policy.Evidence evidence = new System.Security.Policy.Evidence(); 
evidence.AddHost(new System.Security.Policy.Zone(System.Security.SecurityZone.MyComputer)); 

//Now we can fire up an AppDomain running with that evidence. 
AppDomain domain = AppDomain.CreateDomain("YourDll.YourClass", evidence, setup); 

YourDll.YourClass yourclass = (YourDll.YourClass)domain.CreateInstanceAndUnwrap(typeof(YourDll.YourClass).Assembly.FullName, typeof(YourDll.YourClass).FullName); 

yourclass.CallYourMethod(); 

Tous les types que vous voulez marshall dans AppDomains doivent marqué [Serializable()] et doit hériter de MarshalByRefObject. Par exemple:

namespace YourDll 
{ 
[Serializable()] 
public class YourClass: MarshalByRefObject 
{ 
... 
Questions connexes