I wanted to check the compression of an index (on a database on Azure SQL DB on Compat 140) and was just lazy and using SSMS 18.3.1 by expanding the table, expanding the indexes, right clicking on the index and selecting Storage -> Manage Compression. I immediately get a pop-up box saying "Cannot show requested dialog. Unable to execute requested command. These columns don't currently have unique values. (System.Data)"
There are six other indexes on this table that all work fine using this method. I have scripted the index, dropped it and recreated to the same effect. You can see from the creation code that there is nothing special in there, not even unique.
This is the index creation code just sanitized of actual names, otherwise completely intact.
CREATE NONCLUSTERED INDEX [IX_IndexName] ON [dbo].[Table] ( [ID] ASC, [Type] ASC ) INCLUDE([OtherColumns]) WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF, DATA_COMPRESSION = PAGE) ON [PRIMARY] GO
Additionally, we have code we run to find any non-clustered index that is not compressed, but the clustered index IS compressed. It works great, except for this same index...where it shows it as not compressed, even though you create it with PAGE compression and when you script it back out, it shows to have that in the WITH statement. Very odd.