Seguindo a sugestão do Eric e do Júnior Galvão, eliminei os cursores, e meu script ficou assim:
DECLARE @TOTAL INT
DECLARE @CODIGO CHAR(14)
USE OSCAPTURA;
SELECT @CODIGO=CODIGO FROM TMO WHERE KM='1' AND PLANO='1'
USE BANCO_PROD;
SELECT COUNT(SOF_OSS.TM_CD) AS TOTAL FROM (SOF_OSS LEFT JOIN SOF_TM ON SOF_OSS.TM_CD=SOF_TM.TM_CD) LEFT JOIN SOF_OS ON SOF_OSS.OS_NR=SOF_OS.OS_NR WHERE VE_NR='0025907' AND SOF_OSS.TM_CD = @CODIGO
O objetivo é obter um CÓDIGO que está em um banco de dados, e utilizá-lo para consultar uma tabela de outro banco de dados.
Quando executo este script no console do Management Studio, ele retorna o resultado esperado, na coluna TOTAL, porém quando executo o mesmo script dentro do programa, através de um objeto Connection, ele não retorna o Recorset.
Como faço para obter o mesmo resultado do console ?