What Is the SQL Server CEIP Service?

SQL Server
17 Comments

The CEIP Service is the Customer Experience Improvement Program that sends telemetry data back to Microsoft.

When you install Microsoft SQL Server, the CEIP Service is installed too. You can’t disable it during installation: it shows up in your services list whether you want it or not.

SQL Server CEIP Service
You know it’s high quality when they can’t even capitalize SQL Server correctly

What data does the CEIP Service collect?

Microsoft goes into a lot of detail here, and the short answer is things like:

  • Crash dumps – which may contain your data and the exact contents of your queries, which can contain personally identifiable information
  • Login names, email addresses, location information, server names (read the “End-user identifiable information” section, in particular the part about “may be emitted to Microsoft to deliver new hybrid and cloud features”)
  • Behavioral/usage data, server configuration, feature configuration, hardware manufacturers
  • Database names, table names, and column names

If you’d like to see examples of the exact queries it runs, I captured a trace of the CEIP Service’s queries in this post.

Can you disable the CEIP Service?

If you’re using SQL Server Standard Edition or Enterprise Edition, then on the SQL Server, go into the Start menu, Microsoft SQL Server, SQL Server Error and Usage Reporting. A dialog box will let you un-check the error reporting and feature usage reporting.

After you uncheck those boxes and click OK, the CEIP Service will still be running, but it won’t send any data back to Microsoft. The documentation says so, so it must be true, right? (Tin foil hat goes here.) If you’re managing a lot of servers in an enterprise, you can also use Group Policy to push out these registry keys to control data collection and crash dump collection.

A security-conscious customer of mine goes so far as to disable the service, then change the logon account for the SQLCEIP service to an invalid account & password, and uses PowerShell to check its login on a regular basis, making sure it doesn’t get re-enabled by a Cumulative Update.

However, if you’re using SQL Server Developer Edition or Express Edition, you can’t disable CEIP for SQL Server. Microsoft’s policy is that people who use free versions of SQL Server are paying for that by sending in their private data to Microsoft. The CEIP Service documentation page says:

Even if you follow the above instructions on Developer Edition, they’ll appear to work, but you’ll still be sending telemetry data back to Microsoft.

Previous Post
Poor Man’s Resource Governor: Database-Scoped Configurations
Next Post
Woohoo! We Hit 25,000 YouTube Subscribers.

17 Comments. Leave new

  • Interesting…

    Although if your SQL Server’s can’t access the internet then the CEIP service wouldn’t be able to send the telemetry data back to the mother ship (unless carrier pigeon is involved). Any idea if there is any impact to the instance if it can’t phone home for a long period of time?

    Reply
    • Your best bet there would be to ask Microsoft rather than me. 😉

      Reply
      • I can answer that – we have seen an instance where SSRS reports were dramatically slowed down (20-30sec wait before rendering) due to aggressive internet traffic blocking which prevented watson.telemetry.microsoft.com from being reachable. Disabling the CEIP options immediately removed that delay.

        Reply
  • Chad Franklin
    October 8, 2020 8:40 am

    Oooo the powershell script to check it regularly is a good idea!
    Another solution is to disable internet access from the database server.

    Reply
  • Thanks for reminding me – forgot to disable this on a fresh installation. Added to my install checklist.

    However, when I tried to disable on this server, starting up SQL Error and Usage Reporting resulted in a brief command prompt window, followed by nothing. I had to follow the final suggestion in this thread to get it working: https://feedback.azure.com/forums/908035-sql-server/suggestions/39081679-sql-server-error-and-usage-report-does-not-work

    Reply
  • Strictly speaking I believe that disabling the CEIP service puts you into an unsupported configuration – it is in the remarks of the doc https://docs.microsoft.com/en-us/sql/sql-server/usage-and-diagnostic-data-in-local-audit?view=sql-server-ver15#remarks

    Not sure if it is checked or if it may break a future CU that may expect to be able to start the service but it’s in the docs.

    Reply
  • Jason Musgrove
    October 9, 2020 5:01 am

    To prevent the CEIP service from ever starting, I make use of the slightly obscure Image File Execution Options registry key to specify an non-existent debugger for “sqlceip.exe”, which prevents any attempt to execute “sqlceip.exe” (in any path) to fail with an ERROR_FILE_NOT_FOUND.

    Combining this with usual service disabling techniques add another layer of defence against data leakage through this service.

    Reply
  • I’m curious, I’ve personally never worked in a shop where the database servers had access to internet. Isn’t that standard practice? I would be really interested to know the percentage of servers that CEIP can actually do something.

    Reply
  • I wrote a PowerShell script to disable it. We run this on all of our new servers as part of our standard build config: http://www.sqlnuggets.com/blog/disable-telemetry-on-multiple-sql-servers-with-powershell/

    Reply
  • If it helps anyone out, I use a little app called ExecTI that allows you to run apps in the context of the TrustedInstaller account (lots of utilities around that do similar). You can use this to open snap-ins such as Services and TaskScheduller and can then have full control to disable many services and tasks you might not otherwise be able to, including the CEIP and related services.

    Reply
  • Terry N. Anthony
    January 6, 2021 7:33 am

    The SQL Server Integration Services CEIP service exists as well. Does it do all the bad things that the SQL server CEIP service does so I would need to disable it as well?

    Reply
  • Gordon Feeney
    January 11, 2021 4:07 am

    CEIP phone home.

    Reply
  • Hello,
    On a FCI cluster, is it safe to remove the SQL Server CEIP role ?
    Otherwise, the whole role stay in failed status when disabling CEIP service.
    Thanks,
    Ka

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.

Menu