I just ran the test below to see if I could reproduce your problem in either a file geodatabase or a personal geodatabase using ArcGIS 10.2 for Desktop. Each generates a 3x3 fishnet, then assigns values of 0 and 2 to the DissField (small integer) for 3 polygons each, leaving the last three as null. A Dissolve in either geodatabase type produced the expected result of 3 multi-part polygons.
If you get the same running this test, then it suggests you may need to look more closely at your data to try and figure what may be the key difference(s) in it from the test data I generated to work with here.
arcpy.CreateFileGDB_management("C:/temp","test","CURRENT")
arcpy.CreateFishnet_management("C:/temp/test.gdb/testFishnet","0 0","0 1","1","1","3","3","#","NO_LABELS","#","POLYGON")
arcpy.AddField_management("C:/temp/test.gdb/testFishnet","DissField","SHORT","#","#","#","#","NULLABLE","NON_REQUIRED","#")
with arcpy.da.UpdateCursor("C:/temp/test.gdb/testFishnet",["OID","DissField"]) as cursor:
for feature in cursor:
if feature[0] < 4:
feature[1] = 2
elif feature[0] > 6:
feature[1] = 0
else:
pass
cursor.updateRow(feature)
arcpy.Dissolve_management("C:/temp/test.gdb/testFishnet","C:/temp/test.gdb/testDissolve","DissField","#","MULTI_PART","DISSOLVE_LINES")
numFeatures = int(arcpy.GetCount_management("C:/temp/test.gdb/testDissolve").getOutput(0))
print "Dissolve in file geodatabase resulted in " + str(numFeatures) + " features as expected"
arcpy.CreatePersonalGDB_management("C:/temp","test","CURRENT")
arcpy.CreateFishnet_management("C:/temp/test.mdb/testFishnet","0 0","0 1","1","1","3","3","#","NO_LABELS","#","POLYGON")
arcpy.AddField_management("C:/temp/test.mdb/testFishnet","DissField","SHORT","#","#","#","#","NULLABLE","NON_REQUIRED","#")
with arcpy.da.UpdateCursor("C:/temp/test.mdb/testFishnet",["OID","DissField"]) as cursor:
for feature in cursor:
if feature[0] < 4:
feature[1] = 2
elif feature[0] > 6:
feature[1] = 0
else:
pass
cursor.updateRow(feature)
arcpy.Dissolve_management("C:/temp/test.mdb/testFishnet","C:/temp/test.mdb/testDissolve","DissField","#","MULTI_PART","DISSOLVE_LINES")
numFeatures = int(arcpy.GetCount_management("C:/temp/test.mdb/testDissolve").getOutput(0))
print "Dissolve in personal geodatabase resulted in " + str(numFeatures) + " features as expected"