Simptomi
Pretpostavimo da koristite prilagođenog dobavljača daljinskog BLOB skladišta (RBS) zajedno sa runtime .NET Framework 4.0 za skladištenje grudvica daljinski za Microsoft SharePoint 2013. Kada pokušate da pokrenete čišćenje smeća koje interno naziva Microsoft.Data.SqlRemoteBlobs.Maintainer.exe, dobijate sledeću poruku o grešci tokom prikupljanja smeća:
Pokretanje zadataka održavanja. Započinjem sakupljanje đubreta. Pokretanje reference Scan.<Time>:ERR:0::::Opterećenje asemblera::Došlo je do greške tokom čitanja datoteke oznake tipa datoteke xxxx. RemoteBlobStoreProvider.dll.<Time>:ERR:0::::AssemblyLoad::: System.BadImageFormatException: This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded. (Exception from HRESULT: 0x8013101B)<Time>:ERR:0:::AssemblyLoad::: at System.Reflection.Assembly.nLoadFile(String path, Evidence evidence)<Time>:ERR:0:::AssemblyLoad::: at System.Reflection.Assembly.LoadFile(String path)<Time>:ERR:0:::AssemblyLoad::: at Microsoft.Data.SqlRemoteBlobs.ProviderClass.Initialize()
Alatka "Održavač" se sastavlja pomoću izvršavanja programa .NET Framework 2.0 i ne može da učita sklopove koji se zasnivaju na .NET Framework 4.0 za nabrojavanje grudvica i skupljanje smeća. Za bilo koju .NET Framework aplikaciju možete da koristite datoteku za konfiguraciju aplikacije i da dodate podržanu oznakuRuntime da biste koristili noviju verziju programa .NET Framework. Konfiguraciona datoteka komponente "Maintainer" je Microsoft.Data.SqlRemoteBlobs.MaintainerConfig.xml, kao u sledećem primeru:
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
Ako pokušate da pokrenete čišćenje smeća, Microsoft.Data.SqlRemoteBlobs.Maintainer.exe nailazi na izuzetak kršenja prava pristupa, na sledeći način:
System.AccessViolationException: Pokušano je čitanje ili pisanje zaštićene memorije. Ovo je često pokazatelj da je druga memorija oštećena. u System.Text.StringBuilder.AppendFormat(dobavljač IFormatProvider, format niske, Object[] args) at Microsoft.Data.SqlRemoteBlobs.InformationUtilities.InformationDetails() at Microsoft.Data.BlobStores.LogProvider.CreateHeaderInformation() at Microsoft.Data.BlobStores.LogProvider.Initialize(LogLevel logLevel) at Microsoft.Data.BlobStores.DebugPrint.InitializeProviders() at Microsoft.Data.BlobStores.DebugPrint.Initialize(Boolean initializeProviders) at Microsoft.Data.BlobStores.DebugPrint.WriteLine(OperationType operation, Nivo loglevela, Int32 blobStoreId, Exception exception, string message, Object[] arg) at Microsoft.Data.SqlRemoteBlobs.Maintainer.MainInternal() at Microsoft.Data.SqlRemoteBlobs.Maintainer.Maintainer.Main(String[] args)
Uzrok
Do prvog izuzetka dolazi zato što se alatka "Održavač" sastavlja pomoću programa .NET Framework 2.0. Alatka ne može da učita sklope zasnovane na .NET Framework 4.0. Do izuzetka kršenja prava pristupa dolazi kada pokušate da pokrenete dobavljače vođenja evidencije za Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.
Rešenje
Ispravka za ovaj problem dostupna je u najnovijem paketu funkcija za preuzimanje za RBS.msi. Ako ste koristili predloženo zaobilazno rešenje, možete ukloniti ili omogućiti oznake koje se odnose na evidentiranje i uvek držite oznaku supportRuntime. Napomena RBS možete ponovo instalirati pomoću novog RBS.msi da biste primenili ispravku bez primene ispravke.
Preuzmite paket funkcija Microsoft SQL Server 2014 Service Pack 1 (SP1) Preuzmite paket funkcija microsoft SQL Server 2012 Service Pack 3 (SP3)
Rešenje
Da biste rešili ovaj problem, dodajte sledeću dodatnu konfiguraciju u datoteku za konfiguraciju zajedno sa podržanom oznakomRuntime. Ove oznake onemogućavaju mogućnost vođenja evidencije za alatku "Održavanje" jer se izuzetak baca tokom pokretanja dobavljača evidencije.
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> <RemoteBlobStorage> <Logging> <add key="ConsoleLog" value="0" /> <add key="FileLog" value="0" /> <add key="CircularLog" value="0" /> <add key="EventViewerLog" value="0" /> <add key="DatabaseTableLog" value="0" /> </Logging> </RemoteBlobStorage>
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".