
Vor kurzem wurde ich mit der Verwaltung eines gehosteten Systems beauftragt, auf dem wir unser eigenes Produkt für einen Kunden hosten. Jeder Kunde erhält einen eindeutigen Benutzer für eine bestimmte SQL-Instanz, und wir führen mehrere Instanzen aus, wobei eine Instanz jedoch zwischen 50 und 100 Benutzer haben kann. Wir erlauben auch Drittanbietern, mit denen wir zusammenarbeiten, Software auszuführen, die auf dieselbe Datenbank des Kunden zugreift, wie unsere eigene Software es für denselben Benutzer zulässt. Ich habe jedoch festgestellt, dass die Programme von Drittanbietern häufig schlecht implementiert sind und enorme Mengen an CPU-Leistung verbrauchen, was den Kunden ausbremst. Ich weiß, dass man mit Resource Governor die Menge der Ressourcen begrenzen kann, auf die ein bestimmter Benutzer Zugriff hat. Ich frage mich jedoch, ob es eine Möglichkeit gibt, die Ressourcen zu begrenzen, auf die ein bestimmter Programmname Zugriff hat, oder ihm eine niedrigere Priorität zuzuweisen. Wir haben einen begrenzten Zeitrahmen, in dem diese Anwendungen von Drittanbietern ausgeführt werden können, sodass ich die Ausführungszeit der Anwendung nicht weiter verlängern kann. Ich habe bisher keine Möglichkeit gefunden, die Ressourcen oder die Priorität eines bestimmten Programms beim Zugriff auf SQL zu begrenzen. Ich frage mich, ob es Ressourcen für diese Art von Informationen gibt, die bei meinen Suchen nicht aufgetaucht sind?
Antwort1
Ich habe mich ein wenig eingelesen und wie es aussieht, können Sie mit Resource Governor jede Sitzung/Verbindung klassifizieren und einem bestimmten Ressourcenpool zuweisen. Der Ressourcenpool ist das, was die Ressourcen nach Belieben einschränken kann. Um dies zu erreichen, müssten Sie jedoch eine Klassifizierungsfunktion definieren, die sich die Attribute der Sitzung ansieht und feststellt, zu welchem Ressourcenpool die Verbindung gehört.
Sie können die APP_NAME()
Funktion in SQL (innerhalb der Klassifizierungsfunktion) verwenden, um den Anwendungsnamen abzurufen, der die Verbindung herstellt. Und ihn dann einem Ressourcenpool mit weniger zugewiesenen Ressourcen zuweisen.
Referenzlinks:
Ressourcen-Governor -https://msdn.microsoft.com/en-us/library/bb933866(v=sql.105).aspx
Erstellen und Testen einer benutzerdefinierten Klassifikatorfunktion -https://msdn.microsoft.com/en-us/library/cc645892(v=sql.105).aspx