Meu palpite é que deixá-lo no modo de usuário único (ou colocá-lo off-line) está fazendo com que System.Data.SqlClient.SQLConnection perca a cabeça.
Isso, e eu suponho que sua conexão está sendo feita ao banco de dados mestre quando você executa esta declaração?
Você também pode tentar algo como o seguinte para matar as conexões manualmente (observe que isso pode causar estragos - mas como você está sobrecarregando o DB de qualquer forma ... eu assumo que essas considerações não importam muito).
USE master
GO
DECLARE killer CURSOR LOCAL FAST_FORWARD FOR
SELECT
spid
FROM
dbo.sysprocesses
WHERE
dbid = DB_ID('dbname here')
DECLARE @spid int
DECLARE @sql nvarchar(20)
OPEN killer
FETCH NEXT FROM killer INTO @spid
WHILE @@FETCH_STATUS = 0 BEGIN
SET @sql = N'KILL ' + CAST(@spid as nvarchar(5))
EXEC sp_executesql @sql
FETCH NEXT FROM killer INTO @spid
END
CLOSE killer
DEALLOCATE killer
GO
WAITFOR DELAY '00:00:00.500'