One DBA's Ongoing Search for Clarity in the Middle of Nowhere


*or*

Yet Another Andy Writing About SQL Server

Showing posts with label Scripts. Show all posts
Showing posts with label Scripts. Show all posts

Friday, October 30, 2020

Error: 8623 - The query processor ran out of internal resources and could not produce a query plan

 Unfortunately a common error in many of our client environments is this:

--

Error: 8623, Severity: 16, State: 1.

The query processor ran out of internal resources and could not produce a query plan. This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions. Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information.

--

There are many potential causes for this, and the text of this particular error is very well-written because the primary cause is exactly what is listed - a complex query.

https://hbr.org/resources/images/article_assets/2018/05/may18_9_170094377.jpg

The gotcha of course is finding the complex query, especially if it only occurs intermittently or during varying times of the day.

My go-to tool for this and other similar situations is our old friend Extended Events.

One of the keys with Extended Events is to only trap the needed information - only the relevant events, and only the relevant fields for those particular events.

Here is the code for a session to capture 8623 events:

--

CREATE EVENT SESSION [Error8623] ON SERVER

ADD EVENT sqlserver.error_reported(
ACTION(package0.collect_system_time
, sqlserver.client_app_name
, sqlserver.client_hostname
, sqlserver.database_id
, sqlserver.database_name
, sqlserver.server_instance_name
, sqlserver.server_principal_name
, sqlserver.sql_text
, sqlserver.username)
WHERE ([error_number]=(8623)))
ADD TARGET package0.event_file(SET filename=N'Error8623'),
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB
, EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
, MAX_DISPATCH_LATENCY=30 SECONDS
, MAX_EVENT_SIZE=0 KB
, MEMORY_PARTITION_MODE=NONE
, TRACK_CAUSALITY=OFF
, STARTUP_STATE=ON)
GO

--


This will collect the relevant info but *only* about error 8623's.  Because there is no path built into the event_file target, it will by default write to the SQL Server error log path.  As you can see we are also not collecting a lot of different data fields - just the minimum we need to run down the culprit and where it may be coming from.

My preferred method to access data like this is to query the event file via TSQL - a query for this particular file would look like this:

--

SELECT 
n.value ('(action[@name="server_instance_name"]/value)[1]','nvarchar(500)') AS [server_instance_name]
, n.value ('(action[@name="collect_system_time"]/value)[1]', 'datetime') AS [collect_system_time]
, n.value ('(data[@name="error_number"]/value)[1]', 'int') AS [error_number]
, n.value ('(action[@name="database_id"]/value)[1]', 'int') AS [database_id]
, n.value ('(action[@name="database_name"]/value)[1]', 'nvarchar(500)') AS [database_name]
, n.value ('(action[@name="client_app_name"]/value)[1]','nvarchar(500)') AS [client_app_name]
, n.value ('(action[@name="server_principal_name"]/value)[1]','nvarchar(500)') AS [server_principal_name]
, n.value ('(action[@name="client_hostname"]/value)[1]','nvarchar(500)') AS [client_hostname]
, n.value ('(action[@name="sql_text"]/value)[1]','nvarchar(max)') AS [sql_text]
FROM 
(
SELECT CAST(event_data AS XML) AS event_data
FROM sys.fn_xe_file_target_read_file(
N'Error8623*.xel'
, NULL
, NULL
, NULL)
) AS Event_Data_Table
CROSS APPLY event_data.nodes('event') AS q(n)

--

Again by not providing an explicit path to the XEL file, the fn_xe_file_target_read_file function looks in the default SQL Server error log path for the file(s) - if you *do* store your event_file output somewhere else, you need to include that explicit path!

One other important note relates to the sql_text field - you can see in the script I have it cast as an nvarchar(max) which is especially important here because we are going to be pulling back complex queries, which almost always equates to *long* queries - often even a 4000 or 8000 character field will not hold these queries without chopping them off!

https://pixabay.com/photos/man-breaking-technique-pavers-elbow-80638/

Also note that this query returns the collect_system_time value in its default format, which is UTC.  To convert that to the local server time, you need to wrap it in a couple of functions as described in a Stack Overflow post at https://stackoverflow.com/questions/8038744/convert-datetime-column-from-utc-to-local-time-in-select-statement/57503319:

Instead of:

n.value ('(action[@name="collect_system_time"]/value)[1]', 'datetime') AS [collect_system_time]

Wrap it like this:

DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()),n.value ('(action[@name="collect_system_time"]/value)[1]', 'datetime')) AS [collect_system_time in local time]

--

Hopefully you will find this useful, and this is truly meaningful for any error you are trying to run down - simply change the filter in the XEvents session definition from 8623 to whatever error you are looking for (and probably change the name of the event_file), and voila - you now have a session to run down the source queries for that new error, without any changes to the data return query.

At this point you may wonder what a "complex" query looks like - here is one sample I have found recently:

--

SELECT Item_ID, PA_Rank, Pj_Hours, Pj_Cnt, Bio_Rank FROM (  SELECT SM.Staff_ID AS Item_ID,    0 AS PA_Rank,    0 AS Pj_Hours,    0 AS Pj_Cnt,    0 AS Bio_Rank  FROM Staff_Main SM WITH (NOLOCK)) TBL INNER JOIN Staff_Main SM WITH (NOLOCK) ON SM.Staff_ID = TBL.Item_ID INNER JOIN Office_Main OM WITH (NOLOCK) ON OM.Office_ID = SM.Office_Topic_ID WHERE SM.Staff_ID > -40   AND SM.Is_Active = 1   AND (SM.Staff_Position_ID IN (106))   AND (SM.Office_Topic_ID IN           (SELECT * FROM dbo.List_SubTopics(2005514)))   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1013)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1014)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1032)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000002)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8597)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1116)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1000)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1001)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1080)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000010)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8589)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8590)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1081)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8588)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1041)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1117)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1003)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8605)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1004)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1005)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8598)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1024)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000009)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1045)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1007)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1008)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1009)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1010)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1127)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1119)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1042)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1120)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1012)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1101)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8599)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000003)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1083)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8592)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1048)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1015)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1043)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1121)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1038)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1039)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1016)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1046)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000012)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1017)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1018)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1019)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1020)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1122)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8603)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1118)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1123)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1021)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8602)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1022)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1124)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1125)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000007)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1023)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1126)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000004)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1103)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8604)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1025)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8591)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1128)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1026)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1107)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1082)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1027)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1028)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1044)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1047)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1029)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1030)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8606)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000008)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000005)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1129)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1031)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000011)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1130)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8601)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 9000000006)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1033)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8600)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1131)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1034)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8585)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1040)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1035)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1132)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1133)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8586)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1036)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1037)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8594)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8587)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 1134)   AND EXISTS     (SELECT Nav_Staff_ID FROM HR_Emp_Language1 SL WITH (NOLOCK)      WHERE SL.Nav_Staff_ID = SM.Staff_ID        AND SL.Language_Rec_ID = 8593)   AND EXISTS    (SELECT TSA.Topic_Staff_ID      FROM Topic_Staff AS TSA WITH (NOLOCK)     WHERE TSA.Staff_ID = SM.Staff_ID       AND TSA.Contact_Role_Ref_ID IN (655))   AND SM.Status = 'Published' ORDER BY PA_Rank DESC, Pj_Hours DESC, Bio_Rank DESC, SM.LastName, SM.FirstName

--

https://www.mememaker.net/api/bucket?path=static/img/memes/full/2019/May/15/1/say-what-440.png

Complex enough for you?  Maybe you like this one:

--

