Aquí te van dos ejemplos.
 
1. Ejecutando y recuperando un DataSet:  
Código:
 DataSet dataset = new DataSet();
DataTable dataTable = new DataTable("tabla1");
dataset.Tables.Add(dataTable);
SqlDataAdapter  dataAdapter = new SqlDataAdapter("Select * from opciones","Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;");
dataAdapter.Fill(dataset, "tabla1");
  2. Usando un lector (DataReader) para hacerlo más personalizado:  
Código:
 SqlConnection connection = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;");
SqlCommand command = new SqlCommand("Select * from opciones");
command.Connection = connection;
command.CommandType = CommandType.Text;
connection.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader!=null)
{
  while (reader.Read())
  {
    string valorColumna1 = reader.GetString("columna1");
    string valorColumna2 = reader.GetString("columna2");
    // ...más programación...
  }
  reader.Close();
}
connection.Close();
  Espero les sirva =)  
y por cierto SP2 resuelve problemas del Sistema Operativo, claro para usuarios con licencia, si es un software muy viejo o que fué creado con "trucos" para que funcionara por que la programación estaba mal, entonces si es posible que truene, pero los programas modernos de deberian.