Transaktioner ska du använda om du vill att alla eller ingen av dina frågor i ett block ska gå igenom.
Risken med att köra SQL i batcher på detta vis är att du egentligen inte har någon kontroll på vad som går galet om något gör det. Om dina batcher är stora (eller rättare sagt: tar lång tid att köra) kan exekveringen avbrytas av connection-timeouten.
Av någon anledning följde värdet på sSQL med in i loopen. Löstes med att sätta sSQL till "" innan loopen. Sen ändrade jag på timeouten mha conn.Command=120
Det räcker med fyra frågor. Du behöver ingen loop.
UPDATE t SET t.Modified = GETDATE(), t.User = n.Custom1
FROM tblTask t
INNER JOIN tblUsers n ON t.User=n.Name AND n.Custom1<>''
UPDATE t SET t.Modified = GETDATE(), t.CreatedBy = n.Custom1
FROM tblTask t
INNER JOIN tblUsers n ON t.CreatedBy=n.Name AND n.Custom1<>''
UPDATE t SET t.Modified = GETDATE(), t.Owner = n.Custom1
FROM tblTask t
INNER JOIN tblUsers n ON t.Owner=n.Name AND n.Custom1<>''
UPDATE t SET t.Modified = GETDATE(), t.User = n.Custom1
FROM tblTime t
INNER JOIN tblUsers n ON t.User=n.Name AND n.Custom1<>''
(De tre översta går att slå ihop till en fråga, men det tjänar man inget på)
Det räcker med fyra frågor. Du behöver ingen loop.
UPDATE t SET t.Modified = GETDATE(), t.User = n.Custom1
FROM tblTask t
INNER JOIN tblUsers n ON t.User=n.Name AND n.Custom1<>''
UPDATE t SET t.Modified = GETDATE(), t.CreatedBy = n.Custom1
FROM tblTask t
INNER JOIN tblUsers n ON t.CreatedBy=n.Name AND n.Custom1<>''
UPDATE t SET t.Modified = GETDATE(), t.Owner = n.Custom1
FROM tblTask t
INNER JOIN tblUsers n ON t.Owner=n.Name AND n.Custom1<>''
UPDATE t SET t.Modified = GETDATE(), t.User = n.Custom1
FROM tblTime t
INNER JOIN tblUsers n ON t.User=n.Name AND n.Custom1<>''
(De tre översta går att slå ihop till en fråga, men det tjänar man inget på)