Benutzer mit den meisten Antworten
Generic SQL Error bei Update von Entitätsattributen

Frage
-
Hallo,
beim Speichern einer Entität über die OData-Schnittstelle und auch über den OrganizationService bei Plugins erhalte ich einen Generic SQL error.
Beim Aktivieren des Tracings (Diagnostics Tool) erhalte ich folgende Fehlermeldung in der Log-Datei:
>Crm Exception: Message: Generic SQL error., ErrorCode: -2147204784, InnerException: System.Data.SqlClient.SqlException (0x80131904): Ungültiger Objektname 'DBName.dbo.EntityNameExtensionBase'.
Interessant ist, dass man den selben Fehler im SQL-Management-Studio bekommt, wenn man beim Absetzten eines Statements nicht die Datenbank angibt, wo es ausgeführt werden soll.
Meine Vermutung ist daher, dass beim Absetzten des SQL-Statements von CRM 2011 ein Fehler passiert.
Hat irgendwer eine Ahnung warum das passiert und vor allem wie man diesen Fehler beheben kann?
Hinweis: Die Organisation wurde von 4.0 auf Crm 2011 migriert (vielleicht ist hier etwas schief gegangen)
Freundliche Grüße
Klemens
Antworten
-
Hallo!
Hab das Problem gefunden. War leider ein internes (blödes) Problem. Auf der Datenbank war ein Trigger registriert der noch einen Verweis auf die alte DB gehabt hat.
Ich hoff ich hab euch nicht zuviel aufgehalten und irritiert.
Schöne Grüße Klemens
- Als Antwort markiert k.duschlbauer Dienstag, 24. Januar 2012 09:53
Alle Antworten
-
Hallo Klemens,
ohne Dein Statement näher zu kennen, fällt eine Fehleranalyse sehr schwer. Hast Du den OData Query Designer http://bingsoft.wordpress.com/category/crm-2011-odata-query-designer/ verwendet?
Carsten Groth http://carstengroth.wordpress.com Microsoft Certified Technology Specialist -
Hallo Klemens,
Laden dieser angesprochenen Entität über die OData- oder OrganizationService-Schnittstelle funktioniert? Hat der CRM-Server vielleicht mehrere Organisationen bzw. setzt du deine Abfrage sicher gegen die korrekte Organisation ab?
Ich glaube nicht, dass der Fehler in der Migration liegt, weil sonst mehr Dinge dieses CRM's nicht funktionieren würden.
Liebe Grüße,
Andreas
Andreas Buchinger
Microsoft Dynamics Certified Technology Specialist
MCPD: SharePoint Developer 2010 -
Hallo,
werd kurz nochmal die zwei Situation genauer Erklären, welche zu diesem Fehler führen:
1. JScript mit OData-Zugriff:
Ich habe eine Erweiterung der GUI mit JScript implementiert. Hierbei werden in einem ersten Schritt die benötigten Daten der jeweiligen Entität geladen und etwaige Änderungen wieder via OData gespeichert. Derzeit ist diese Erweiterung für 5 Entitäten konfiguriert, sowohl System- als auch benutzerdiefiniert Entiäten. Die Daten werden hier Ajax ohne Probleme geladen. Aufruf-Bsp.:
$.ajax({ type: "GET", contentType: "application/json; charset=utf-8", datatype: "jason", async: false, url: SDK.REST._ODataUrl() + "/" + entityName + "Set(guid'" + id + "')", beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/json"); }, success: function (data, textStatus, XmlHttpRequest) { var wrapper = new EntityWrapper(); wrapper.setOid(id); wrapper.setCrmEntity(data.d); wrapper.setRowId(rowId); callbackObj.addEntity(wrapper); }, error: function (XmlHttpRequest, textStatus, errorThrown) { alert("error"); } });
Beim Speichern der geänderten Daten tritt jedoch nur bei der einen benutzerdefinierten Entität der der genannte Generic SQL Error auf (das Speichern von den anderen Entitäten funktioniert einwandfrei). Code der Save-Methodevar jsonEntity = window.JSON.stringify(entity); $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", datatype: "json", data: jsonEntity, url: SDK.REST._ODataUrl() + "/" + metaInfo.getEntityName() + "Set(guid'" + id + "')", beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/json"); //MERGE for update XMLHttpRequest.setRequestHeader("X-HTTP-Method", "MERGE"); }, success: function (data, textStatus, XmlHttpRequest) { callbackObj.resetTempChangeStorage(); }, error: function (XmlHttpRequest, textStatus, errorThrown) { alert("Fehler beim Speichern!"); }});
2. Plugin: in einem weiteren Projekt hab ich ein Plugin implementiert und sie da, ich bekomme wieder den selben Fehler (Generic SQL Error) bei dieser Entität. Der Code hierfür sieht auszugsweise wo aus:Entity workpackage = service.Retrieve("new_project", id, new ColumnSet(true)); ..... if (workpackage.Contains("new_act_h")) workpackage["new_act_h"] = actHours; else workpackage.Attributes.Add("new_act_h", actHours); if (workpackage.Contains("new_calc_expected_h")) workpackage["new_calc_expected_h"] = expected; else workpackage.Attributes.Add("new_calc_expected_h", expected); ..... service.Update(workpackage);
Ich hoff das ganze ist jetzt nicht zu verwirrend.
Schöne Grüße Klemens
-
Hallo Andreas,
Also das Laden der Entäten funktioniert (siehe vorhergehende Antwort).
Das Crm hat mehrere Organisationen, aber ich bin mir sicher -soweit man sich in der IT sicher sein kann ;) , dass ich die Abfrage an die richtige Organisation absetze (sonst dürft ja das Speichern der anderen Entitäten auch nicht funktionieren).
Grüße Klemens
-
Hallo!
Hab mir jetzt noch die den OData-Request mit Fiddler (JScirpt-Komponente) angesehen. Bei einer "funktionierenden" und bei der "fehlerhaften" Entität.
Sind strukturell völlig identisch.
Fiddler header:
POST /Test-MSCRM/XRMServices/2011/OrganizationData.svc/AccountSet(guid'06CA3268-D422-E011-80D4-000C2971C7E3') HTTP/1.1
POST /Test-MSCRM/XRMServices/2011/OrganizationData.svc/WorkpackageSet(guid'51B305AD-B82A-40D3-95B9-525330540BA6') HTTP/1.1In der JSON-Ansicht von Fiddler hab ich auch keinen Fehler enteckt.
Bzgl. SQL-Statement ist mir jedoch eine Unstimmigkeit aufgefallen.
Der Fehler sagt das der in einer Datenbank schreiben soll die es nicht mehr gibt (wurde beim Import der Organisation umgestellt). Werd ich mir gleich genauer anschauen. Komisch ist, dass anscheinend nur diese Entität versucht auf eine die "alte" Datenbank zuzugreifen).
Schöne Grüße Klemens
-
Hallo!
Hab das Problem gefunden. War leider ein internes (blödes) Problem. Auf der Datenbank war ein Trigger registriert der noch einen Verweis auf die alte DB gehabt hat.
Ich hoff ich hab euch nicht zuviel aufgehalten und irritiert.
Schöne Grüße Klemens
- Als Antwort markiert k.duschlbauer Dienstag, 24. Januar 2012 09:53