SQL Server is no longer allowed to phone home – uninstalling CEIP/TELEMETRY service
Which services have been created during the installation?
After installing a SQL Server instance, I typically look at the installed services with the customer or training participants.
During installation, the “SQL Server Configuration Manager” is set up and linked in the Windows Start menu.
The advantage of this interface is that only the services relevant for the SQL Server are displayed. In addition, further configuration options are available in the properties, which the classic administration view of the services does not offer.
But are all the services set up during installation really displayed? No, two services are missing: “SQL Server CEIP service” and “SQL Server VSS Writer”.
What are the purposes of these two additional services?
The VSS Writer is responsible for coordinating snapshot backups and will not be considered further here.
The task of the CEIP service only becomes apparent when the abbreviation CEIP is resolved: Customer Experience Improvement Program. The name of the service (SQLTELEMETRY) also indicates the purpose. It is about collecting information about the use of the SQL Server and transmitting it to Microsoft. In the documentation, Microsoft talks about “usage and diagnostic data collection for SQL Server”. This service “phones home”, at least if the network allows this connection.
How to prevent the collection?
Microsoft officially only supports configuration using a program linked in the Start menu or by changing the Windows Registry. The documentation says: “Removing or disabling the CEIP service for SQL is not supported.”
Regardless of how you interpret the word “supported”, the service is not necessary for SQL Server to function. Thus, disabling or uninstalling it has no technical impact either. Deactivation is the “soft” method. The service can be reactivated later, and the change is easy to perform.
How to uninstall the service?
If you want to completely uninstall the service, for example to prevent accidental activation, then PowerShell comes into play. While there is no direct command to remove a service, the corresponding CIM class provides the “Delete” method.
To remove the telemetry services, you can use this code:
$telemetryService = Get-CimInstance -ClassName Win32_Service -Filter "Name like 'SQLTELEMETRY%'" $null = $telemetryService | Invoke-CimMethod -MethodName StopService $null = $telemetryService | Invoke-CimMethod -MethodName Delete
If you want to work with the appropriate WMI commands, the code looks like this:
$telemetryService = Get-WmiObject -Class Win32_Service -Filter "Name like 'SQLTELEMETRY%'" $null = $telemetryService | ForEach-Object StopService $null = $telemetryService | ForEach-Object Delete
If you want to learn more about the differences between the CIM and the WMI commands, I recommend the article “Get-CIMInstance Vs Get-WMIObject: What's The Difference?” by Mike Kanakos.
Both Get-CimInstance and Get-WmiObject have a ComputerName parameter that you can use to retrieve services on other machines. This means you don't necessarily have to run the PowerShell code on the SQL Server itself.
It is possible to permanently disable the collection of SQL Server usage and diagnostic data by uninstalling the corresponding service, and we recommend doing so.
Principal Consultant bei ORDIX
Bei Updates im Blog, informieren wir per E-Mail.