Index: /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HiveGridServerWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HiveGridServerWrapper.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Grid.HiveBridge/3.2/HiveGridServerWrapper.cs	(revision 2099)
@@ -48,5 +48,5 @@
 
     public JobState JobState(Guid guid) {
-      ResponseObject<JobResult> response = SavelyExecute(() => executionEngine.GetLastResult(guid, false));
+      ResponseObject<SerializedJobResult> response = SavelyExecute(() => executionEngine.GetLastSerializedResult(guid, false));
       if (response != null && response.Success == true &&
         (response.StatusMessage == ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE ||
@@ -66,8 +66,8 @@
 
     public byte[] TryEndExecuteEngine(Guid guid) {
-      ResponseObject<JobResult> response = SavelyExecute(() => executionEngine.GetLastResult(guid, false));
+      ResponseObject<SerializedJobResult> response = SavelyExecute(() => executionEngine.GetLastSerializedResult(guid, false));
       if (response != null &&
         response.Success && response.Obj != null) {
-        HeuristicLab.Hive.Engine.Job restoredJob = (HeuristicLab.Hive.Engine.Job)PersistenceManager.RestoreFromGZip(response.Obj.Result);
+        HeuristicLab.Hive.Engine.Job restoredJob = (HeuristicLab.Hive.Engine.Job)PersistenceManager.RestoreFromGZip(response.Obj.SerializedJobResultData);
         // only return the engine when it wasn't canceled (result is only a snapshot)
         if (!restoredJob.Engine.Canceled) {
Index: /trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/WcfService.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/WcfService.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/WcfService.cs	(revision 2099)
@@ -279,11 +279,14 @@
     /// </summary>
     private Stream GetStreamedJobResult(Guid clientId, Guid jobId, byte[] result, double percentage, Exception exception) {
-      JobResult jobResult =
-          new JobResult();
+      SerializedJobResult serializedJobResult =
+          new SerializedJobResult();
+      JobResult jobResult = new JobResult();
       jobResult.ClientId = clientId;
       jobResult.JobId = jobId;
-      jobResult.Result = result;
       jobResult.Percentage = percentage;
       jobResult.Exception = exception;
+
+      serializedJobResult.JobResult = jobResult;
+      serializedJobResult.SerializedJobResultData = result;
 
       MemoryStream stream =
Index: unk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/ComputableJob.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/ComputableJob.cs	(revision 2098)
+++ 	(revision )
@@ -1,38 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Runtime.Serialization;
-
-namespace HeuristicLab.Hive.Contracts.BusinessObjects {
-  [DataContract]
-  [Serializable]
-  public class ComputableJob {
-    [DataMember]
-    public Job JobInfo { get; set; }
-    
-    [DataMember]
-    public byte[] SerializedJob { get; set; }
-  }
-}
Index: /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/JobResult.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/JobResult.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/JobResult.cs	(revision 2099)
@@ -35,6 +35,4 @@
     public Guid JobId { get; set; }
     [DataMember]
-    public byte[] Result { get; set; } 
-    [DataMember]
     public double Percentage { get; set; }
     [DataMember]
Index: /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/SerializedJobResult.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/SerializedJobResult.cs	(revision 2099)
+++ /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/SerializedJobResult.cs	(revision 2099)
@@ -0,0 +1,38 @@
+﻿   #region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+  [DataContract]
+  [Serializable]
+  public class SerializedJobResult {
+    [DataMember]
+    public JobResult JobResult { get; set; }
+
+    [DataMember]
+    public byte[] SerializedJobResultData { get; set; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Contracts/3.2/HeuristicLab.Hive.Contracts-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/3.2/HeuristicLab.Hive.Contracts-3.2.csproj	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Contracts/3.2/HeuristicLab.Hive.Contracts-3.2.csproj	(revision 2099)
@@ -96,4 +96,5 @@
     <Compile Include="BusinessObjects\JobResult.cs" />
     <Compile Include="BusinessObjects\Resource.cs" />
+    <Compile Include="BusinessObjects\SerializedJobResult.cs" />
     <Compile Include="BusinessObjects\UpTimeStatistics.cs" />
     <Compile Include="BusinessObjects\Client.cs" />
Index: /trunk/sources/HeuristicLab.Hive.Contracts/3.2/Interfaces/IExecutionEngineFacade.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/3.2/Interfaces/IExecutionEngineFacade.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Contracts/3.2/Interfaces/IExecutionEngineFacade.cs	(revision 2099)
@@ -35,5 +35,5 @@
     Response RequestSnapshot(Guid jobId);
     [OperationContract]
-    ResponseObject<JobResult> GetLastResult(Guid jobId, bool requested);
+    ResponseObject<SerializedJobResult> GetLastSerializedResult(Guid jobId, bool requested);
     [OperationContract]
     Response AbortJob(Guid jobId);
Index: /trunk/sources/HeuristicLab.Hive.Contracts/3.2/Interfaces/IJobManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/3.2/Interfaces/IJobManager.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Contracts/3.2/Interfaces/IJobManager.cs	(revision 2099)
@@ -42,5 +42,7 @@
     Response RemoveJob(Guid jobId);
     [OperationContract]
-    ResponseObject<JobResult> GetLastJobResultOf(Guid jobId, bool requested);
+    ResponseObject<JobResult> GetLastJobResultOf(Guid jobId);
+    [OperationContract]
+    ResponseObject<SerializedJobResult> GetLastSerializedJobResultOf(Guid jobId, bool requested);
     [OperationContract]
     ResponseList<JobResult> GetAllJobResults(Guid jobId);
Index: /trunk/sources/HeuristicLab.Hive.Engine/3.2/HiveEngine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Engine/3.2/HiveEngine.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Engine/3.2/HiveEngine.cs	(revision 2099)
@@ -100,5 +100,5 @@
       Thread t = new Thread(() => {
         IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl);
-        ResponseObject<JobResult> response = null;
+        ResponseObject<SerializedJobResult> response = null;
         Job restoredJob = null;
         do {
@@ -106,5 +106,5 @@
           lock (locker) {
             HiveLogger.Debug("HiveEngine: Results-polling - GetLastResult");
-            response = executionEngineFacade.GetLastResult(jobId, false);
+            response = executionEngineFacade.GetLastSerializedResult(jobId, false);
             HiveLogger.Debug("HiveEngine: Results-polling - Server: " + response.StatusMessage + " success: " + response.Success);
             // loop while 
@@ -116,5 +116,5 @@
             if (response.Success && response.Obj != null) {
               HiveLogger.Debug("HiveEngine: Results-polling - Got result!");
-              restoredJob = (Job)PersistenceManager.RestoreFromGZip(response.Obj.Result);
+              restoredJob = (Job)PersistenceManager.RestoreFromGZip(response.Obj.SerializedJobResultData);
               HiveLogger.Debug("HiveEngine: Results-polling - IsSnapshotResult: " + restoredJob.Engine.Canceled);
             }
@@ -133,5 +133,5 @@
       IExecutionEngineFacade executionEngineFacade = ServiceLocator.CreateExecutionEngineFacade(HiveServerUrl);
 
-      ResponseObject<JobResult> response;
+      ResponseObject<SerializedJobResult> response;
       lock (locker) {
         HiveLogger.Debug("HiveEngine: Abort - RequestSnapshot");
@@ -140,5 +140,5 @@
           // job is finished already
           HiveLogger.Debug("HiveEngine: Abort - GetLastResult(false)");
-          response = executionEngineFacade.GetLastResult(jobId, false);
+          response = executionEngineFacade.GetLastSerializedResult(jobId, false);
           HiveLogger.Debug("HiveEngine: Abort - Server: " + response.StatusMessage + " success: " + response.Success);
         } else {
@@ -148,5 +148,5 @@
             Thread.Sleep(SNAPSHOT_POLLING_INTERVAL_MS);
             HiveLogger.Debug("HiveEngine: Abort - GetLastResult(true)");
-            response = executionEngineFacade.GetLastResult(jobId, true);
+            response = executionEngineFacade.GetLastSerializedResult(jobId, true);
             HiveLogger.Debug("HiveEngine: Abort - Server: " + response.StatusMessage + " success: " + response.Success);
             // loop while
@@ -158,8 +158,8 @@
         }
       }
-      JobResult jobResult = response.Obj;
+      SerializedJobResult jobResult = response.Obj;
       if (jobResult != null) {
         HiveLogger.Debug("HiveEngine: Results-polling - Got result!");
-        job = (Job)PersistenceManager.RestoreFromGZip(jobResult.Result);
+        job = (Job)PersistenceManager.RestoreFromGZip(jobResult.SerializedJobResultData);
         //PluginManager.ControlManager.ShowControl(job.Engine.CreateView());
       }
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/ExecutableJobAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/ExecutableJobAdapter.cs	(revision 2099)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/ExecutableJobAdapter.cs	(revision 2099)
@@ -0,0 +1,105 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Server.DataAccess;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.Linq.Expressions;
+using HeuristicLab.DataAccess.ADOHelper;
+using HeuristicLab.Hive.Server.ADODataAccess.dsHiveServerTableAdapters;
+using System.Data.Common;
+using System.Data.SqlClient;
+using HeuristicLab.Hive.Server.ADODataAccess.TableAdapterWrapper;
+
+namespace HeuristicLab.Hive.Server.ADODataAccess {
+  class ExecutableJobAdapter :
+    DataAdapterBase<dsHiveServerTableAdapters.JobTableAdapter,
+                      ExecutableJob, 
+                      dsHiveServer.JobRow>, 
+    IExecutableJobAdapter {
+    #region Fields
+    private IJobAdapter jobAdapter = null;
+
+    private IJobAdapter JobAdapter {
+      get {
+        if (jobAdapter == null)
+          jobAdapter = 
+            this.Session.GetDataAdapter<Job, IJobAdapter>();
+
+        return jobAdapter;
+      }
+    }
+    #endregion
+
+    public ExecutableJobAdapter(): base(new ExecutableJobAdapterWrapper()) {
+    }
+
+    #region Overrides
+    protected override ExecutableJob ConvertRow(dsHiveServer.JobRow row,
+      ExecutableJob job) {
+      if (row != null && job != null) {
+        JobAdapter.GetById(job);
+
+        if (!row.IsSerializedJobNull())
+          job.SerializedJob = row.SerializedJob;
+        else
+          job.SerializedJob = null;
+
+        return job;
+      } else
+        return null;
+    }
+
+    protected override dsHiveServer.JobRow ConvertObj(ExecutableJob job,
+      dsHiveServer.JobRow row) {
+      if (job != null && row != null) {
+        row.SerializedJob = job.SerializedJob;
+      }
+
+      return row;
+    }
+
+    protected override void doUpdate(ExecutableJob obj) {
+      if (obj != null) {
+        JobAdapter.Update(obj);
+
+        base.doUpdate(obj);
+      }
+    }
+    #endregion
+
+    public ICollection<ExecutableJob> FindJobs(State state, int cores, int memory,
+      Guid resourceId) {
+      return
+         base.FindMultiple(
+           delegate() {
+             return Adapter.GetDataByStateCoresMemoryResource(
+               state.ToString(),
+               cores,
+               memory,
+               resourceId);
+           });
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/JobAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/JobAdapter.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/JobAdapter.cs	(revision 2099)
@@ -391,5 +391,5 @@
           //Referential integrity with job results
           ICollection<JobResult> results =
-            ResultsAdapter.GetResultsOf(job);
+            ResultsAdapter.GetResultsOf(job.Id);
 
           foreach (JobResult result in results) {
@@ -420,5 +420,5 @@
     /// <param name="jobId"></param>
     /// <returns></returns>
-    public SerializedJob GetComputableJob(Guid jobId) {
+    public SerializedJob GetSerializedJob(Guid jobId) {
       return (SerializedJob)base.doInTransaction(
         delegate() {
@@ -442,5 +442,5 @@
     /// </summary>
     /// <param name="jobId"></param>
-    public void UpdateComputableJob(SerializedJob job) {
+    public void UpdateSerializedJob(SerializedJob job) {
       if(job != null && 
         job.JobInfo != null) {
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/JobResultsAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/JobResultsAdapter.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/JobResultsAdapter.cs	(revision 2099)
@@ -55,9 +55,4 @@
           row.SetJobIdNull();
 
-        if (result.Result != null)
-          row.JobResult = result.Result;
-        else
-          row.SetJobResultNull();
-
         if (result.ClientId != Guid.Empty)  {
           ClientInfo client = 
@@ -99,9 +94,4 @@
           result.JobId = Guid.Empty;
 
-        if (!row.IsJobResultNull())
-          result.Result = row.JobResult;
-        else
-          result.Result = null;
-
         if (!row.IsResourceIdNull())
           result.ClientId = row.ResourceId;
@@ -128,26 +118,49 @@
 
     #region IJobResultsAdapter Members
-    public ICollection<JobResult> GetResultsOf(Job job) {
-      if (job != null) {
+    public ICollection<JobResult> GetResultsOf(Guid jobId) {
         return 
           base.FindMultiple(
             delegate() {
-              return Adapter.GetDataByJob(job.Id);
+              return Adapter.GetDataByJob(jobId);
             });
-      }
-
-      return null;
     }
 
-    public JobResult GetLastResultOf(Job job) {
-       if (job != null) {
+    public JobResult GetLastResultOf(Guid jobId) {
         return 
           base.FindSingle(
             delegate() {
-              return Adapter.GetDataByLastResult(job.Id);
+              return Adapter.GetDataByLastResult(jobId);
             });
+    }
+
+    public SerializedJobResult GetSerializedJobResult(Guid jobResultId) {
+      return (SerializedJobResult)base.doInTransaction(
+        delegate() {
+          SerializedJobResult jobResult =
+            new SerializedJobResult();
+
+          jobResult.JobResult = GetById(jobResultId);
+          if (jobResult.JobResult != null) {
+            jobResult.SerializedJobResultData =
+              base.Adapter.GetSerializedJobResultById(jobResultId);
+
+            return jobResult;
+          } else {
+            return null;
+          }
+        });
+    }
+
+    public void UpdateSerializedJobResult(SerializedJobResult jobResult) {
+      if (jobResult != null &&
+        jobResult.JobResult != null) {
+        base.doInTransaction(
+          delegate() {
+            Update(jobResult.JobResult);
+            return base.Adapter.UpdateSerializedJobResultById(
+              jobResult.SerializedJobResultData,
+              jobResult.JobResult.Id);
+          });
       }
-
-      return null;
     }
     #endregion
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/ExecutableJobAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/ExecutableJobAdapterWrapper.cs	(revision 2099)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/ExecutableJobAdapterWrapper.cs	(revision 2099)
@@ -0,0 +1,49 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using System.Data.SqlClient;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.Data.Common;
+
+namespace HeuristicLab.Hive.Server.ADODataAccess.TableAdapterWrapper {
+  class ExecutableJobAdapterWrapper :
+    TableAdapterWrapperBase<dsHiveServerTableAdapters.JobTableAdapter,
+                      ExecutableJob,
+                      dsHiveServer.JobRow> {
+    public override void UpdateRow(dsHiveServer.JobRow row) {
+      TransactionalAdapter.Update(row);
+    }
+
+    public override dsHiveServer.JobRow
+      InsertNewRow(ExecutableJob job) {
+      dsHiveServer.JobDataTable data =
+        new dsHiveServer.JobDataTable();
+
+      dsHiveServer.JobRow row = data.NewJobRow();
+      row.JobId = job.Id;
+      data.AddJobRow(row);
+
+      return row;
+    }
+
+    public override IEnumerable<dsHiveServer.JobRow>
+      FindById(Guid id) {
+      return TransactionalAdapter.GetDataById(id);
+    }
+
+    public override IEnumerable<dsHiveServer.JobRow>
+      FindAll() {
+      return TransactionalAdapter.GetData();
+    }
+
+    protected override void SetConnection(DbConnection connection) {
+      adapter.Connection = connection as SqlConnection;
+    }
+
+    protected override void SetTransaction(DbTransaction transaction) {
+      adapter.Transaction = transaction as SqlTransaction;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/JobResultsAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/JobResultsAdapterWrapper.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/JobResultsAdapterWrapper.cs	(revision 2099)
@@ -36,4 +36,12 @@
     }
 
+    public byte[] GetSerializedJobResult(Guid jobResultId) {
+      return TransactionalAdapter.GetSerializedJobResultById(jobResultId);
+    }
+
+    public bool UpdateSerialiedJobResult(byte[] serializedJobResult, Guid jobResultId) {
+      return TransactionalAdapter.UpdateSerializedJobResultById(serializedJobResult, jobResultId) > 0;
+    }
+
     protected override void SetConnection(DbConnection connection) {
       adapter.Connection = connection as SqlConnection;
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.Designer.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.Designer.cs	(revision 2099)
@@ -2159,6 +2159,4 @@
             private global::System.Data.DataColumn columnJobId;
             
-            private global::System.Data.DataColumn columnJobResult;
-            
             private global::System.Data.DataColumn columnMessage;
             
@@ -2214,11 +2212,4 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public global::System.Data.DataColumn JobResultColumn {
-                get {
-                    return this.columnJobResult;
-                }
-            }
-            
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
             public global::System.Data.DataColumn MessageColumn {
                 get {
@@ -2277,10 +2268,9 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public JobResultRow AddJobResultRow(System.Guid JobResultId, JobRow parentJobRowByR_14, byte[] JobResult, string Message, double Percentage, ClientRow parentClientRowByR_47, System.DateTime DateFinished) {
+            public JobResultRow AddJobResultRow(System.Guid JobResultId, JobRow parentJobRowByR_14, string Message, double Percentage, ClientRow parentClientRowByR_47, System.DateTime DateFinished) {
                 JobResultRow rowJobResultRow = ((JobResultRow)(this.NewRow()));
                 object[] columnValuesArray = new object[] {
                         JobResultId,
                         null,
-                        JobResult,
                         Message,
                         Percentage,
@@ -2291,5 +2281,5 @@
                 }
                 if ((parentClientRowByR_47 != null)) {
-                    columnValuesArray[5] = parentClientRowByR_47[0];
+                    columnValuesArray[4] = parentClientRowByR_47[0];
                 }
                 rowJobResultRow.ItemArray = columnValuesArray;
@@ -2320,5 +2310,4 @@
                 this.columnJobResultId = base.Columns["JobResultId"];
                 this.columnJobId = base.Columns["JobId"];
-                this.columnJobResult = base.Columns["JobResult"];
                 this.columnMessage = base.Columns["Message"];
                 this.columnPercentage = base.Columns["Percentage"];
@@ -2333,6 +2322,4 @@
                 this.columnJobId = new global::System.Data.DataColumn("JobId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnJobId);
-                this.columnJobResult = new global::System.Data.DataColumn("JobResult", typeof(byte[]), null, global::System.Data.MappingType.Element);
-                base.Columns.Add(this.columnJobResult);
                 this.columnMessage = new global::System.Data.DataColumn("Message", typeof(string), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnMessage);
@@ -4639,19 +4626,4 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public byte[] JobResult {
-                get {
-                    try {
-                        return ((byte[])(this[this.tableJobResult.JobResultColumn]));
-                    }
-                    catch (global::System.InvalidCastException e) {
-                        throw new global::System.Data.StrongTypingException("The value for column \'JobResult\' in table \'JobResult\' is DBNull.", e);
-                    }
-                }
-                set {
-                    this[this.tableJobResult.JobResultColumn] = value;
-                }
-            }
-            
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
             public string Message {
                 get {
@@ -4741,14 +4713,4 @@
             public void SetJobIdNull() {
                 this[this.tableJobResult.JobIdColumn] = global::System.Convert.DBNull;
-            }
-            
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public bool IsJobResultNull() {
-                return this.IsNull(this.tableJobResult.JobResultColumn);
-            }
-            
-            [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public void SetJobResultNull() {
-                this[this.tableJobResult.JobResultColumn] = global::System.Convert.DBNull;
             }
             
@@ -8542,5 +8504,4 @@
             tableMapping.ColumnMappings.Add("JobResultId", "JobResultId");
             tableMapping.ColumnMappings.Add("JobId", "JobId");
-            tableMapping.ColumnMappings.Add("JobResult", "JobResult");
             tableMapping.ColumnMappings.Add("Message", "Message");
             tableMapping.ColumnMappings.Add("Percentage", "Percentage");
@@ -8550,5 +8511,5 @@
             this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.DeleteCommand.Connection = this.Connection;
-            this._adapter.DeleteCommand.CommandText = @"DELETE FROM [dbo].[JobResult] WHERE (([JobResultId] = @Original_JobResultId) AND ((@IsNull_JobId = 1 AND [JobId] IS NULL) OR ([JobId] = @Original_JobId)) AND ((@IsNull_Percentage = 1 AND [Percentage] IS NULL) OR ([Percentage] = @Original_Percentage)) AND ((@IsNull_ResourceId = 1 AND [ResourceId] IS NULL) OR ([ResourceId] = @Original_ResourceId)) AND ((@IsNull_DateFinished = 1 AND [DateFinished] IS NULL) OR ([DateFinished] = @Original_DateFinished)))";
+            this._adapter.DeleteCommand.CommandText = @"DELETE FROM [JobResult] WHERE (([JobResultId] = @Original_JobResultId) AND ((@IsNull_JobId = 1 AND [JobId] IS NULL) OR ([JobId] = @Original_JobId)) AND ((@IsNull_Percentage = 1 AND [Percentage] IS NULL) OR ([Percentage] = @Original_Percentage)) AND ((@IsNull_ResourceId = 1 AND [ResourceId] IS NULL) OR ([ResourceId] = @Original_ResourceId)) AND ((@IsNull_DateFinished = 1 AND [DateFinished] IS NULL) OR ([DateFinished] = @Original_DateFinished)))";
             this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_JobResultId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JobResultId", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
@@ -8563,10 +8524,9 @@
             this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.InsertCommand.Connection = this.Connection;
-            this._adapter.InsertCommand.CommandText = @"INSERT INTO [dbo].[JobResult] ([JobResultId], [JobId], [JobResult], [Message], [Percentage], [ResourceId], [DateFinished]) VALUES (@JobResultId, @JobId, @JobResult, @Message, @Percentage, @ResourceId, @DateFinished);
-SELECT JobResultId, JobId, JobResult, Message, Percentage, ResourceId, DateFinished FROM JobResult WHERE (JobResultId = @JobResultId)";
+            this._adapter.InsertCommand.CommandText = @"INSERT INTO [JobResult] ([JobResultId], [JobId], [Message], [Percentage], [ResourceId], [DateFinished]) VALUES (@JobResultId, @JobId, @Message, @Percentage, @ResourceId, @DateFinished);
+SELECT JobResultId, JobId, Message, Percentage, ResourceId, DateFinished FROM JobResult WHERE (JobResultId = @JobResultId)";
             this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JobResultId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JobResultId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JobId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JobId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JobResult", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JobResult", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Message", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Message", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Percentage", global::System.Data.SqlDbType.Float, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Percentage", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
@@ -8575,10 +8535,9 @@
             this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.UpdateCommand.Connection = this.Connection;
-            this._adapter.UpdateCommand.CommandText = @"UPDATE [dbo].[JobResult] SET [JobResultId] = @JobResultId, [JobId] = @JobId, [JobResult] = @JobResult, [Message] = @Message, [Percentage] = @Percentage, [ResourceId] = @ResourceId, [DateFinished] = @DateFinished WHERE (([JobResultId] = @Original_JobResultId) AND ((@IsNull_JobId = 1 AND [JobId] IS NULL) OR ([JobId] = @Original_JobId)) AND ((@IsNull_Percentage = 1 AND [Percentage] IS NULL) OR ([Percentage] = @Original_Percentage)) AND ((@IsNull_ResourceId = 1 AND [ResourceId] IS NULL) OR ([ResourceId] = @Original_ResourceId)) AND ((@IsNull_DateFinished = 1 AND [DateFinished] IS NULL) OR ([DateFinished] = @Original_DateFinished)));
-SELECT JobResultId, JobId, JobResult, Message, Percentage, ResourceId, DateFinished FROM JobResult WHERE (JobResultId = @JobResultId)";
+            this._adapter.UpdateCommand.CommandText = @"UPDATE [JobResult] SET [JobResultId] = @JobResultId, [JobId] = @JobId, [Message] = @Message, [Percentage] = @Percentage, [ResourceId] = @ResourceId, [DateFinished] = @DateFinished WHERE (([JobResultId] = @Original_JobResultId) AND ((@IsNull_JobId = 1 AND [JobId] IS NULL) OR ([JobId] = @Original_JobId)) AND ((@IsNull_Percentage = 1 AND [Percentage] IS NULL) OR ([Percentage] = @Original_Percentage)) AND ((@IsNull_ResourceId = 1 AND [ResourceId] IS NULL) OR ([ResourceId] = @Original_ResourceId)) AND ((@IsNull_DateFinished = 1 AND [DateFinished] IS NULL) OR ([DateFinished] = @Original_DateFinished)));
+SELECT JobResultId, JobId, Message, Percentage, ResourceId, DateFinished FROM JobResult WHERE (JobResultId = @JobResultId)";
             this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JobResultId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JobResultId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JobId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JobId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JobResult", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JobResult", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Message", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Message", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Percentage", global::System.Data.SqlDbType.Float, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Percentage", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
@@ -8604,27 +8563,39 @@
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         private void InitCommandCollection() {
-            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[4];
+            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[6];
             this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[0].Connection = this.Connection;
-            this._commandCollection[0].CommandText = "SELECT * FROM dbo.JobResult";
+            this._commandCollection[0].CommandText = "SELECT     JobResultId, JobId, Message, Percentage, ResourceId, DateFinished\r\nFRO" +
+                "M         JobResult";
             this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
             this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[1].Connection = this.Connection;
-            this._commandCollection[1].CommandText = "SELECT DateFinished, JobId, JobResult, JobResultId, Message, Percentage, Resource" +
-                "Id FROM JobResult WHERE (JobResultId = @Id)";
+            this._commandCollection[1].CommandText = "SELECT DateFinished, JobId, JobResultId, Message, Percentage, ResourceId FROM Job" +
+                "Result WHERE (JobResultId = @Id)";
             this._commandCollection[1].CommandType = global::System.Data.CommandType.Text;
             this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Id", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "JobResultId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._commandCollection[2] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[2].Connection = this.Connection;
-            this._commandCollection[2].CommandText = "SELECT DateFinished, JobId, JobResult, JobResultId, Message, Percentage, Resource" +
-                "Id FROM JobResult WHERE (JobId = @JobId)";
+            this._commandCollection[2].CommandText = "SELECT DateFinished, JobId, JobResultId, Message, Percentage, ResourceId FROM Job" +
+                "Result WHERE (JobId = @JobId)";
             this._commandCollection[2].CommandType = global::System.Data.CommandType.Text;
             this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JobId", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "JobId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._commandCollection[3] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[3].Connection = this.Connection;
-            this._commandCollection[3].CommandText = "SELECT TOP 1 JobResult.*  FROM JobResult WHERE JobId = @JobId ORDER BY DateFinish" +
-                "ed DESC ";
+            this._commandCollection[3].CommandText = "SELECT TOP (1) DateFinished, JobId, JobResultId, Message, Percentage, ResourceId " +
+                "FROM JobResult WHERE (JobId = @JobId) ORDER BY DateFinished DESC";
             this._commandCollection[3].CommandType = global::System.Data.CommandType.Text;
             this._commandCollection[3].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JobId", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "JobId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[4] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[4].Connection = this.Connection;
+            this._commandCollection[4].CommandText = "SELECT JobResult FROM JobResult WHERE JobResultId = @Id";
+            this._commandCollection[4].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[4].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Id", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "JobResultId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[5] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[5].Connection = this.Connection;
+            this._commandCollection[5].CommandText = "UPDATE JobResult SET JobResult = @JobResult WHERE JobResultId = @Id";
+            this._commandCollection[5].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[5].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JobResult", global::System.Data.SqlDbType.VarBinary, 2147483647, global::System.Data.ParameterDirection.Input, 0, 0, "JobResult", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[5].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Id", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "JobResultId", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
         }
         
@@ -8824,5 +8795,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
-        public virtual int Insert(System.Guid JobResultId, global::System.Nullable<global::System.Guid> JobId, byte[] JobResult, string Message, global::System.Nullable<double> Percentage, global::System.Nullable<global::System.Guid> ResourceId, global::System.Nullable<global::System.DateTime> DateFinished) {
+        public virtual int Insert(System.Guid JobResultId, global::System.Nullable<global::System.Guid> JobId, string Message, global::System.Nullable<double> Percentage, global::System.Nullable<global::System.Guid> ResourceId, global::System.Nullable<global::System.DateTime> DateFinished) {
             this.Adapter.InsertCommand.Parameters[0].Value = ((System.Guid)(JobResultId));
             if ((JobId.HasValue == true)) {
@@ -8832,33 +8803,27 @@
                 this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value;
             }
-            if ((JobResult == null)) {
+            if ((Message == null)) {
                 this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value;
             }
             else {
-                this.Adapter.InsertCommand.Parameters[2].Value = ((byte[])(JobResult));
-            }
-            if ((Message == null)) {
+                this.Adapter.InsertCommand.Parameters[2].Value = ((string)(Message));
+            }
+            if ((Percentage.HasValue == true)) {
+                this.Adapter.InsertCommand.Parameters[3].Value = ((double)(Percentage.Value));
+            }
+            else {
                 this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value;
             }
-            else {
-                this.Adapter.InsertCommand.Parameters[3].Value = ((string)(Message));
-            }
-            if ((Percentage.HasValue == true)) {
-                this.Adapter.InsertCommand.Parameters[4].Value = ((double)(Percentage.Value));
+            if ((ResourceId.HasValue == true)) {
+                this.Adapter.InsertCommand.Parameters[4].Value = ((System.Guid)(ResourceId.Value));
             }
             else {
                 this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value;
             }
-            if ((ResourceId.HasValue == true)) {
-                this.Adapter.InsertCommand.Parameters[5].Value = ((System.Guid)(ResourceId.Value));
+            if ((DateFinished.HasValue == true)) {
+                this.Adapter.InsertCommand.Parameters[5].Value = ((System.DateTime)(DateFinished.Value));
             }
             else {
                 this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value;
-            }
-            if ((DateFinished.HasValue == true)) {
-                this.Adapter.InsertCommand.Parameters[6].Value = ((System.DateTime)(DateFinished.Value));
-            }
-            else {
-                this.Adapter.InsertCommand.Parameters[6].Value = global::System.DBNull.Value;
             }
             global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State;
@@ -8881,5 +8846,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(System.Guid JobResultId, global::System.Nullable<global::System.Guid> JobId, byte[] JobResult, string Message, global::System.Nullable<double> Percentage, global::System.Nullable<global::System.Guid> ResourceId, global::System.Nullable<global::System.DateTime> DateFinished, System.Guid Original_JobResultId, global::System.Nullable<global::System.Guid> Original_JobId, global::System.Nullable<double> Original_Percentage, global::System.Nullable<global::System.Guid> Original_ResourceId, global::System.Nullable<global::System.DateTime> Original_DateFinished) {
+        public virtual int Update(System.Guid JobResultId, global::System.Nullable<global::System.Guid> JobId, string Message, global::System.Nullable<double> Percentage, global::System.Nullable<global::System.Guid> ResourceId, global::System.Nullable<global::System.DateTime> DateFinished, System.Guid Original_JobResultId, global::System.Nullable<global::System.Guid> Original_JobId, global::System.Nullable<double> Original_Percentage, global::System.Nullable<global::System.Guid> Original_ResourceId, global::System.Nullable<global::System.DateTime> Original_DateFinished) {
             this.Adapter.UpdateCommand.Parameters[0].Value = ((System.Guid)(JobResultId));
             if ((JobId.HasValue == true)) {
@@ -8889,66 +8854,60 @@
                 this.Adapter.UpdateCommand.Parameters[1].Value = global::System.DBNull.Value;
             }
-            if ((JobResult == null)) {
+            if ((Message == null)) {
                 this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value;
             }
             else {
-                this.Adapter.UpdateCommand.Parameters[2].Value = ((byte[])(JobResult));
-            }
-            if ((Message == null)) {
+                this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(Message));
+            }
+            if ((Percentage.HasValue == true)) {
+                this.Adapter.UpdateCommand.Parameters[3].Value = ((double)(Percentage.Value));
+            }
+            else {
                 this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value;
             }
-            else {
-                this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(Message));
-            }
-            if ((Percentage.HasValue == true)) {
-                this.Adapter.UpdateCommand.Parameters[4].Value = ((double)(Percentage.Value));
+            if ((ResourceId.HasValue == true)) {
+                this.Adapter.UpdateCommand.Parameters[4].Value = ((System.Guid)(ResourceId.Value));
             }
             else {
                 this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value;
             }
-            if ((ResourceId.HasValue == true)) {
-                this.Adapter.UpdateCommand.Parameters[5].Value = ((System.Guid)(ResourceId.Value));
+            if ((DateFinished.HasValue == true)) {
+                this.Adapter.UpdateCommand.Parameters[5].Value = ((System.DateTime)(DateFinished.Value));
             }
             else {
                 this.Adapter.UpdateCommand.Parameters[5].Value = global::System.DBNull.Value;
             }
-            if ((DateFinished.HasValue == true)) {
-                this.Adapter.UpdateCommand.Parameters[6].Value = ((System.DateTime)(DateFinished.Value));
-            }
-            else {
-                this.Adapter.UpdateCommand.Parameters[6].Value = global::System.DBNull.Value;
-            }
-            this.Adapter.UpdateCommand.Parameters[7].Value = ((System.Guid)(Original_JobResultId));
+            this.Adapter.UpdateCommand.Parameters[6].Value = ((System.Guid)(Original_JobResultId));
             if ((Original_JobId.HasValue == true)) {
-                this.Adapter.UpdateCommand.Parameters[8].Value = ((object)(0));
-                this.Adapter.UpdateCommand.Parameters[9].Value = ((System.Guid)(Original_JobId.Value));
-            }
-            else {
-                this.Adapter.UpdateCommand.Parameters[8].Value = ((object)(1));
-                this.Adapter.UpdateCommand.Parameters[9].Value = global::System.DBNull.Value;
+                this.Adapter.UpdateCommand.Parameters[7].Value = ((object)(0));
+                this.Adapter.UpdateCommand.Parameters[8].Value = ((System.Guid)(Original_JobId.Value));
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[7].Value = ((object)(1));
+                this.Adapter.UpdateCommand.Parameters[8].Value = global::System.DBNull.Value;
             }
             if ((Original_Percentage.HasValue == true)) {
-                this.Adapter.UpdateCommand.Parameters[10].Value = ((object)(0));
-                this.Adapter.UpdateCommand.Parameters[11].Value = ((double)(Original_Percentage.Value));
-            }
-            else {
-                this.Adapter.UpdateCommand.Parameters[10].Value = ((object)(1));
-                this.Adapter.UpdateCommand.Parameters[11].Value = global::System.DBNull.Value;
+                this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(0));
+                this.Adapter.UpdateCommand.Parameters[10].Value = ((double)(Original_Percentage.Value));
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(1));
+                this.Adapter.UpdateCommand.Parameters[10].Value = global::System.DBNull.Value;
             }
             if ((Original_ResourceId.HasValue == true)) {
-                this.Adapter.UpdateCommand.Parameters[12].Value = ((object)(0));
-                this.Adapter.UpdateCommand.Parameters[13].Value = ((System.Guid)(Original_ResourceId.Value));
-            }
-            else {
-                this.Adapter.UpdateCommand.Parameters[12].Value = ((object)(1));
-                this.Adapter.UpdateCommand.Parameters[13].Value = global::System.DBNull.Value;
+                this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(0));
+                this.Adapter.UpdateCommand.Parameters[12].Value = ((System.Guid)(Original_ResourceId.Value));
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(1));
+                this.Adapter.UpdateCommand.Parameters[12].Value = global::System.DBNull.Value;
             }
             if ((Original_DateFinished.HasValue == true)) {
-                this.Adapter.UpdateCommand.Parameters[14].Value = ((object)(0));
-                this.Adapter.UpdateCommand.Parameters[15].Value = ((System.DateTime)(Original_DateFinished.Value));
-            }
-            else {
-                this.Adapter.UpdateCommand.Parameters[14].Value = ((object)(1));
-                this.Adapter.UpdateCommand.Parameters[15].Value = global::System.DBNull.Value;
+                this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(0));
+                this.Adapter.UpdateCommand.Parameters[14].Value = ((System.DateTime)(Original_DateFinished.Value));
+            }
+            else {
+                this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(1));
+                this.Adapter.UpdateCommand.Parameters[14].Value = global::System.DBNull.Value;
             }
             global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State;
@@ -8971,6 +8930,63 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(global::System.Nullable<global::System.Guid> JobId, byte[] JobResult, string Message, global::System.Nullable<double> Percentage, global::System.Nullable<global::System.Guid> ResourceId, global::System.Nullable<global::System.DateTime> DateFinished, System.Guid Original_JobResultId, global::System.Nullable<global::System.Guid> Original_JobId, global::System.Nullable<double> Original_Percentage, global::System.Nullable<global::System.Guid> Original_ResourceId, global::System.Nullable<global::System.DateTime> Original_DateFinished) {
-            return this.Update(Original_JobResultId, JobId, JobResult, Message, Percentage, ResourceId, DateFinished, Original_JobResultId, Original_JobId, Original_Percentage, Original_ResourceId, Original_DateFinished);
+        public virtual int Update(global::System.Nullable<global::System.Guid> JobId, string Message, global::System.Nullable<double> Percentage, global::System.Nullable<global::System.Guid> ResourceId, global::System.Nullable<global::System.DateTime> DateFinished, System.Guid Original_JobResultId, global::System.Nullable<global::System.Guid> Original_JobId, global::System.Nullable<double> Original_Percentage, global::System.Nullable<global::System.Guid> Original_ResourceId, global::System.Nullable<global::System.DateTime> Original_DateFinished) {
+            return this.Update(Original_JobResultId, JobId, Message, Percentage, ResourceId, DateFinished, Original_JobResultId, Original_JobId, Original_Percentage, Original_ResourceId, Original_DateFinished);
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        public virtual byte[] GetSerializedJobResultById(System.Guid Id) {
+            global::System.Data.SqlClient.SqlCommand command = this.CommandCollection[4];
+            command.Parameters[0].Value = ((System.Guid)(Id));
+            global::System.Data.ConnectionState previousConnectionState = command.Connection.State;
+            if (((command.Connection.State & global::System.Data.ConnectionState.Open) 
+                        != global::System.Data.ConnectionState.Open)) {
+                command.Connection.Open();
+            }
+            object returnValue;
+            try {
+                returnValue = command.ExecuteScalar();
+            }
+            finally {
+                if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+                    command.Connection.Close();
+                }
+            }
+            if (((returnValue == null) 
+                        || (returnValue.GetType() == typeof(global::System.DBNull)))) {
+                return null;
+            }
+            else {
+                return ((byte[])(returnValue));
+            }
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, false)]
+        public virtual int UpdateSerializedJobResultById(byte[] JobResult, System.Guid Id) {
+            global::System.Data.SqlClient.SqlCommand command = this.CommandCollection[5];
+            if ((JobResult == null)) {
+                command.Parameters[0].Value = global::System.DBNull.Value;
+            }
+            else {
+                command.Parameters[0].Value = ((byte[])(JobResult));
+            }
+            command.Parameters[1].Value = ((System.Guid)(Id));
+            global::System.Data.ConnectionState previousConnectionState = command.Connection.State;
+            if (((command.Connection.State & global::System.Data.ConnectionState.Open) 
+                        != global::System.Data.ConnectionState.Open)) {
+                command.Connection.Open();
+            }
+            int returnValue;
+            try {
+                returnValue = command.ExecuteNonQuery();
+            }
+            finally {
+                if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
+                    command.Connection.Close();
+                }
+            }
+            return returnValue;
         }
     }
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xsd
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xsd	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xsd	(revision 2099)
@@ -609,5 +609,5 @@
                 <DeleteCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>DELETE FROM [dbo].[JobResult] WHERE (([JobResultId] = @Original_JobResultId) AND ((@IsNull_JobId = 1 AND [JobId] IS NULL) OR ([JobId] = @Original_JobId)) AND ((@IsNull_Percentage = 1 AND [Percentage] IS NULL) OR ([Percentage] = @Original_Percentage)) AND ((@IsNull_ResourceId = 1 AND [ResourceId] IS NULL) OR ([ResourceId] = @Original_ResourceId)) AND ((@IsNull_DateFinished = 1 AND [DateFinished] IS NULL) OR ([DateFinished] = @Original_DateFinished)))</CommandText>
+                    <CommandText>DELETE FROM [JobResult] WHERE (([JobResultId] = @Original_JobResultId) AND ((@IsNull_JobId = 1 AND [JobId] IS NULL) OR ([JobId] = @Original_JobId)) AND ((@IsNull_Percentage = 1 AND [Percentage] IS NULL) OR ([Percentage] = @Original_Percentage)) AND ((@IsNull_ResourceId = 1 AND [ResourceId] IS NULL) OR ([ResourceId] = @Original_ResourceId)) AND ((@IsNull_DateFinished = 1 AND [DateFinished] IS NULL) OR ([DateFinished] = @Original_DateFinished)))</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_JobResultId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="JobResultId" SourceColumnNullMapping="false" SourceVersion="Original" />
@@ -625,10 +625,9 @@
                 <InsertCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>INSERT INTO [dbo].[JobResult] ([JobResultId], [JobId], [JobResult], [Message], [Percentage], [ResourceId], [DateFinished]) VALUES (@JobResultId, @JobId, @JobResult, @Message, @Percentage, @ResourceId, @DateFinished);
-SELECT JobResultId, JobId, JobResult, Message, Percentage, ResourceId, DateFinished FROM JobResult WHERE (JobResultId = @JobResultId)</CommandText>
+                    <CommandText>INSERT INTO [JobResult] ([JobResultId], [JobId], [Message], [Percentage], [ResourceId], [DateFinished]) VALUES (@JobResultId, @JobId, @Message, @Percentage, @ResourceId, @DateFinished);
+SELECT JobResultId, JobId, Message, Percentage, ResourceId, DateFinished FROM JobResult WHERE (JobResultId = @JobResultId)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@JobResultId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="JobResultId" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@JobId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="JobId" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@JobResult" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="JobResult" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Message" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Message" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Double" Direction="Input" ParameterName="@Percentage" Precision="0" ProviderType="Float" Scale="0" Size="0" SourceColumn="Percentage" SourceColumnNullMapping="false" SourceVersion="Current" />
@@ -640,5 +639,6 @@
                 <SelectCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="true">
-                    <CommandText>SELECT * FROM dbo.JobResult</CommandText>
+                    <CommandText>SELECT     JobResultId, JobId, Message, Percentage, ResourceId, DateFinished
+FROM         JobResult</CommandText>
                     <Parameters />
                   </DbCommand>
@@ -646,10 +646,9 @@
                 <UpdateCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>UPDATE [dbo].[JobResult] SET [JobResultId] = @JobResultId, [JobId] = @JobId, [JobResult] = @JobResult, [Message] = @Message, [Percentage] = @Percentage, [ResourceId] = @ResourceId, [DateFinished] = @DateFinished WHERE (([JobResultId] = @Original_JobResultId) AND ((@IsNull_JobId = 1 AND [JobId] IS NULL) OR ([JobId] = @Original_JobId)) AND ((@IsNull_Percentage = 1 AND [Percentage] IS NULL) OR ([Percentage] = @Original_Percentage)) AND ((@IsNull_ResourceId = 1 AND [ResourceId] IS NULL) OR ([ResourceId] = @Original_ResourceId)) AND ((@IsNull_DateFinished = 1 AND [DateFinished] IS NULL) OR ([DateFinished] = @Original_DateFinished)));
-SELECT JobResultId, JobId, JobResult, Message, Percentage, ResourceId, DateFinished FROM JobResult WHERE (JobResultId = @JobResultId)</CommandText>
+                    <CommandText>UPDATE [JobResult] SET [JobResultId] = @JobResultId, [JobId] = @JobId, [Message] = @Message, [Percentage] = @Percentage, [ResourceId] = @ResourceId, [DateFinished] = @DateFinished WHERE (([JobResultId] = @Original_JobResultId) AND ((@IsNull_JobId = 1 AND [JobId] IS NULL) OR ([JobId] = @Original_JobId)) AND ((@IsNull_Percentage = 1 AND [Percentage] IS NULL) OR ([Percentage] = @Original_Percentage)) AND ((@IsNull_ResourceId = 1 AND [ResourceId] IS NULL) OR ([ResourceId] = @Original_ResourceId)) AND ((@IsNull_DateFinished = 1 AND [DateFinished] IS NULL) OR ([DateFinished] = @Original_DateFinished)));
+SELECT JobResultId, JobId, Message, Percentage, ResourceId, DateFinished FROM JobResult WHERE (JobResultId = @JobResultId)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@JobResultId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="JobResultId" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@JobId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="JobId" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@JobResult" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="JobResult" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Message" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Message" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Double" Direction="Input" ParameterName="@Percentage" Precision="0" ProviderType="Float" Scale="0" Size="0" SourceColumn="Percentage" SourceColumnNullMapping="false" SourceVersion="Current" />
@@ -673,5 +672,4 @@
               <Mapping SourceColumn="JobResultId" DataSetColumn="JobResultId" />
               <Mapping SourceColumn="JobId" DataSetColumn="JobId" />
-              <Mapping SourceColumn="JobResult" DataSetColumn="JobResult" />
               <Mapping SourceColumn="Message" DataSetColumn="Message" />
               <Mapping SourceColumn="Percentage" DataSetColumn="Percentage" />
@@ -683,5 +681,5 @@
                 <SelectCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="true">
-                    <CommandText>SELECT DateFinished, JobId, JobResult, JobResultId, Message, Percentage, ResourceId FROM JobResult WHERE (JobResultId = @Id)</CommandText>
+                    <CommandText>SELECT DateFinished, JobId, JobResultId, Message, Percentage, ResourceId FROM JobResult WHERE (JobResultId = @Id)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="Id" ColumnName="JobResultId" DataSourceName="[HeuristicLab.Hive].dbo.JobResult" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@Id" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="JobResultId" SourceColumnNullMapping="false" SourceVersion="Current" />
@@ -693,5 +691,5 @@
                 <SelectCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="true">
-                    <CommandText>SELECT DateFinished, JobId, JobResult, JobResultId, Message, Percentage, ResourceId FROM JobResult WHERE (JobId = @JobId)</CommandText>
+                    <CommandText>SELECT DateFinished, JobId, JobResultId, Message, Percentage, ResourceId FROM JobResult WHERE (JobId = @JobId)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="true" AutogeneratedName="JobId" ColumnName="JobId" DataSourceName="[HeuristicLab.Hive].dbo.JobResult" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@JobId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="JobId" SourceColumnNullMapping="false" SourceVersion="Current" />
@@ -703,5 +701,5 @@
                 <SelectCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="true">
-                    <CommandText>SELECT TOP 1 JobResult.*  FROM JobResult WHERE JobId = @JobId ORDER BY DateFinished DESC </CommandText>
+                    <CommandText>SELECT TOP (1) DateFinished, JobId, JobResultId, Message, Percentage, ResourceId FROM JobResult WHERE (JobId = @JobId) ORDER BY DateFinished DESC</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="true" AutogeneratedName="JobId" ColumnName="JobId" DataSourceName="[HeuristicLab.Hive_DBTesting].dbo.JobResult" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@JobId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="JobId" SourceColumnNullMapping="false" SourceVersion="Current" />
@@ -709,4 +707,25 @@
                   </DbCommand>
                 </SelectCommand>
+              </DbSource>
+              <DbSource ConnectionRef="HiveServerConnectionString (Settings)" DbObjectName="[HeuristicLab.Hive_DBTesting].dbo.JobResult" DbObjectType="Table" GenerateShortCommands="true" GeneratorSourceName="GetSerializedJobResultById" Modifier="Public" Name="GetSerializedJobResultById" QueryType="Scalar" ScalarCallRetval="System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataBy" UserSourceName="GetSerializedJobResultById">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT JobResult FROM JobResult WHERE JobResultId = @Id</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="false" AutogeneratedName="Id" ColumnName="JobResultId" DataSourceName="[HeuristicLab.Hive_DBTesting].dbo.JobResult" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@Id" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="JobResultId" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+              <DbSource ConnectionRef="HiveServerConnectionString (Settings)" DbObjectName="" DbObjectType="Unknown" GenerateShortCommands="true" GeneratorSourceName="UpdateSerializedJobResultById" Modifier="Public" Name="UpdateSerializedJobResultById" QueryType="NoData" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataBy1" UserSourceName="UpdateSerializedJobResultById">
+                <UpdateCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>UPDATE JobResult SET JobResult = @JobResult WHERE JobResultId = @Id</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="true" AutogeneratedName="JobResult" ColumnName="JobResult" DataSourceName="[HeuristicLab.Hive_DBTesting].dbo.JobResult" DataTypeServer="varbinary(MAX)" DbType="Binary" Direction="Input" ParameterName="@JobResult" Precision="0" ProviderType="VarBinary" Scale="0" Size="2147483647" SourceColumn="JobResult" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="false" AutogeneratedName="Id" ColumnName="JobResultId" DataSourceName="[HeuristicLab.Hive_DBTesting].dbo.JobResult" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@Id" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="JobResultId" SourceColumnNullMapping="false" SourceVersion="Original" />
+                    </Parameters>
+                  </DbCommand>
+                </UpdateCommand>
               </DbSource>
             </Sources>
@@ -1133,5 +1152,4 @@
               <xs:element name="JobResultId" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" msprop:Generator_UserColumnName="JobResultId" msprop:Generator_ColumnVarNameInTable="columnJobResultId" msprop:Generator_ColumnPropNameInRow="JobResultId" msprop:Generator_ColumnPropNameInTable="JobResultIdColumn" type="xs:string" />
               <xs:element name="JobId" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" msprop:Generator_UserColumnName="JobId" msprop:Generator_ColumnVarNameInTable="columnJobId" msprop:Generator_ColumnPropNameInRow="JobId" msprop:Generator_ColumnPropNameInTable="JobIdColumn" type="xs:string" minOccurs="0" />
-              <xs:element name="JobResult" msprop:Generator_UserColumnName="JobResult" msprop:Generator_ColumnVarNameInTable="columnJobResult" msprop:Generator_ColumnPropNameInRow="JobResult" msprop:Generator_ColumnPropNameInTable="JobResultColumn" type="xs:base64Binary" minOccurs="0" />
               <xs:element name="Message" msprop:Generator_UserColumnName="Message" msprop:Generator_ColumnVarNameInTable="columnMessage" msprop:Generator_ColumnPropNameInRow="Message" msprop:Generator_ColumnPropNameInTable="MessageColumn" minOccurs="0">
                 <xs:simpleType>
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xss
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xss	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xss	(revision 2099)
@@ -5,5 +5,5 @@
      the code is regenerated.
 </autogenerated>-->
-<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-219" ViewPortY="-12" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
+<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-18" ViewPortY="76" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
   <Shapes>
     <Shape ID="DesignTable:Client" ZOrder="24" X="-36" Y="593" Height="275" Width="229" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="177" />
@@ -12,5 +12,5 @@
     <Shape ID="DesignTable:ClientGroup_Resource" ZOrder="23" X="197" Y="766" Height="156" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="58" />
     <Shape ID="DesignTable:Job" ZOrder="2" X="-466" Y="443" Height="343" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="22" OldDataTableHeight="0" SplitterPosition="228" />
-    <Shape ID="DesignTable:JobResult" ZOrder="1" X="108" Y="76" Height="241" Width="272" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="143" />
+    <Shape ID="DesignTable:JobResult" ZOrder="1" X="108" Y="76" Height="241" Width="288" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="126" />
     <Shape ID="DesignTable:RequiredPlugins" ZOrder="9" X="-699" Y="259" Height="122" Width="243" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="58" />
     <Shape ID="DesignTable:PluginInfo" ZOrder="17" X="-454" Y="797" Height="190" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="22" OldDataTableHeight="0" SplitterPosition="92" />
Index: /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.cs	(revision 2099)
@@ -495,5 +495,5 @@
           IJobManager jobManager =
             ServiceLocator.GetJobManager();
-          ResponseObject<JobResult> jobRes = jobManager.GetLastJobResultOf(currentJob.Id, false);
+          ResponseObject<JobResult> jobRes = jobManager.GetLastJobResultOf(currentJob.Id);
 
           lvi = null;
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientCommunicator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientCommunicator.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientCommunicator.cs	(revision 2099)
@@ -385,5 +385,5 @@
         if (job2Calculate != null) {
           SerializedJob computableJob =
-            jobAdapter.GetComputableJob(job2Calculate.Id);
+            jobAdapter.GetSerializedJob(job2Calculate.Id);
 
           response.Job = computableJob;
@@ -492,21 +492,24 @@
         }
 
-        jobAdapter.UpdateComputableJob(job);
+        jobAdapter.UpdateSerializedJob(job);
 
         List<JobResult> jobResults = new List<JobResult>(
-          jobResultAdapter.GetResultsOf(job.JobInfo));
+          jobResultAdapter.GetResultsOf(job.JobInfo.Id));
         foreach (JobResult currentResult in jobResults)
           jobResultAdapter.Delete(currentResult);
 
-        JobResult jobResult =
-          new JobResult();
+        SerializedJobResult serializedjobResult =
+          new SerializedJobResult();
+        JobResult jobResult = new JobResult();
         jobResult.ClientId = client.Id;
         jobResult.JobId = job.JobInfo.Id;
-        jobResult.Result = result;
         jobResult.Percentage = percentage;
         jobResult.Exception = exception;
         jobResult.DateFinished = DateTime.Now;
-
-        jobResultAdapter.Update(jobResult);
+        serializedjobResult.JobResult = jobResult;
+        serializedjobResult.SerializedJobResultData =
+          result;
+
+        jobResultAdapter.UpdateSerializedJobResult(serializedjobResult);
         jobAdapter.Update(job.JobInfo);
 
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientFacade.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientFacade.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientFacade.cs	(revision 2099)
@@ -97,12 +97,13 @@
       BinaryFormatter formatter =
           new BinaryFormatter();
-      JobResult result = (JobResult)formatter.Deserialize(stream);
+      SerializedJobResult result = 
+        (SerializedJobResult)formatter.Deserialize(stream);
 
       return this.StoreFinishedJobResult(
-          result.ClientId,
-          result.JobId,
-          result.Result,
-          result.Percentage,
-          result.Exception);
+          result.JobResult.ClientId,
+          result.JobResult.JobId,
+          result.SerializedJobResultData,
+          result.JobResult.Percentage,
+          result.JobResult.Exception);
     } 
 
@@ -110,12 +111,12 @@
       BinaryFormatter formatter =
           new BinaryFormatter();
-      JobResult result = (JobResult)formatter.Deserialize(stream);
+      SerializedJobResult result = (SerializedJobResult)formatter.Deserialize(stream);
 
       return this.ProcessSnapshot(
-          result.ClientId,
-          result.JobId,
-          result.Result,
-          result.Percentage,
-          result.Exception);
+          result.JobResult.ClientId,
+          result.JobResult.JobId,
+          result.SerializedJobResultData,
+          result.JobResult.Percentage,
+          result.JobResult.Exception);
     }
 
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ExecutionEngineFacade.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ExecutionEngineFacade.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ExecutionEngineFacade.cs	(revision 2099)
@@ -44,6 +44,7 @@
     }
 
-    public ResponseObject<JobResult> GetLastResult(Guid jobId, bool requested) {
-      return jobManager.GetLastJobResultOf(jobId, requested);
+    public ResponseObject<SerializedJobResult> 
+      GetLastSerializedResult(Guid jobId, bool requested) {
+      return jobManager.GetLastSerializedJobResultOf(jobId, requested);
     }
 
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/JobManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/JobManager.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/JobManager.cs	(revision 2099)
@@ -48,5 +48,5 @@
     }
 
-    private JobResult GetLastJobResult(Job job) {
+    private JobResult GetLastJobResult(Guid jobId) {
       ISession session = factory.GetSessionForCurrentThread();
 
@@ -55,5 +55,5 @@
             session.GetDataAdapter<JobResult, IJobResultsAdapter>();
 
-        return jobResultAdapter.GetLastResultOf(job);
+        return jobResultAdapter.GetLastResultOf(jobId);
       }
       finally {
@@ -70,4 +70,7 @@
         IJobAdapter jobAdapter =
             session.GetDataAdapter<Job, IJobAdapter>();
+
+        IJobResultsAdapter jobResultsAdapter =
+          session.GetDataAdapter<JobResult, IJobResultsAdapter>();
 
         tx = session.BeginTransaction();
@@ -79,10 +82,19 @@
             job;
 
-          JobResult lastJobResult = GetLastJobResult(job);
-          if (lastJobResult != null) {
-            computableJob.JobInfo.Percentage = lastJobResult.Percentage;
-            computableJob.SerializedJobData = lastJobResult.Result;
-
-            jobAdapter.UpdateComputableJob(computableJob);
+          JobResult lastResult = 
+            GetLastJobResult(job.Id);
+
+          if (lastResult != null) {
+            SerializedJobResult lastJobResult =
+              jobResultsAdapter.GetSerializedJobResult(lastResult.Id);
+
+            if (lastJobResult != null) {
+              computableJob.JobInfo.Percentage = lastJobResult.JobResult.Percentage;
+              computableJob.SerializedJobData = lastJobResult.SerializedJobResultData;
+
+              jobAdapter.UpdateSerializedJob(computableJob);
+            } else {
+              computableJob.JobInfo.Percentage = 0;
+            }
           } else {
             computableJob.JobInfo.Percentage = 0;
@@ -223,5 +235,5 @@
 
           job.JobInfo.DateCreated = DateTime.Now;
-          jobAdapter.UpdateComputableJob(job);
+          jobAdapter.UpdateSerializedJob(job);
           response.Success = true;
           response.Obj = job.JobInfo;
@@ -271,6 +283,21 @@
     }
 
-    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId, bool requested) {
-      ISession session = factory.GetSessionForCurrentThread();
+    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId) {
+       ResponseObject<JobResult> result = 
+        new ResponseObject<JobResult>();
+
+       result.Obj =
+         GetLastJobResult(jobId);
+       result.Success =
+         result.Obj != null;
+
+       return result;
+    }
+
+    public ResponseObject<SerializedJobResult>
+      GetLastSerializedJobResultOf(Guid jobId, bool requested) {
+      ISession session = factory.GetSessionForCurrentThread();
+
+      ITransaction tx = null;
 
       try {
@@ -278,5 +305,11 @@
             session.GetDataAdapter<Job, IJobAdapter>();
 
-        ResponseObject<JobResult> response = new ResponseObject<JobResult>();
+        IJobResultsAdapter jobResultsAdapter =
+          session.GetDataAdapter<JobResult, IJobResultsAdapter>();
+
+        tx = session.BeginTransaction();
+
+        ResponseObject<SerializedJobResult> response =
+          new ResponseObject<SerializedJobResult>();
 
         Job job = jobAdapter.GetById(jobId);
@@ -284,18 +317,37 @@
           response.Success = true;
           response.StatusMessage = ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE;
+
+          tx.Commit();
+          
           return response;
         }
-          
-        response.Success = true;
-        response.StatusMessage = ApplicationConstants.RESPONSE_JOB_JOB_RESULT_SENT;
-        response.Obj = GetLastJobResult(job);
-
-        return response;
-      }
-      finally {
-        if(session != null)
-          session.EndSession();
-      }
-    }
+
+        JobResult lastResult =
+          jobResultsAdapter.GetLastResultOf(job.Id);
+
+        if (lastResult != null) {
+          response.Success = true;
+          response.StatusMessage = ApplicationConstants.RESPONSE_JOB_JOB_RESULT_SENT;
+          response.Obj =
+            jobResultsAdapter.GetSerializedJobResult(
+              lastResult.Id);          
+        } else {
+          response.Success = false;
+        }
+
+        tx.Commit();
+        return response;
+      }
+      catch (Exception ex) {
+        if (tx != null)
+          tx.Rollback();
+        throw ex;
+      }
+      finally {
+        if (session != null)
+          session.EndSession();
+      }
+    }
+
 
     public Response RequestSnapshot(Guid jobId) {
@@ -385,5 +437,5 @@
           return response;
         }
-        response.List = new List<JobResult>(jobResultAdapter.GetResultsOf(job));
+        response.List = new List<JobResult>(jobResultAdapter.GetResultsOf(job.Id));
         response.Success = true;
         response.StatusMessage = ApplicationConstants.RESPONSE_JOB_JOB_RESULT_SENT;
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ServerConsoleFacade.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ServerConsoleFacade.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ServerConsoleFacade.cs	(revision 2099)
@@ -104,7 +104,12 @@
     }
 
-    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId, bool requested) {
+    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId) {
       secMan.Authorize("AccessJobResults", sessionID, jobId);
-      return jobManager.GetLastJobResultOf(jobId, requested);
+      return jobManager.GetLastJobResultOf(jobId);
+    }
+
+    public ResponseObject<SerializedJobResult> GetLastSerializedJobResultOf(Guid jobId, bool requested) {
+      secMan.Authorize("AccessJobResults", sessionID, jobId);
+      return jobManager.GetLastSerializedJobResultOf(jobId, requested);
     }
 
Index: /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IExecutableJobAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IExecutableJobAdapter.cs	(revision 2099)
+++ /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IExecutableJobAdapter.cs	(revision 2099)
@@ -0,0 +1,43 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Hive.Server.DataAccess {
+  public interface IExecutableJobAdapter: IDataAdapter<ExecutableJob> {
+    /// <summary>
+    /// Finds a job with the specified criterias 
+    /// </summary>
+    /// <param name="state">all jobs with the specified state</param>
+    /// <param name="cores">all jobs which require less or equal cores</param>
+    /// <param name="memory">all jobs which require less or equal memory</param>
+    /// <param name="resourceId">all jobs that can be calculated by that resource</param>
+    /// <returns></returns>
+    ICollection<ExecutableJob> FindJobs(State state,
+      int cores,
+      int memory,
+      Guid resourceId);
+  }
+}
Index: /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IJobAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IJobAdapter.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IJobAdapter.cs	(revision 2099)
@@ -86,5 +86,5 @@
     /// <param name="jobId"></param>
     /// <returns></returns>
-    SerializedJob GetComputableJob(Guid jobId);
+    SerializedJob GetSerializedJob(Guid jobId);
 
     /// <summary>
@@ -92,5 +92,5 @@
     /// </summary>
     /// <param name="jobId"></param>
-    void UpdateComputableJob(SerializedJob job);
+    void UpdateSerializedJob(SerializedJob job);
   }
 }
Index: /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IJobResultsAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IJobResultsAdapter.cs	(revision 2098)
+++ /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IJobResultsAdapter.cs	(revision 2099)
@@ -33,5 +33,5 @@
     /// <param name="job"></param>
     /// <returns></returns>
-    ICollection<JobResult> GetResultsOf(Job job);
+    ICollection<JobResult> GetResultsOf(Guid jobId);
 
     /// <summary>
@@ -40,5 +40,18 @@
     /// <param name="job"></param>
     /// <returns></returns>
-    JobResult GetLastResultOf(Job job);
+    JobResult GetLastResultOf(Guid jobId);
+
+    /// <summary>
+    /// Gets the computable job result with the secified jobResultId
+    /// </summary>
+    /// <param name="jobId"></param>
+    /// <returns></returns>
+    SerializedJobResult GetSerializedJobResult(Guid jobResultId);
+
+    /// <summary>
+    /// Saves or update the computable job result
+    /// </summary>
+    /// <param name="jobId"></param>
+    void UpdateSerializedJobResult(SerializedJobResult jobResult);
   }
 }
