MSSQL: risolvere il conflitto sulle regole di confronto

Quando si usano i DBLink (Linked Server) tra un server MSSQL e un altro, potrebbe saltare fuori questo errore: Impossibile risolvere il conflitto tra le regole di confronto "SQL_Latin1_General_CP1_CI_AS" e "Latin1_General_BIN" nell'operazione equal to. Il modo per risolvere è forzare per quella query una regola di confronto con l’istruzione “collate”: select COUNT(1) from [mio_linked_server].[DB_linked_server].[dbo].[TABELLA_SRV_LINK] RMT LEFT OUTER JOIN TABELLA_LOCALE LCL ON LCL.ID = RMT.ID collate SQL_Latin1_General_CP1_CI_AS Questo dovrebbe risolvere il problema

15 settembre 2008 Â· 1 minuto Â· greenkey Â· #db #mssql

Post tecnico: come aggiornare tanti record in MSSQL senza fare dei LOCK

Come aggiornare tantissimi record su una tabella del db della Microsoft senza effettuare un lock alla stessa? Potremmo semplicemente usare l’istruzione SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ma rischieremmo di creare disallineamenti vari a causa della lettura “al volo” dovuta all’istruzione sopra citata. La soluzione quindi è aggiornare un po’ di record alla volta, così come segue: set ROWCOUNT 100 update TABELLA_PROVA with(UPDLOCK) set FL_AGG = 1, CAMPO1 = CAMPO2 + CAMPO3 where FL_AGG = 0 set ROWCOUNT 0 ...