(@dateFilter int, @staffID nvarchar(5))SELECT [PM].[Project_ID],  [PM].[TB_DATE_OPENED],  [PM].[Short_Desc],  [PM].[Project_Type_Code],  [PM].[Case_Number],  [PS].[Responsibility_Desc] FROM [Project_Main] [PM] WITH (NOLOCK) INNER JOIN [Project_Staff] [PS] WITH (NOLOCK) ON [PS].[Project_ID] = [PM].[Project_ID] WHERE [PM].[Status] LIKE 'Published%' AND [PM].[Status] NOT LIKE 'withdrawn' AND [PM].[TB_DATE_OPENED] > (getDate() - @dateFilter) AND [Short_Desc] IS NOT NULL AND [Short_Desc] NOT LIKE 'TB Feed' AND [Short_Desc] NOT LIKE '%UNSOLD PROPOSAL%' AND ([Short_Desc] NOT LIKE '%follow-on%' or datalength([Short_Desc])>50) AND [Short_Desc] NOT LIKE 'confidential%' AND [PS].[Staff_ID]=@staffID AND [Project_Type_Code] = 'c' AND PM.Project_ID IN ('65011625', '65025688', '65032850', '65042668', '65052747', '65058320', '65130746', '65143481', '65144809', '65147726', '65153299', '65161789', '65079545', '65083790', '65088035', '65110849', '65119339', '65123584', '4000218', '65018549', '65027039', '65027254', '65034201', '65052724', '65150620', '65100793', '65110826', '65126478', '65127806', '65140587', '65141915', '65054052', '65058343', '65082485', '65086684', '65093846', '65095174', '65027062', '65027231', '65032804', '65042714', '65047128', '65055449', '65153345', '65157590', '65159087', '65163332', '65120713', '65129372', '65130700', '65137693', '65139021', '65143435', '65096740', '65098068', '65103733', '65107978', '65109475', '65113720', '65071101', '65072429', '65078171', '65079760', '65081088', '65093654', '65027208', '65031499', '65054098', '65055426', '65058512', '65069750', '65157736', '65163355', '65110657', '65119362', '65126432', '65142084', '65143412', '65149031', '65075369', '65081111', '65082439', '65088058', '65093677', '65098091', '65018695', '65041509', '65052578', '65053906', '65059740', '65085210', '65117919', '65129326', '65149223', '65151802', '65086538', '65093700', '65095028', '65097945', '65105107', '65117842', '65005860', '65008854', '65042814', '65048648', '65049976', '65073780', '65129349', '65137716', '65139167', '65140710', '65149200', '65161981', '65075446', '65098045', '65105207', '65106412', '65119193', '65129011', '65017244', '65027400', '65039966', '65051204', '65051373', '65052532', '65159256', '65160338', '65160584', '65161835', '65074095', '65093992', '65095074', '65129034', '65140687', '65150597', '65007234', '65007480', '65018718', '65051227', '65052555', '65073949', '65140418', '65150451', '65160607', '65161689', '65106581', '65117819', '65127975', '65129057', '65129303', '65139213', '65074072', '65083982', '65095097', '65095220', '65095343', '65096425', '65035429', '65043006', '65081211', '65083713', '65084128', '65085041', '65145147', '65146475', '65150720', '65151633', '65085456', '65092618', '65108270', '65133740', '65135068', '65138898', '65025588', '65026916', '65035867', '65042568', '65047228', '65051519', '65154942', '65157444', '65112492', '65118111', '65129472', '65136634', '65143581', '65146083', '65052847', '65055349', '65087022', '65102459', '65104961', '65106289', '65017321', '65032973', '65042960', '65048210', '65068522', '65069850', '65127537', '65143189', '65147849', '65153422', '65154504', '65156508', '65082339', '65086830', '65092572', '65099319', '65102651', '65103979', '65048356', '65048602', '65053975', '65055303', '65066664', '65068668', '65142207', '65152240', '65160146', '65086976', '65100501', '65123899', '65131928', '65135260', '65136588', '65010543', '65014373', '65036013', '65044088', '65045754', '65056823', '65122087', '65136150', '65143727', '65146229', '65155134', '65158626', '65058151', '65066564', '65088204', '65088542', '65089870', '65092034', '65000364', '65003358', '65013145', '65044480', '65046644', '65055595', '65146329', '65101875', '65113574', '65122187', '65132220', '65136050', '65145001', '65057261', '65059425', '65066956', '65068622', '65070786', '65088104', '65002674', '65014327', '65015409', '65024314', '65045708', '65066856', '65133694', '65144855', '65145101', '65145937', '65146183', '65147265', '65102313', '65103395', '65110726', '65122379', '65132366', '65133448', '65067938', '65068184', '65069266', '65079837', '65080919', '65099903', '65025542', '65033165', '65034247', '65035575', '65036657', '65045854', '65146037', '65154988', '65102167', '65103249', '65132512', '65133594', '65143627', '65144709', '65067002', '65067248', '65078363', '65079691', '65099757', '65101921', '65046690', '65048018', '65055887', '65058051', '65058297', '65059379', '12000331', '65000633', '65013368', '65026103', '65042253', '65046498', '65128742', '65131161', '65140979', '65144394', '65151556', '65070640', '65090039', '65102774', '65118426', '65118924', '65123169', '65012063', '65022379', '65048894', '65049392', '65054513', '65066372', '65137255', '65138798', '65148616', '65070165', '65081526', '65088473', '65097676', '65104623', '65121105', '65060776', '65084749', '65085748', '65089163', '65094736', '65104646', '65129618', '65129787', '65137447', '65143020', '65152340', '65035114', '65048725', '65055180', '65056385', '65067746', '65072037', '65149990', '65151035', '65154281', '65154404', '65157982', '65076451', '65097009', '65114112', '65121772', '65126063', '65130969', '65018280', '65039428', '65043750', '65045001', '65051742', '65071639', '65161045', '65161543', '65162794', '65128413', '65131490', '65139980', '65148808', '65152217', '65154381', '65092864', '65098858', '65111593', '65116176', '65120421', '65125496', '65077633', '65082708', '65084374', '65085625', '65087789', '65092787', '65017467', '65018180', '65040779', '65060255', '65081403', '65085725', '65135552', '65140003', '65149661', '65153030', '65159479', '65161520', '65092764', '65104248', '65106873', '65109037', '65114035', '65127062', '65006421', '65027646', '65032389', '65040802', '65050368', '65051450', '65150182', '65158174', '65161420', '65094161', '65097484', '65106312', '65114304', '65115386', '65141354', '65060278', '65071516', '65084082', '65084251', '65086415', '65087497', '65026464', '65050268', '65050391', '65053637', '65072990', '65081695', '65140295', '65141377', '65149369', '65159648', '65162894', '65082777', '65085064', '65118065', '65120106', '65120229', '65140172', '65032097', '65056156', '65056654', '65059986', '65060484', '65068891', '65162625', '65132827', '65133325', '65142230', '65145562', '65151135', '65158795', '65091705', '65097776', '65113843', '65122748', '65126578', '65129495', '65072721', '65079468', '65084543', '65085954', '65088373', '65088871', '65043527', '65049017', '65049515', '65058220', '65068997', '65076528', '65131261', '65154573', '65156731', '65158403', '65093969', '65094467', '65105828', '65113451', '65115609', '65124314', '65009246', '65017988', '65046375', '65049707', '65057530', '65070265', '65144102', '65152509', '65160169', '65103564', '65108639', '65119216', '65124122', '65130869', '65140856', '65073182', '65080252', '65080842', '65090245', '65090331', '65099150', '65047643', '65053016', '65059594', '65070955', '65077902', '65078984', '65126186', '65152117', '65158105', '65159187', '65162433', '65081234', '65082316', '65088181', '65089263', '65095841', '65114825', '65027185', '65046169', '65053408', '65057736', '65070471', '65076720', '65130079', '65078386', '65080550', '65088957', '65117089', '65119508', '65121672', '65024629', '65038154', '65041947', '65044111', '65046275', '65048433', '65155655', '65157321', '65114533', '65121566', '65122064', '65136173', '65151327', '65153491', '65078778', '65080942', '65087391', '65091221', '65096096', '65108539', '65054974', '65055472', '65057138', '65067417', '65067915', '65069581', '65011994', '65016322', '65055864', '65056946', '65067517', '65068599', '65089747', '65099734', '65135781', '65141440', '65010812', '65014058', '65015140', '65025419', '65034616', '65036780', '65148324', '65152701', '65154865', '65157029', '65164062', '65089847', '65093093', '65100716', '65125602', '65133717', '65146160', '65057928', '65068207', '65078486', '65079568', '65080650', '65081732', '65017696', '65024858', '65046415', '65053245', '65057490', '65079047', '65141062', '65161291', '65122754', '65124414', '65131576', '65132572', '65132904', '65136817', '65081632', '65081964', '65086209', '65100272', '65110351', '65115592', '65010772', '65035031', '65043189', '65050351', '65060716', '65066335', '65131599', '65132595', '65142960', '65143956', '65085854', '65087182', '65091805', '65099963', '65107457', '65111324', '65067663', '65068874', '65074493', '65077696', '65079024', '65084858', '65040464', '65046129', '65050374', '65053531', '65056448', '65067686', '65152423', '65155340', '65135775', '65146681', '65147013', '65149930', '65150926', '65151095', '65101483', '65117467', '65118294', '65128373', '65132618', '65134115', '65068682', '65068851', '65071768', '65086163', '65089080', '65090408', '65046106', '65056471', '65057799', '65063418', '65067377', '65067832', '65134301', '65139711', '65140043', '65144002', '65145662', '65157023', '65068828', '65069160', '65085685', '65086017', '65101460', '65122731', '65024689', '65025359', '65054742', '65055993', '65066149', '65072054', '65111178', '65161122', '65078546', '65080467', '65087374', '65088625', '65105937', '65109850', '65000862', '65066126', '65072077', '65078569', '65079239', '65083438', '65141208', '65153651', '65111201', '65114527', '65122685', '65128513', '65129847', '65138546', '65087397', '65090600', '65097092', '65097215', '65103043', '65109873', '65039299', '65060693', '65088410', '65091828', '65097238', '65098489', '65155171', '65157092', '65162502', '65119960', '65121211', '65125957', '65131367', '65152592', '65153843', '65098566', '65098735', '65108645', '65114550', '65115801', '65116047', '65043235', '65043358', '65049186', '65054719', '65060670', '65065957', '65159771', '65141254', '65143787', '65148410', '65153697', '65153820', '65158566', '65097261', '65098712', '65119737', '65125934', '65135844', '65137049', '65070580', '65071908', '65075990', '65077318', '65087351', '65091851', '65048662', '65054911', '65055243', '65056239', '65059073', '65069306', '65141317', '65151550', '65162957', '65091788', '65097693', '65126993', '65134238', '65134570', '65138068', '65072223', '65076053', '65079385', '65083630', '65084211', '65085539', '65027414', '65066212', '65067208', '65087852', '65088848', '65091682', '65127099', '65130929', '65134132', '65152784', '65093471', '65094799', '65098629', '65101629', '65122771', '65123767', '65008333', '65018993', '65040550', '65044878', '65044964', '65077679', '65155094', '65156422', '65125287', '65127208', '65127291', '65128619', '65140189', '65145599', '65083584', '65090162', '65091158', '65094490', '65102565', '65123209', '65007941', '65033663', '65040696', '65041569', '65050975', '65052930', '65133846', '65144457', '65155486', '65155572', '65156814', '65058881', '65070242', '65073242', '65095964', '65122817', '65128227', '65025104', '65044918', '65047580', '65051410', '65057659', '65058987', '65111516', '65115346', '65128828', '65132658', '65148393', '65164039', '65076299', '65080129', '65082791', '65083129', '65092870', '65100441', '65058595', '65069956', '65071622', '65073743', '65083776', '65084065', '65108908', '65109246', '65124351', '65139542', '65088934', '65090268', '65095426', '65096219', '65097885', '65102711', '65038967', '65047626', '65048708', '65055197', '65057361', '65071430', '65093906', '65122625', '65151596', '65152678', '65158088', '65159170', '65043444', '65044772', '65048854', '65049100', '65050182', '65053723', '65152824', '65153906', '65154152', '65159562', '65131430', '65137922', '65142545', '65145791', '65148201', '65151742', '65060461', '65077527', '65078609', '65084019', '65118987', '65130348', '65017115', '65024775', '65025273', '65045502', '65049747', '65050743', '65124829', '65131991', '65135406', '65160378', '65160876', '65082047', '65083873', '65103604', '65104102', '65108015', '65114679', '65053162', '65054158', '65057905', '65058403', '65070972', '65071470', '65000610', '65032910', '65039359', '65047019', '65049724', '65054181', '65153239', '65153737', '65154235', '65154733', '65121818', '65128267', '65139130', '65140126', '65146790', '65147786', '65056886', '65079651', '65082356', '65082854', '65091012', '65110955', '4000109', '65034141', '65038555', '65039551', '65047042', '65056863', '65128290', '65149017', '65150013', '65151012', '65154258', '65092741', '65095658', '65096654', '65110720', '65121626', '65126369', '65067440', '65067769', '65069764', '65075429', '65087998', '65089495', '65025794', '65037155', '65055389', '65066750', '65081357', '65086767', '65147617', '65150322', '65150703', '65155732', '65156654', '65088021', '65089017', '65097132', '65107042', '65111739', '65114985', '65027523', '65048250', '65052993', '65053491', '65078303', '65080882', '65134739', '65138154', '65157630', '65160209', '65162373', '65162871', '65086959', '65089538', '65103773', '65109014', '65112429', '65127577', '65046976', '65050935', '65056929', '65068247', '65068290', '65074241', '65152200', '65155987', '65157481', '65157653', '65160186', '65132011', '65134716', '65140839', '65149323', '65149538', '65150989', '65076405', '65076903', '65110912', '65119568', '65123355', '65131513', '65005585', '65014241', '65035807', '65041048', '65042299', '65059611', '65149346', '65151510', '65151679', '65152761', '65096156', '65097653', '65118211', '65122296', '65128788', '65146269', '65068267', '65069521', '65071685', '65074931', '65090746', '65092243', '65035489', '65054350', '65074908', '65080859', '65083023', '65092220', '65122147', '65124852', '65133508', '65139459', '65158320', '65094384', '65096179', '65098343', '65099425', '65100876', '65115655', '65019279', '65031267', '65048081', '65048579', '65054828', '65059654', '65160123', '65126495', '65130325', '65137072', '65138483', '65138981', '65158712', '65076468', '65080298', '65104855', '65112515', '65113013', '65116843', '65034078', '65037410', '65037908', '65069827', '65074155', '65076860', '65148954', '65156399', '65077985', '65129933', '65141294', '65144626', '65146120', '65147743', '65032890', '65040719', '65043965', '65045047', '65066687', '65069933', '65137856', '65141102', '65148762', '65152263', '65073265', '65088327', '65091659', '65094576', '65115134', '65123876', '65012724', '65027331', '65069541', '65082525', '65083607', '65091267', '65131842', '65098300', '65099296', '65102542', '65103624', '65105247', '65117235', '65047497', '65049661', '65049916', '65053989', '65055910', '65056408', '65156877', '65073720', '65075884', '65079714', '65080212', '65109767', '65117925', '65025465', '65034662', '65043275', '65049269', '65051433', '65054138', '65158649', '65135343', '65139173', '65142376', '65144042', '65150491', '65150534', '65060630', '65066581', '65075237', '65128851', '65133179', '65134845', '65039880', '65067271', '65073763', '65089993', '65092157', '65099488', '65103816', '65121128', '65140604', '65155011', '65156093', '65159339', '65004025', '65072289', '65076076', '65082568', '65085273', '65086355', '65103126', '65105290', '65109077', '65111241', '65114487', '65122602', '65089601', '65091765', '65092847', '65095011', '65099880', '65100962', '65034510', '65040344', '65050162', '65053743', '65058652', '65069395', '65152967', '65155884', '65074304', '65085711', '65102027', '65106936', '65110517', '65139568', '65012598', '65026043', '65027586', '65037404', '65045894', '65058011', '65142462', '65157899', '65159442', '65101125', '65117441', '65123275', '65131765', '65136628', '65141583', '65070036', '65077862', '65082817', '65085688', '65090643', '65091307', '65039465', '65060026', '65071433', '65076342', '65080756', '65092163', '65146020', '65148012', '65157922', '65011765', '65025548', '65026876', '65032495', '65042405', '65043733', '65143080', '65157945', '65088390', '65092140', '65115403', '65131719', '65136674', '65141088', '65050139', '65053766', '65055094', '65060049', '65072074', '65077029', '65024861', '65025187', '65033351', '65047337', '65055240', '65057155', '65148553', '65157381', '65125413', '65132575', '65133826', '65135154', '65145974', '65146561', '65092117', '65100607', '65112014', '65119840', '65121832', '65122419', '65058157', '65060149', '65067975', '65081297', '65081961', '65090789', '65025502', '65033992', '65070577', '65078403', '65079405', '65081397', '65124726', '65146538', '65154364', '65089223', '65090766', '65098592', '65102545', '65113906', '65122396', '65026561', '65033892', '65035884', '65059193', '65068021', '65068516', '65143936', '65145187', '65121214', '65122711', '65133780', '65135277', '65142608', '65143690', '19000089', '65003275', '65013185', '65047268', '65047809', '65056637', '65133262', '65133803', '65112409', '65112532', '65121360', '65121901', '65123770', '65124434', '65068539', '65079359', '65079900', '65088728', '65091802', '65099966', '65002465', '65034848', '65044666', '65047583', '65056322', '65058990', '65136989', '65142147', '65147471', '65149973', '65155961', '65079800', '65080879', '65085788', '65096116', '65122914', '65134321', '65002239', '65015223', '65018758', '65045353', '65047191', '65088682', '65155569', '65161772', '65126269', '65131427', '65134095', '65137630', '65142585', '65147079', '65095180', '65098131', '65102127', '65113488', '65115990', '65118443', '65015661', '65031977', '65050285', '65051367', '65052538', '65058944', '65099651', '65104975', '65121291', '65121540', '65130786', '65140524', '65066601', '65076929', '65082253', '65085834', '65088244', '65098569', '1000571', '65003072', '65026630', '65032372', '65037991', '65054012', '65055635', '65067537', '65075947', '65116485', '65119276', '65004300', '65016448', '65051997', '65054161', '65075801', '65083876', '65149140', '65154049', '65159960', '65127743', '65128330', '65129907', '65130245', '65142642', '65148891', '65085293', '65086621', '65094696', '65095283', '65105854', '65106103', '65006856', '65027463', '65049644', '65052638', '65060464', '65073245', '65141165', '65141706', '65143329', '65149532', '65149870', '65151493', '65117902', '65125728', '65127892', '65130345', '65130886', '65138712', '65073448', '65073786', '65086770', '65096262', '65097590', '65116531', '65018658', '65040298', '65052200', '65083922', '65095575', '65096657', '65141019', '65148350', '65151593', '65152675', '65106395', '65106644', '65128871', '65129953', '65130199', '65137530', '65007689', '65032034', '65060510', '65071871', '65072953', '65083232', '65161480', '65162808', '65139545', '65149824', '65150119', '65150365', '65150906', '65151988', '65083773', '65084314', '65084855', '65108118', '65116282', '65139004', '65032103', '65048419', '65050577', '65053328', '65053494', '65059067', '65139817', '65145556', '65149635', '65075383', '65082379', '65094616', '65123667', '65129240', '65136236', '65007274', '65039193', '65072704', '65089020', '65089684', '65095967', '65130142', '65144749', '65154567', '65010165', '65010832', '65013082', '65013915', '65031390', '65035469', '65121958', '65081171', '65087334', '65089326', '65094404', '65110056', '65114298', '65056199', '65068436', '65071018', '65072515', '65079674', '65080338', '65039050', '65042133', '65047706', '65049203', '65051456', '65055366', '65003195', '65005900', '65018847', '65037819', '65037868', '65042774', '65102419', '65105665', '65114321', '65073033', '65073697', '65077447', '65081689', '65084394', '65093763', '65047188', '65047729', '65057381', '65059090', '65069787', '65070451', '65033428', '65055578', '65060321', '65067560', '65071141', '65079133', '65135403', '65144231', '65148138', '65152887', '65156794', '65094281', '65102937', '65111599', '65122834', '65124998', '65126913', '65002860', '65057593', '65059757', '65060298', '65071118', '65081569', '65152864', '65156817', '65091725', '65112406', '65126349', '65135005', '65135546', '65148161', '65069103', '65077759', '65081005', '65089661', '65110809', '65122293', '65145433', '65147597', '65155420', '65157507', '65125539', '65133531', '65134862', '65137441', '65144351', '65145015', '65001652', '65013554', '65078990', '65087646', '65088187', '65099548', '65154779', '65155443', '65156943', '65133631', '65134221', '65134885', '65143000', '65144082', '65154238', '65113614', '65122983', '65125516', '65126057', '65131516', '65132721', '65034018', '65048247', '65051579', '65067480', '65077298', '65087875', '65131155', '65137404', '65150637', '65089120', '65093199', '65096780', '65109764', '65122499', '65128748', '65002442', '65031705', '65033248', '65034871', '65051187', '65056050', '65148622', '65150245', '65158901', '65161606', '65098795', '65104795', '65109123', '65125808', '65127431', '65129140', '65056511', '65067872', '65075532', '65082479', '65092807', '65097172', '65005751', '65012000', '65041051', '65044297', '65045379', '65049621', '65098154', '65111138', '65113216', '65120876', '65065937', '65067019', '65075924', '65078592', '65080003', '65082920', '65049870', '65050703', '65057281', '65058526', '65059608', '65060198', '65010314', '65017261', '65034659', '65042233', '65044938', '65046020', '65073574', '65074201', '65075283', '65085562', '65100169', '65108825', '65055217', '65056299', '65057885', '65057922', '65070328', '65070869', '65004128', '65010371', '65014456', '65049080', '65051244', '65052661', '65153634', '65162290', '65125751', '65128158', '65136571', '65138735', '65140650', '65149555', '65067809', '65076465', '65082714', '65084878', '65110597', '65117338', '65052810', '65054433', '65087434', '65095549', '65098254', '65099877', '65142665', '65149704', '65155649', '65157819', '65100418', '65108041', '65116697', '65119402', '65127517', '65128058', '65075681', '65084337', '65085419', '65086501', '65097321', '65107059', '65160667', '65160916', '65161749', '65163080', '65142273', '65147932', '65148765', '65149014', '65149847', '65159834', '65120043', '65128456', '65130371', '65136030', '65138194', '65141191', '65102880', '65104503', '65106667', '65108290', '65117487', '65118569', '65153734', '65158652', '65160275', '65160816', '65161898', '65162980', '65137504', '65141291', '65151029', '65151078', '65151619', '65152111', '65119651', '65126684', '65128307', '65128848', '65131012', '65131553', '48000446', '65012455', '65050992', '65057822', '65069229', '65071221', '65155718', '65161623', '65135489', '65137481', '65139402', '65140398', '65144311', '65147228', '65083624', '65086541', '65091450', '65094367', '65102857', '65103853', '65032707', '65041529', '65050019', '65053886', '65057845', '65058841', '65136462', '65140421', '65159608', '65108785', '65109664', '65115615', '65118154', '65134470', '65135466', '65070202', '65075157', '65076153', '65078692', '65090477', '65091473', '65052034', '65102811', '65121048', '65133451', '65135443', '65145353', '65146349', '65149266', '65151759', '65155672', '65163661', '65007523', '65067168', '65083484', '65084480', '65089435', '65090431', '65161646', '65139379', '65144334', '65145330', '65151281', '65156691', '65160650', '65099800', '65102333', '65105751', '65117653', '65122067', '65130010', '65033179', '65055406', '65069724', '65076631', '65077218', '65080544', '65161128', '65094530', '65095864', '65113763', '65117676', '65152300', '65159130', '65011977', '65013311', '65037115', '65038117', '65049478', '65054427', '65164022', '65098420', '65129060', '65139880', '65161145', '65163143', '65163684', '65069747', '65073282', '65074616', '65080567', '65089936', '65097879', '65053368', '65055947', '65067849', '65069770', '65080590', '65087082', '65153179', '65158589', '65100481', '65105891', '65118632', '65125124', '65137026', '65147846', '65038612', '65047440', '65047981', '65048522', '65053932', '65054473', '65093966', '65094507', '65114696', '65115237', '65059883', '65076654', '65082064', '65083146', '65088015', '65088556', '65001635', '65040587', '65043089', '65043504', '65056488', '65060401', '65102270', '65125665', '65126661', '65137819', '65138815', '65067646', '65072804', '65083962', '65090116', '65096946', '65099863', '65000616', '65035240', '65068665', '65069661', '65080026', '65082645', '65158274', '65133929', '65142751', '65145290', '65146286', '65148788', '65149784', '65085977', '65097338', '65107334', '65124646', '65129601', '65130597', '65017324', '65056285', '65057367', '65069269', '65073597', '65074679', '65157255', '65160587', '65115552', '65127540', '65139442', '65143770', '65144271', '65156754', '65002027', '65013388', '65082943', '65084566', '65094931', '65125141', '65128473', '65135506', '65141457', '65145244', '65145785', '65154158', '50000593', '65014871', '65032183', '65038675', '65047918', '65055744', '65155632', '65160541', '65162124', '65162705', '65114759', '65128081', '65136399', '65138320', '65144812', '65151304', '65086627', '65089034', '65090368', '65090955', '65097447', '65103352', '65055987', '65057908', '65062236', '65067394', '65068728', '65079548', '65015309', '65040447', '65042611', '65045605', '65049933', '65050474', '65157647', '65158188', '65142499', '65147165', '65147368', '65153319', '65153657', '65154198', '65052097', '65053972', '65069120', '65082104', '65112203', '65140335', '65025150', '65032724', '65047872', '65054364', '65056033', '65066853', '65126120', '65131530', '65092578', '65095824', '65096906', '65102316', '65109890', '65114218', '65073345', '65076591', '65077673', '65078755', '65083083', '65091496', '15000035', '65011476', '65058887', '65069707', '65070789', '65071330', '65104331', '65110823', '65076740', '65081609', '65092429', '65093511', '65094593', '65100003', '65049581', '65057241', '65058237', '65074553', '65075549', '65082213', '65128410', '65137066', '65143730', '65145722', '65086126', '65090869', '65094782', '65116837', '65119754', '65127414', '65007108', '65013059', '65016760', '65047566', '65056222', '65072538', '65161231', '65082190', '65087145', '65088141', '65089850', '65097510', '65140790', '65074765', '65083421', '65088831', '65092077', '65125705', '65139771', '65163747', '65141025', '65142688', '65143017', '65147431', '65158337', '65160000', '65095472', '65096013', '65104669', '65116030', '65136760', '65139293', '65154613', '65155609', '65159027', '65160023', '65161019', '65164265', '65145957', '65146412', '65147949', '65148662', '65152363', '65154072', '65016454', '65066226', '65068390', '65072060', '65078967', '65080716', '65132824', '65150136', '65150889', '65159545', '65085459', '65094115', '65102771', '65104935', '65106684', '65122004', '65019010', '65027125', '65033617', '65042273', '65050271', '65050812', '65100043', '65100756', '65106707', '65108871', '65124019', '65126724', '65084895', '65089395', '65091387', '65094092', '65096256', '65098051', '65052976', '65056763', '65058927', '65067583', '65068124', '65078944', '15000098', '65032810', '65036471', '65037553', '65040384', '65052286', '65084918', '65090328', '65093574', '65110886', '65070852', '65072844', '65074098', '65076090', '65076262', '65079508', '65055532', '65057029', '65057696', '65058778', '65060275', '65067434', '65005070', '65014267', '65019136', '65022382', '65031579', '65033743', '65083687', '65092884', '65093425', '65057719', '65058801', '65060424', '65066375', '65078277', '65080982', '65046358', '65048350', '65049604', '65050145', '65052137', '65054301', '65036989', '65043112', '65043481', '65044194', '65045645', '65046186', '65055077', '65071393', '65072389', '65080049', '65085373', '65088705', '65142562', '65151218', '65158463', '65162791', '65095950', '65098357', '65100278', '65108934', '65138234', '65141151', '65096342', '65096969', '65099674', '65100670', '65105625', '65113654', '65134298', '65135921', '65115277', '65117982', '65118609', '65119605', '65127265', '65131593', '65098655', '65107311', '65123541', '65127955', '65140939', '65146263', '65160086', '65161168', '65163418', '65148513', '65151430', '65152512', '65155758', '65157169', '65158251', '65121526', '65128559', '65132887', '65135592', '65136133', '65137215', '65156777', '65157773', '65158855', '65163810', '65143166', '65144875', '65147494', '65147580', '65151822', '65155154', '65047503', '65051831', '65056159', '65066979', '65073471', '65077799', '65105688', '65112180', '65133820', '65138148', '65082127', '65084291', '65086455', '65090783', '65092704', '65103524', '65015137', '65025957', '65067128', '65069292', '65073079', '65073620', '65108244', '65075243', '65075784', '65083899', '65090932', '65099588', '65101211', '1000305', '65012581', '65032057', '65033139', '65036385', '65044798', '65091324', '65074012', '65078340', '65080504', '65081586', '65083750', '65084832', '65049369', '65050208', '65053454', '65054536', '65058864', '65066438', '8000429', '65031665', '65034370', '65041403', '65042485', '65050059', '65058174', '65059797', '65069535', '65070617', '65073322', '65050600', '65051141', '65053846', '65054387', '65056010', '65056551', '65032186', '65050494', '65053411', '65054739', '65057656', '65073308', '65118675', '65127165', '65139900', '65144145', '65148390', '65074636', '65077553', '65083126', '65094533', '65107268', '65111513', '65037736', '65057679', '65060550', '65067497', '65069040', '65077530', '65148413', '65149741', '65158231', '65161102', '65084477', '65090311', '65094510', '65111490', '65115781', '65134089', '65015160', '65026398', '65032140', '65039133', '65056113', '65059030', '65142771', '65145688', '65155337', '65158254', '65162668', '65071765', '65074682', '65076179', '65088745', '65091662', '65097404', '9000003', '65032163', '65059176', '65060381', '65060504', '65070414', '65153986', '65159605', '65164019', '65098755', '65108665', '65110116', '65130059', '65142748', '65148367', '65076156', '65077484', '65083103', '65087394', '65093136', '65094341', '65007875', '65018031', '65033345', '65037928', '65050663', '65053242', '65149887', '65159628', '65161294', '65129913', '65131241', '65137152', '65138403', '65139731', '65140069', '65071888', '65073139', '65084623', '65103192', '65107437', '65125668', '65042150', '65049312', '65071788', '65095715', '65097258', '65098586', '65149864', '65151161', '65162522', '65163850', '65107414', '65114576', '65119857', '65128347', '65138503', '65148536', '65006670', '65006839', '65019405', '65040799', '65041881', '65050540', '65138526', '65141105', '65159920', '65104566', '65105894', '65115804', '65117132', '65117301', '65127288', '65053365', '65060696', '65071934', '65075841', '65084500', '65093328', '65053219', '65073162', '65083318', '65085851', '65095761', '65107368', '65149910', '65151115', '65128393', '65128516', '65128639', '65129844', '65138549', '65149787', '65027603', '65044583', '65052160', '65077630', '65080132', '65092867', '65159459', '65128831', '65133989', '65135317', '65138649', '65155629', '65158131', '65097112', '65100444', '65101772', '65114507', '65117424', '65125914', '15000038', '65009272', '65048851', '65056382', '65058884', '65074536', '65159897', '65161440', '65120318', '65125476', '65129767', '65150079', '65151407', '65158569', '65084354', '65094633', '65096176', '65097504', '65103338', '65108957', '65031894', '65038964', '65047961', '65049289', '65052206', '65053534', '65137275', '65154255', '65160833', '65098486', '65101818', '65102900', '65114553', '65119880', '65120126', '65057948', '65059276', '65067351', '65074928', '65082834', '65086335', '65010646', '65053680', '65069209', '65070537', '65071619', '65080570', '65148244', '65149572', '65158523', '65126850', '65136883', '65138211', '65142502', '65143830', '65147162', '65082980', '65087271', '65091931', '65097550', '65101964', '65120272', '65010792', '65034596', '65036262', '65053580', '65054908', '65057902', '65144314', '65145642', '65158377', '65102854', '65111267', '65111759', '65115589', '65121500', '65143976', '65058738', '65067643', '65069309', '65071473', '65078712', '65080378', '65044775', '65046103', '65067251', '65068579', '65070245', '65078612', '65114361', '65124394', '65133007', '65135171', '65146870', '65159313', '65080278', '65081606', '65087563', '65088891', '65098924', '65104082', '65013494', '65026229', '65047377', '65056282', '65056528', '65057364', '65155675', '65099070', '65102562', '65113133', '65135363', '65142940', '65144022', '65057610', '65067689', '65069017', '65070099', '65090411', '65091493', '13000014', '65003361', '65025001', '65033706', '65033952', '65045067', '65154447', '65155529', '65156611', '65157939', '65079986', '65080232', '65099216', '65134135', '65135217', '65146578', '65046395', '65047477', '65056428', '65057510', '65069953', '65078904', '65011874', '65025439', '65032601', '65048751', '65052498', '65058569', '65119588', '65128078', '65140315', '65160212', '65081383', '65086956', '65099193', '65102110', '65114845', '65119090', '65031748', '65038695', '65058048', '65069999', '65072157', '65072372', '65161563', '65162061', '65128101', '65136093', '65138964', '65147952', '65153073', '65155114', '65072870', '65079817', '65086481', '65098340', '65106332', '65112449', '65015575', '65018821', '65031227', '65040046', '65051124', '65054370', '65126704', '65143684', '65151676', '65156419', '65157341', '65159336', '65088330', '65103982', '65111052', '65113302', '65116717', '65120962', '65059445', '65069432', '65072678', '65075097', '65082167', '65085413', '65025462', '65033122', '65048061', '65048184', '65071373', '65079488', '65160687', '65080693', '65119067', '65122436', '65126727', '65153740', '65158646', '65015452', '65026936', '65032930', '65055821', '65058240', '65070975', '65160879', '65116840', '65117593', '65137567', '65143561', '65150302', '65150723', '65082044', '65088453', '65096445', '65096866', '65109678', '65116342', '5000038', '65017639', '65051101', '65085774', '65086266', '65095094', '65148659', '65150325', '65152366', '65095592', '65117693', '65118191', '65127388', '65130849', '65139339', '65018323', '65044291', '65048376', '65072349', '65082336', '65085582', '65162084', '65162253', '65148928', '65151015', '65152097', '65152174', '65158838', '65160089', '65088161', '65095492', '65108227', '65126206', '65142187', '65148851', '65038366', '65050809', '65053096', '65070998', '65082359', '65096843', '65160189', '65160312', '65118114', '65119688', '65127680', '65130926', '65137467', '65150033', '65009295', '65011453', '65015283', '65025860', '65047002', '65056405', '65126329', '65129246', '65139562', '65146309', '65149641', '65154716', '65097527', '65110262', '65113594', '65114092', '65116511', '65122997', '65056903', '65060235', '65079717', '65085705', '65088124', '65091954', '65007231', '65036531', '65045734', '65052183', '65056013', '65059843', '65137796', '65144245', '65149120', '65153448', '65163229', '65097135', '65106953', '65107998', '65115658', '65125937', '65133468', '65062001', '65071204', '65078151', '65081483', '65085313', '65092844', '65035641', '65041214', '65045542', '65053949', '65055031', '65058363', '65129283', '65070514', '65083249', '65089498', '65099983', '65118967', '65127872', '65037905', '65040032', '65054639', '65056889', '65057971', '65066000', '65134842', '65135924', '65143461', '65150494', '65160810', '65161855', '65095300', '65098509', '65104497', '65127809', '65131510', '65132592', '65069332', '65079525', '65079611', '65083939', '65087640', '65090972', '65033683', '65044254', '65057487', '65059651', '65066392', '65072386', '65157962', '65078635', '65080301', '65089704', '65091370', '65113010', '65144729', '65025668', '65046810', '65051138', '65054931', '65057095', '65067958', '65154032', '65156196', '65097719', '65102041', '65110746', '65136714', '65149157', '65151868', '65068456', '65078237', '65082565', '65087932', '65089598', '65090096', '65017155', '65037221', '65056697', '65058861', '65059943', '65067766', '65110554', '65125453', '65126535', '65145519', '65155506', '65071012', '65078927', '65081091', '65086750', '65088914', '65091078', '65034075', '65046518', '65047600', '65054141', '65056305', '65057387', '65120733', '65121815', '65145619', '65146701', '65066584', '65076863', '65081191', '65088224', '65110454', '65113700', '65005625', '65007546', '65045419', '65058486', '65066644', '65069893', '65102193', '65103521', '65116588', '65119505', '65120501', '65078051', '65087869', '65089790', '65091118', '65095363', '65097948', '65058509', '65073829', '65078028', '65092137', '65095340', '65102170', '65148911', '65153110', '65158944', '65159276', '65160272', '65116279', '65117607', '65124769', '65126644', '65140753', '65141749', '65012833', '65048121', '65051038', '65056780', '65069847', '65083670', '65132286', '65133783', '65134779', '65137696', '65152091', '65155008', '65089412', '65112389', '65116302', '65129369', '65130365', '65130697', '65018761', '65034204', '65035741', '65045442', '65047102', '65051061', '65139047', '65144998', '65145994', '65150408', '65161978', '65162974', '65085144', '65102001', '65106415', '65116448', '65116780', '65133305', '65052389', '65066836', '65068164', '65068373', '65074115', '65083693', '65031264', '65040009', '65045250', '65070062', '65076554', '65082459', '65156551', '65119004', '65123919', '65132077', '65147723', '65154630', '65155881', '65090617', '65091287', '65099107', '65099445', '65115091', '65116757', '65048814', '65055306', '65079780', '65079903', '65081231', '65086395', '65153325', '65163020', '65099422', '65111865', '65123226', '65132054', '65136339', '65138005', '65017487', '65027397', '65031479', '65051201', '65052704', '65055114', '65109309', '65115137', '65141772', '65141941', '65160581', '65055283', '65070016', '65071098', '65079926', '65085336', '65086418', '65027374', '65038489', '65039817', '65048645', '65048768', '65049850', '65125147', '65143246', '65146664', '65159230', '65052727', '65082482', '65093843', '65103753', '65119196', '65120524', '65015366', '65027520', '65038927', '65050915', '65056820', '65066899', '65118835', '65153803', '65068227', '65071144', '65089535', '65093697', '65098025', '65100942', '65018260', '65035572', '65043730', '65071536', '65078698', '65097633', '65103836', '65111115', '65122144', '65126306', '65140083', '65024403', '65025731', '65027566', '65042711', '65046043', '65047039', '65140275', '65143438', '65144520', '65157501', '65161915', '65056534', '65073846', '65078174', '65078260', '65105565', '65118881', '65017679', '65024257', '65041237', '65044569', '65046893', '65056926', '65139502', '65140129', '65149535', '65150162', '65157441', '65160441', '65110829', '65122276', '65126604', '65132223', '65133551', '65138174', '65057258', '65058008', '65067291', '65068287', '65068619', '65092177', '65035426', '65043341', '65049833', '65054072', '65067145', '65073637', '65121002', '65146140', '65154885', '65078220', '65085791', '65087955', '65093949', '65099362', '65117753', '65025791', '65078114', '65086727', '65088393', '65091055', '65094885', '65139001', '65162024', '65116525', '65118689', '65122230', '65124892', '65126558', '65134673', '65096760', '65099754', '65101088', '65102416', '65103252', '65115197', '65057118', '65059282', '65060610', '65075758', '65076840', '65080922', '65162170', '65097152', '65109641', '65114805', '65147268', '65154839', '65155921', '65032870', '65037198', '65043985', '65045313', '65048313', '65055592', '65153611', '65157693', '65160103', '65120610', '65126020', '65139840', '65143332', '65147414', '65147660', '65056674', '65059920', '65060756', '65072117', '65082396', '65113577', '65016119', '65026269', '65049249', '65054656', '65058901', '65067059', '65122837', '65148307', '65149801', '65156963', '65070474', '65073391', '65087786', '65095944', '65098363', '65116671', '65047517', '65049226', '65054679', '65055675', '65066040', '65073202', '65130972', '65136923', '65152741', '65162393', '65074696', '65080149', '65087809', '65088307', '65105502', '65123312', '65012160', '65048038', '65073179', '65076425', '65083089', '65101397', '65142356', '65145602', '65145771', '65155423', '65112970', '65127036', '65131779', '65134696', '65135692', '65137942', '65015429', '65031204', '65034450', '65040401', '65043487', '65051762', '65124354', '65141666', '65147998', '65153027', '65153949', '65090726', '65096136', '65097673', '65105333', '65114444', '65115698', '65054848', '65072701', '65080816', '65083066', '65084775', '65088476', '5000061', '65031181', '65033600', '65037845', '65059568', '65074888', '65134241', '65154215', '65082874', '65098194', '65100358', '65117670', '65119419', '65121583', '65006985', '65033451', '65046478', '65050265', '65050978', '65057427', '65160856', '65142333', '65145536', '65147331', '65149495', '65155489', '65160358', '65110414', '65114699', '65125562', '65128224', '65134175', '65134218', '65058921', '65059591', '65068788', '65070454', '65070952', '65082897', '65032392', '65047709', '65053119', '65070431', '65076923', '65081008', '65160166', '65160335', '65124288', '65125370', '65137613', '65142854', '65144105', '65158171', '65084254', '65085751', '65086833', '65088997', '65101566', '65106309', '65005734', '65054891', '65068957', '65075449', '65080318', '65085728', '65106286', '65116196', '65121606', '65130803', '65086810', '65092761', '65101417', '65101589', '65103040', '65104122', '65035097', '65035595', '65046670', '65050500', '65067314', '65068808', '65146641', '65149558', '65150969', '65153388', '65075970', '65097610', '65100029', '65121171', '65125499', '65129827', '65050394', '65054722', '65057839', '65060673', '65072034', '65072532', '65149950', '65150448', '65158108', '65158606', '65128808', '65132140', '65133136', '65139087', '65140298', '65146249', '65049375', '65052621', '65053703', '65056949', '65077593', '65078589', '65135778', '65143607', '65146853', '65154172', '65159837', '65164251', '65081921', '65082917', '65100315', '65104643', '65107889', '65129200', '65002986', '65024626', '65074951', '65082611', '65088562', '65093972', '65095509', '65098841', '65099923', '65104165', '65129137', '65136170', '65015535', '65019365', '65034513', '65035011', '65038841', '65039339', '65152549', '65158798', '65097026', '65098947', '65118423', '65143893', '65146555', '65150385', '65069392', '65071058', '65084540', '65088370', '65091032', '65093196', '65041260', '65043424', '65047752', '65049418', '65066730', '65067228', '65024340', '65026504', '65041652', '65045482', '65047646', '65051931', '65163475', '65145665', '65146163', '65148327', '65151032', '65153196', '65161311', '65069784', '65073614', '65127228', '65131556', '65141337', '65143501', '65054095', '65055761', '65058423', '65060089', '65067122', '65067620', '65043126', '65045290', '65053205', '65055369', '65057533', '65058615', '65128702', '65133030', '65134112', '65139522', '65162585', '65163667', '65075927', '65079173', '65082419', '65101895', '65110308', '65114636', '65017009', '65075535', '65076617', '65077699', '65078781', '65080945', '65098257', '65102585', '65103667', '65105831', '65107454', '65110700', '65082027', '65085814', '65086896', '65089060', '65090142', '65092306', '65024692', '65041672', '65045917', '65046581', '65049498', '65054407', '65153631', '65160129', '65162121', '65119007', '65124580', '65127497', '65133070', '65147394', '65151639', '65079213', '65082130', '65095529', '65098446', '65108264', '65111845', '65024715', '65033205', '65043023', '65051513', '65057347', '65078526', '65091971', '65103332', '65111822', '65124603', '65133093', '65135964', '65038137', '65044543', '65098400', '65121709', '65126618', '65137361', '65158586', '65163664', '65141775', '65142270', '65142934', '65143767', '65157258', '65158091', '3000223', '65026753', '65045061', '65054430', '65077693', '65082107', '65154318', '65158609', '65159273', '65163023', '65163687', '65114075', '65126100', '65130391', '65136010', '65137338', '65148699', '65102714', '65103378', '65108333', '65109120', '65109661', '65109784', '65045084', '65046086', '65055904', '65069226', '65080633', '65086544', '65156717', '65087872', '65091115', '65101858', '65126077', '65136482', '65144308', '65037281', '65047437', '65047978', '65055263', '65055927', '65056468', '65144331', '65144995', '65147866', '65099256', '65111699', '65113242', '65122519', '65124062', '65136505', '65058798', '65059462', '65069249', '65077075', '65079067', '65087895', '65046458', '65047955', '65055950', '65057447', '65057865', '65067188', '65123206', '65135941', '65144354', '65157753', '65080587', '65081251', '65089910', '65110640', '65111304', '65112386', '65067852', '65068685', '65069349', '65076680', '65079090', '65079754', '65013308', '65025874', '65034579', '65046063', '65055973', '65057424', '65146369', '65155738', '65079777', '65080023', '65080564', '65101958', '65102499', '65144377', '65057965', '65058506', '65067334', '65069203', '65078695', '65079236', '65027271', '65036176', '65046504', '65048911', '65054745', '65054994', '65149724', '65151301', '65154882', '65127159', '65132993', '65133408', '65138317', '65138566', '65146143', '65068144', '65089369', '65092535', '65097444', '65114175', '65125582', '65016551', '65032867', '65035535', '65040693', '65041572', '65048519', '65148407', '65149286', '65151739', '65159565', '65122273', '65125144', '65127597', '65128476', '65136302', '65146784', '65055386', '65057009', '65059677', '65070159', '65075993', '65110617', '65048957', '65050039', '65053371', '65066355', '65066850', '65081174', '65131619', '65141852', '65144849', '65157504', '65159173', '65164082', '65090912', '65114221', '65115303', '65119130', '65125536', '65127205', '3000346', '65033700', '65058303', '65059926', '65069664', '65074619', '65158191', '65163146', '65141211', '65146830', '65147912', '65148453', '65151244', '65153113', '65094550', '65098964', '65101632', '65102173', '65134928', '65135469', '65018701', '65031347', '65053325', '65053574', '65072220', '65074722', '65080384', '65083627', '65107769', '65115595', '65150219', '65150806', '65039949', '65060759', '65071579', '65072120', '65081071', '65082399', '65142001', '65152821', '65160647', '65164182', '65084563', '65087557', '65118197', '65128679', '65137384', '65140378', '65018409', '65032721', '65051951', '65054115', '65073099', '65073348', '65149678', '65162167', '65097985', '65107972', '65117218', '65138858', '65139940', '65149183', '65073594', '65074676', '65083919', '65084414', '65085250', '65086083', '65007935', '65018263', '65040985', '65051018', '65053969', '65073199', '65074281', '65075363', '65084560', '65094347', '65095429', '65095970', '17000211', '65049913', '65052830', '65069146', '65070308', '65082545', '65141311', '65143398', '65145390', '65148971', '65155635', '65161706', '65095114', '65103770', '65119422', '65132821', '65135738', '65140481', '17000188', '65016428', '65032744', '65057550', '65066206', '65073866', '65140458', '65144251', '65153903', '65082522', '65086813', '65087477', '65103129', '65115154', '65139296', '65039714', '65071851', '65076093', '65095326', '65099405', '65100069', '65150016', '65153926', '65157009', '65158340', '65160332', '65134029', '65134693', '65139107', '65142685', '65144016', '65147763', '65115131', '65116385', '65118048', '65118377', '65125708', '65130783', '65018466', '65074078', '65090394', '65097341', '65100046', '65101755', '65157650', '65163933', '65143375', '65145748', '65152031', '65155400', '65155941', '65156986', '65109415', '65113116', '65137092', '65137633', '65139084', '65141334', '65002219', '65047663', '65049578', '65054327', '65067062', '65075552', '65108184', '65120919', '65122668', '65133488', '65142144', '65155300', '65082210', '65088951', '65098864', '65099356', '65099528', '65103435', '65016969', '65037158', '65045814', '65060421', '65068911', '65069077', '65144872', '65158317', '65158858', '65100879', '65101420', '65102084', '65112240', '65131347', '65143710', '65071782', '65075575')

