>facendo una select con una funziona dal Query Analizer (SQL 2000),
>ricevo questo errore:
>Intra-query parallelism caused your server command (process ID
>#99) to deadlock. Rerun the query without intra-query parallelism
>by using the query hint option (maxdop 1)
>Mai visto prima...
>Qualcuno ha qualche suggerimento in merito?
Ciao Matteo,
Hai un bel deadlock:
http://msdn.microsoft.com/en-us/library/ms177433.aspx
Come si può tentare di minimizzarlo? Scrivendo meglio la query
SET @DataMaxScad = (
SELECT CASE
WHEN MatrEst NOT IN (SELECT MatrEst FROM DocRighe) THEN ''
ELSE MAX(DtaScadnza) END
FROM DocRighe R (NOLOCK)
JOIN DocRif F (NOLOCK) ON R.IdDoc = F.IdDoc
JOIN DocScad S (NOLOCK) ON R.IdDoc = S.IdDoc
WHERE MatrEst = @MatrEst
GROUP BY MatrInt, MatrEst
)
Io toglierei quel CASE basato su una subquery (che con molta probabilità causa il deadlock visto che poi DocRighe la rimetti in JOIN), tutti quegli HINTS di NOLOCK, e testerei separatamente l'esistenza di MatrEst in DocRighe.
Se esiste eseguo la query con il MAX(DtaScadnza) e le varie JOIN, altrimenti restituirei un banale 0 (e NON '' dato che 0 corrisponde alla base date 19000101).
>Grazie a chi sapra' darmi qualche indicazione... ;-)
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org