Não assuma que um thread gerenciado seja um thread Win32 - ele pode ser uma fibra. O runtime executará threads gerenciados ...

Não assuma que um thread gerenciado seja um thread Win32 - ele pode ser uma fibra. O runtime executará threads gerenciados como fibras em cima de threads reais pertencentes ao SQL Server. Esses threads serão compartilhados entre AppDomains e até mesmo bancos de dados no processo do SQL Server. Usar o armazenamento local de um thread gerenciado funcionará, mas você não poderá o armazenamento local do thread não gerenciado ou supor que seu código executará no thread do sistema operacional atual novamente. Não altere configurações como a localidade do thread. Não chame CreateCriticalSection ou CreateMutex via P/Invoke porque eles requerem que o thread que entra em um bloqueio também saia do bloqueio. Como este não será o caso ao usar fibras, as seções críticas e os mutexes Win32 serão inúteis no SQL Server.
Você pode usar com segurança a maioria do estado em um objeto gerenciado System.Thread, inclusive o armazenamento local do thread e a cultura de IU atual do thread. Por motivos de modelo de programação, não será possível alterar a cultura atual de um thread ao executar no SQL Server (isso será imposto por meio de uma nova permissão).