Ich weiß, dass ich diese Frage schon einmal gestellt habe, aber keine gute Antwort bekommen habe. Mein sql-Server 2014 entlädt Appdomain aufgrund des Speicherdrucks, der meiner Meinung nach etwas mit meinen CLRs zu tun hat. Ich bin mir nicht sicher, wie ich es an diesem Punkt beheben könnte. Ich habe schon viele Dinge ausprobiert. Ich werde mein Protokoll an diesen Beitrag anhängen. Vielen Dank für Ihre Hilfe. AppDomain unloaded
0
A
Antwort
1
Nichts hat sich geändert, seit Sie zuerst diese gleiche Frage hier gepostet:
Assemblies in SQL Server keep unloading and loading again periodically
Es gibt keine Möglichkeit, SQL Server zu verhindern, dass jede AppDomain es wählt entladen zu können.
Speicherdruck bedeutet, dass nicht viel physischer Speicher vorhanden ist und SQL Server den physischen RAM gegenüber der Auslagerungsdatei stark bevorzugt. Hier sind Dinge zu sehen:
- Überprüfen Sie Ihren SQLCLR-Code. Schließen Sie wegwerfbare Objekte richtig? Speichern Sie viele Dinge im Speicher? Warum sind Ihre Baugruppen als
UNSAFE
gekennzeichnet? Liegt es daran, dass Sie Daten in statischen Variablen speichern? Verwenden Sie .NET-Klassen mit Speicherlecks und können daher nicht inSAFE
undEXTERNAL_ACCESS
Assemblys verwendet werden (z. B.TimeZoneInfo
zum Konvertieren von Werten zwischen zwei TimeZoneIDs)? - Wie viel Speicher ist auf dem Server verfügbar, selbst wenn der SQLCLR-Code nicht ausgeführt wird? Ist SQL Server so konfiguriert, dass genügend Systemspeicher verwendet wird (z. B. die Einstellung Max Server Memory)?
- Gibt es neben SQL Server noch andere Anwendungen/Prozesse auf dem Betriebssystem? Wenn dies der Fall ist, können sie physischen Speicher belegen, der zu SQL Server gehen sollte.