If a process has a Sch-M wait type, then it is waiting to get an Sch-M lock, meaning it is trying to get a schema modification lock and is waiting to be granted that lock.
What's preventing it from getting the lock, you'll have to look for. For locks you can use the blocking session id column in sys.dm_exec_requests to see what session holds locks preventing it from getting the lock it wants.
You may find this useful: http://www.red-gate.com/community/books/accidental-dba
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability