Der SQL Server darf nicht mehr nach Hause telefonieren – Deinstallation des CEIP/TELEMETRY Dienstes
Welche Dienste sind bei der Installation erstellt worden?
Nach der Installation einer SQL Server-Instanz schaue ich mit dem Kunden oder den Schulungsteilnehmern typischerweise auf die installierten Dienste.
Bei der Installation wird dazu der „SQL Server Configuration Manager“ eingerichtet und im Windows-Startmenü verknüpft.
Vorteil dieser Oberfläche ist, dass nur die für den SQL Server relevanten Dienste angezeigt werden. Zudem stehen in den Eigenschaften weitere Konfigurationsmöglichkeiten zur Verfügung, die die klassische Verwaltungsansicht der Dienste nicht bietet.
Aber werden wirklich alle bei der Installation eingerichteten Dienste angezeigt? Nein, zwei Dienste fehlen: „SQL Server CEIP service“ und „SQL Server VSS Writer“.
Welche Aufgaben haben die zwei zusätzlichen Dienste?
Der VSS Writer ist für die Koordinierung von Snapshot Backups zuständig und soll hier nicht weiter betrachtet werden.
Die Aufgabe des CEIP-Dienstes erschließt sich erst, wenn die Abkürzung CEIP aufgelöst wird: Customer Experience Improvement Program. Auch der Name des Dienstes (SQLTELEMETRY) weist auf den Zweck hin. Es geht darum, Informationen über die Verwendung des SQL Servers zu sammeln und an Microsoft zu übermitteln. In der Dokumentation spricht Microsoft von „der Sammlung von Nutzungs- und Diagnosedaten“. Dieser Dienst „telefoniert nach Hause“, zumindest wenn das Netzwerk diese Verbindung zulässt.
Wie kann die Sammlung unterbunden werden?
Microsoft unterstützt offiziell nur die Konfiguration mithilfe eines im Startmenü verknüpften Programms oder per Änderung an der Windows Registry. Die Dokumentation sagt: „Das Entfernen oder Deaktivieren des CEIP-Diensts für SQL wird nicht unterstützt.“
Wie auch immer man das Wort „unterstützt“ auslegen mag, für die Funktionsweise des SQL Servers ist der Dienst nicht notwendig. Damit hat eine Deaktivierung oder Deinstallation aber auch keine technischen Auswirkungen. Die Deaktivierung ist dabei die „sanfte“ Methode. Der Dienst kann später wieder aktiviert werden und die Änderung ist einfach durchführbar.
Wie kann der Dienst deinstalliert werden?
Wenn Sie den Dienst komplett deinstallieren möchten, um zum Beispiel eine versehentliche Aktivierung zu verhindern, dann kommt PowerShell ins Spiel. Es gibt zwar keinen direkten Befehl zur Entfernung eines Dienstes, aber die entsprechende CIM-Klasse stellt die Methode „Delete“ zur Verfügung.
Zur Entfernung der Telemetry-Dienste können Sie diesen Code verwenden:
$telemetryService = Get-CimInstance -ClassName Win32_Service -Filter "Name like 'SQLTELEMETRY%'" $null = $telemetryService | Invoke-CimMethod -MethodName StopService $null = $telemetryService | Invoke-CimMethod -MethodName Delete
Wenn Sie mit den entsprechenden WMI-Befehlen arbeiten möchten, sieht der Code so aus:
$telemetryService = Get-WmiObject -Class Win32_Service -Filter "Name like 'SQLTELEMETRY%'" $null = $telemetryService | ForEach-Object StopService $null = $telemetryService | ForEach-Object Delete
Wenn Sie mehr zu den Unterschieden zwischen den CIM- und den WMI-Befehlen erfahren möchten, empfehle ich den Artikel „Get-CIMInstance Vs Get-WMIObject: What's The Difference?“ von Mike Kanakos.
Sowohl Get-CimInstance als auch Get-WmiObject haben einen Parameter ComputerName, mit dem Sie die Dienste auf anderen Rechnern abrufen können. Damit müssen Sie den PowerShell Code nicht unbedingt auf dem SQL Server selbst ausführen.
Fazit
Eine nachhaltige Deaktivierung der Sammlung von Nutzungs- und Diagnosedaten des SQL Servers durch eine Deinstallation des entsprechenden Dienstes ist möglich und wird von uns auch empfohlen.
Seminarempfehlung
ADMINISTRATION EINER MICROSOFT SQL SERVER INFRASTRUKTUR MS-SQL-02
Zum SeminarPrincipal Consultant bei ORDIX
Bei Updates im Blog, informieren wir per E-Mail.
Kommentare