--

Now *that's* an IN clause!

Please note that this is not a contest - DON'T write code that looks like this - ever!

https://www.mememaker.net/api/bucket?path=static/img/memes/full/2017/Feb/14/22/please-just-stop-dont-do-that.jpg

--

Hope this helps (and good to be back writing after some time!)

Wednesday, October 17, 2018

Invalid value given for parameter PASSWORD. Specify a valid parameter value.

I still use sp_help_revlogin to transfer logins between servers.  I know there are other options, including a set of Powershell commands contained in dbatools (#YouCanDoAnythingWithPowershell) but this is a case where the old method works so I don't mess with it.

http://wanna-joke.com/wp-content/uploads/2013/08/funny-pictures-too-olf-for-internet.jpg

Having said that, I know a lot of people still use sp_help_revlogin, so I wanted to document something I tripped over.

--

This morning trying to use a saved script to transfer a login to a new server, I ran into this:
Msg 15021, Level 16, State 2, Line 1 
Invalid value given for parameter PASSWORD. Specify a valid parameter value.
https://pics.me.me/um-ok-memecrunch-com-19987825.png

This was a new one on me, but a little Google led me to the problem, and it was described in the notes for the sp_help_revlogin procedure itself at https://support.microsoft.com/en-us/help/918992/how-to-transfer-logins-and-passwords-between-instances-of-sql-server:

--
A password can be hashed in the following ways:
  • VERSION_SHA1: This hash is generated by using the SHA1 algorithm and is used in SQL Server 2000 through SQL Server 2008 R2.
  • VERSION_SHA2: This hash is generated by using the SHA2 512 algorithm and is used in SQL Server 2012 and later versions.
--

Sure enough I checked and the server I was trying to deploy onto was a SQL 2008R2 server (yes our clients still have lots of 2005/2008/2008R2).

The script I had saved looked like this:
CREATE LOGIN [MyLogin] 
WITH PASSWORD = 0x0200A52324E0FFEBABFAD9327A62EECD2A5D648FF3B98D97C5D020FC16552BA728464BAAC04C8EFDE3BB0235A1F3648E419B038C04C8EFDE3BB0235A1F3648E419B0385A5933 HASHED
/* Hash slightly character masked :) */

, SID = 0x7FCDC703D88B5C48A47D7D13699658E2

, DEFAULT_DATABASE = [master]

, CHECK_POLICY = OFF

, CHECK_EXPIRATION = OFF
As a test, I ran an sp_help_revlogin for the same login (same password) on SQL 2008 server:
CREATE LOGIN [MyLogin] 
WITH PASSWORD = 0x0100E02F8267F60
81A5AB316F8A6891C81A5AB316F8A6891CCC HASHED
/* Hash slightly character masked :) */

, SID = 0x14B5D0191E908D499C83C1695F13F7F3

, DEFAULT_DATABASE = [master]

, CHECK_POLICY = OFF

, CHECK_EXPIRATION = OFF
Note that the second password hash is significantly shorter (which makes perfect sense since SHA1 is a shorter hash than SHA2, as described here.)  This is one of the key reasons SHA1 has fallen out of favor - there have been known issues with SHA1 for years.

(Another reason to get off SQL 2005/2008/2008R2...as if you should need another reason in the year 2018!)

http://img.izismile.com/img/img6/20130327/original640/old_technology_640_01.jpg

The bottom line is that to have login scripts like this, you need two versions, a SQL2005-2008R2 SHA1 version, and a SQL 2012+ SHA2 version.

*OR*

If you truly only want one copy of your script, it needs to be a SHA1 (short hash) version.  SQL 2005/2008/2008 R2 don't understand the 2012+ SHA2 long hash, but SQL 2012+ is backward-compatible to the SHA1 short hash.

Having said that, I would still use the SHA2 hash script whenever possible.

--

Hope this helps!