**Using the profiler to capture the queries that runs when applying the `Contains` filter, I found the query:** exec sp_executesql N'SELECT sp.name AS [Name], SCHEMA_NAME(sp.schema_id) AS [Schema], ''Server[@Name='' + quotename(CAST( serverproperty(N''Servername'') AS sysname),'''''''') + '']'' + ''/Database[@Name='' + quotename(db_name(),'''''''') + '']'' + ''/StoredProcedure[@Name='' + quotename(sp.name,'''''''') + '' and @Schema='' + quotename(SCHEMA_NAME(sp.schema_id),'''''''') + '']'' AS [Urn], sp.create_date AS [CreateDate], ISNULL(ssp.name, N'''') AS [Owner], CAST(CASE WHEN ISNULL(smsp.definition, ssmsp.definition) IS NULL THEN 1 ELSE 0 END AS bit) AS [IsEncrypted], CASE WHEN sp.type = N''P'' THEN 1 WHEN sp.type = N''PC'' THEN 2 ELSE 1 END AS [ImplementationType], ISNULL(sm.uses_native_compilation,0) AS [IsNativelyCompiled] FROM sys.all_objects AS sp LEFT OUTER JOIN sys.database_principals AS ssp ON ssp.principal_id = ISNULL(sp.principal_id, (OBJECTPROPERTY(sp.object_id, ''OwnerId''))) LEFT OUTER JOIN sys.sql_modules AS smsp ON smsp.object_id = sp.object_id LEFT OUTER JOIN sys.system_sql_modules AS ssmsp ON ssmsp.object_id = sp.object_id LEFT OUTER JOIN sys.all_sql_modules AS sm ON sm.object_id = sp.object_id WHERE (sp.type = @_msparam_0 OR sp.type = @_msparam_1 OR sp.type=@_msparam_2)and(CAST( case when sp.is_ms_shipped = 1 then 1 when ( select major_id from sys.extended_properties where major_id = sp.object_id and minor_id = 0 and class = 1 and name = N''microsoft_database_tools_support'') is not null then 1 else 0 end AS bit)=@_msparam_3 and ISNULL(sm.uses_native_compilation,0)=@_msparam_4 and sp.name like N''%Test%'')',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000),@_msparam_4 nvarchar(4000)',@_msparam_0=N'P',@_msparam_1=N'RF',@_msparam_2=N'PC',@_msparam_3=N'0',@_msparam_4=N'0' Which contains the part: and sp.name like N''%Test%'' And gives me the result: Name Schema Urn CreateDate Owner IsEncrypted ImplementationType IsNativelyCompiled TestCs dbo Server[@Name='DESKTOP-602CJ92\ 2019-01-28 20:05:28.220 dbo 0 1 0 As @BobKlimes noted, which means it is not possible on CS Servers. It also appears to not be possible on CS DB's on CI Servers: [![enter image description here][1]][1] As a result, we have the same issue as you noted in the added [link][2]. Unless you find where the query is stored and change it, I don't think there is a way around it. ---------- Tried to add the collation hint using plan guides ------------------------------------------------- The following query does give me what I want,as I added the COLLATE hint, so i tried creating a plan guide on the original query, with the collated query's query plan XML. **Query that gives me the needed filtering** exec sp_executesql N'SELECT sp.name AS [Name], SCHEMA_NAME(sp.schema_id) AS [Schema], ''Server[@Name='' + quotename(CAST( serverproperty(N''Servername'') AS sysname),'''''''') + '']'' + ''/Database[@Name='' + quotename(db_name(),'''''''') + '']'' + ''/StoredProcedure[@Name='' + quotename(sp.name,'''''''') + '' and @Schema='' + quotename(SCHEMA_NAME(sp.schema_id),'''''''') + '']'' AS [Urn], sp.create_date AS [CreateDate], ISNULL(ssp.name, N'''') AS [Owner], CAST(CASE WHEN ISNULL(smsp.definition, ssmsp.definition) IS NULL THEN 1 ELSE 0 END AS bit) AS [IsEncrypted], CASE WHEN sp.type = N''P'' THEN 1 WHEN sp.type = N''PC'' THEN 2 ELSE 1 END AS [ImplementationType], ISNULL(sm.uses_native_compilation,0) AS [IsNativelyCompiled] FROM sys.all_objects AS sp LEFT OUTER JOIN sys.database_principals AS ssp ON ssp.principal_id = ISNULL(sp.principal_id, (OBJECTPROPERTY(sp.object_id, ''OwnerId''))) LEFT OUTER JOIN sys.sql_modules AS smsp ON smsp.object_id = sp.object_id LEFT OUTER JOIN sys.system_sql_modules AS ssmsp ON ssmsp.object_id = sp.object_id LEFT OUTER JOIN sys.all_sql_modules AS sm ON sm.object_id = sp.object_id WHERE (sp.type = @_msparam_0 OR sp.type = @_msparam_1 OR sp.type=@_msparam_2)and(CAST( case when sp.is_ms_shipped = 1 then 1 when ( select major_id from sys.extended_properties where major_id = sp.object_id and minor_id = 0 and class = 1 and name = N''microsoft_database_tools_support'') is not null then 1 else 0 end AS bit)=@_msparam_3 and ISNULL(sm.uses_native_compilation,0)=@_msparam_4 and sp.name like N''%Test%''COLLATE Latin1_General_CI_AS)',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000),@_msparam_4 nvarchar(4000)',@_msparam_0=N'P',@_msparam_1=N'RF',@_msparam_2=N'PC',@_msparam_3=N'0',@_msparam_4=N'0' **Result:** Name Schema Urn CreateDate Owner IsEncrypted ImplementationType IsNativelyCompiled testCs dbo Server[@Name='DESKTOP-602CJ92\ 2019-01-28 20:05:23.830 dbo 0 1 0 TestCs dbo Server[@Name='DESKTOP-602CJ92\ 2019-01-28 20:05:28.220 dbo 0 1 0 Create the plan guide (XML not shown since too big) Followed this [Answer][3] EXEC sp_create_plan_guide @name = 'Filtering', @stmt = N'SELECT sp.name AS [Name], SCHEMA_NAME(sp.schema_id) AS [Schema], ''Server[@Name='' + quotename(CAST( serverproperty(N''Servername'') AS sysname),'''''''') + '']'' + ''/Database[@Name='' + quotename(db_name(),'''''''') + '']'' + ''/StoredProcedure[@Name='' + quotename(sp.name,'''''''') + '' and @Schema='' + quotename(SCHEMA_NAME(sp.schema_id),'''''''') + '']'' AS [Urn], sp.create_date AS [CreateDate], ISNULL(ssp.name, N'''') AS [Owner], CAST(CASE WHEN ISNULL(smsp.definition, ssmsp.definition) IS NULL THEN 1 ELSE 0 END AS bit) AS [IsEncrypted], CASE WHEN sp.type = N''P'' THEN 1 WHEN sp.type = N''PC'' THEN 2 ELSE 1 END AS [ImplementationType], ISNULL(sm.uses_native_compilation,0) AS [IsNativelyCompiled] FROM sys.all_objects AS sp LEFT OUTER JOIN sys.database_principals AS ssp ON ssp.principal_id = ISNULL(sp.principal_id, (OBJECTPROPERTY(sp.object_id, ''OwnerId''))) LEFT OUTER JOIN sys.sql_modules AS smsp ON smsp.object_id = sp.object_id LEFT OUTER JOIN sys.system_sql_modules AS ssmsp ON ssmsp.object_id = sp.object_id LEFT OUTER JOIN sys.all_sql_modules AS sm ON sm.object_id = sp.object_id WHERE (sp.type = @_msparam_0 OR sp.type = @_msparam_1 OR sp.type=@_msparam_2)and(CAST( case when sp.is_ms_shipped = 1 then 1 when ( select major_id from sys.extended_properties where major_id = sp.object_id and minor_id = 0 and class = 1 and name = N''microsoft_database_tools_support'') is not null then 1 else 0 end AS bit)=@_msparam_3 and ISNULL(sm.uses_native_compilation,0)=@_msparam_4 and sp.name like N''%Test%'')', @type = 'SQL', @params = N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000),@_msparam_4 nvarchar(4000)', @hints = @planXML GO **While I can create the plan guide, does not seem to stick to the original query.** Commands completed successfully. **No dice** Name Schema Urn CreateDate Owner IsEncrypted ImplementationType IsNativelyCompiled TestCs dbo Server[@Name='DESKTOP-602CJ92\ 2019-01-28 20:05:28.220 dbo 0 1 0 **Error found** SELECT * FROM sys.plan_guides CROSS APPLY sys.fn_validate_plan_guide (plan_guide_id) WHERE name = 'Filtering2' [![enter image description here][4]][4] **The same error happened when trying a different approach to adding the XML plan to a plan guide** DECLARE @xml_showplan nvarchar(max); SET @xml_showplan = (SELECT query_plan FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, DEFAULT, DEFAULT) AS qp WHERE st.text LIKE N'%uses_native_compilation%' and st.text like '%COLLATE%' [![enter image description here][5]][5] My guess is that it is short for: > NO_PLAN: query processor could not produce query plan because forced > plan could not be verified to be legal for query [Source][6] I am probably doing something not possible with plan guides. [1]: https://i.sstatic.net/PEwsy.png [2]: https://stackoverflow.com/questions/1224364/sql-server-ignore-case-in-a-where-expression [3]: https://dba.stackexchange.com/questions/130413/fixed-query-plan-for-a-stored-procedure [4]: https://i.sstatic.net/orQn2.png [5]: https://i.sstatic.net/oeo9D.png [6]: https://books.google.be/books?id=QhORDQAAQBAJ&pg=PA64&lpg=PA64&dq=error%208698%20query%20processor%20could%20not&source=bl&ots=Qms4vXTzCB&sig=ACfU3U2GKVOk7-Th9-TfNvDwlrGRjhcGcQ&hl=nl&sa=X&ved=2ahUKEwix6Zq-rZHgAhWNL1AKHUX3ClcQ6AEwAHoECAkQAQ#v=onepage&q=error%208698%20query%20processor%20could%20not&f=false