The ODBC has already supported multi-threads from version 2.0, but does not mean that the use of ODBC across threads is safe. Microsoft means: "Hey, you can use the same ODBC connections in different threads, but I didn't guarantee that it is safe." So, for our own life, we need to cross thread SQLEXECUTE , Add a lock.
PS: This article uses ODBC experience for individuals, not from official documentation.