Jeg lod en BDC-fejl i denne uge, der manifesterede sig på brugergrænsefladen og i den 12 hive log på kørselstidspunktet.
Første, denne dukkede op i brugergrænsefladen:
Der blev ikke fundet felter til at indsætte alle de id-værdier for at udføre en SpecificFinder MethodInstance med navnet korrekt … Sikre, at inputparametre har knyttet hver defineret for denne enhed id TypeDescriptors til.
Her er et skærmbillede:
Jeg kan også forårsage denne besked skal vises i den 12 hive log på vil (bruge min patenteret high-tech-don't-try-this-at-home "mystiske fejl" metode):
11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x høj undtagelse i BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Id-værdi ”, af Type ”, er ugyldigt. Forventede id-værdi af typen 'System.String'. på Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objekt[] subIdentifierValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Enhed enhed, Objekt[] userValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Se desiredView) på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()
Jeg søgte rundt og fundet nogle fører i den MSDN forum, men de var ikke nok for mig at forstå, hvad jeg gjorde forkert. Jeg iagttog et webcast af Ted Pattison at min virksomheden har squirreled væk på en server og kom til at indse mit problem.
I min ADF, Jeg tilslutning til en SQL-database som vist:
<Ejendom Navn="RdbCommandText" Type="System.String">
<![CDATA[
VÆLG SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
LAND, ADDRESS1, ADRESSE2, ADDRESS3, ADDRESS4, CITY, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
COUNTY, STATEN, POST-, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, UDVIDELSE, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
INTERLINK_DLL, TMS_EXCLUDE_FLG fra dbo.PS_CARRIER_ID_VW med (NOLOCK)
HVOR
(SETID <> 'ANDEL') og
(lavere(CARRIER_ID) >= lavere(@MinId)) og
(lavere(CARRIER_ID) <= lavere(@MaxId)) og
(lavere(DESCR) GERNE lavere(@InputDescr))
]]>
</Ejendom>
Jeg var forudsat at SQL fra en person, DBA og jeg får at forstå, at det er en særlige Se de skabt bare for mig. Den unikke nøgle der er CARRIER_ID.
Her er den fejl jeg introduceret:
<Identifikatorer>
<Id Navn="CARRIER_ID" TypeName="System.String" />
<Id Navn="DESCR" TypeName="System.String" />
</Identifikatorer>
Et sted langs linjen, Jeg havde formået at forvirre mig over betydningen af <Identifikatorer> og tilføjet DESCR, selvom det ikke er ligefrem et id. Jeg tog DESCR ud af de identifikatorer og presto! Det hele fungerede.
Jeg håber, at dette sparer nogen nogle sorg 🙂