mxd = arcpy.mapping.MapDocument(fullpath)
                        
                            DFList = arcpy.mapping.ListDataFrames(mxd)
                    
                            for df in DFList:
                                lyrList = arcpy.mapping.ListLayers(mxd, "", df)
                    
                                for lyr in lyrList:
                                    if lyr.supports("DATASOURCE"):
                                        
                                        sourcePath = os.path.dirname(lyr.dataSource)
                                        
                                        if lyr.dataSource.count(".sde") > 0:
                                           mxd.findAndReplaceWorkspacePaths(sourcePath,
                                           r"Database Connections\Test_CartaTest_GISUSER.sde\CartaTest.TRANS.BikeFeatures") #change to Carta instead of CartaTest when done
                    import arcpy mxd = arcpy.mapping.MapDocument(r"C:\temp\sde_test.mxd") mxd.findAndReplaceWorkspacePaths(r"Database Connections\Connection to Oracle.sde", r"Database Connections\Connection to SQL Server.sde") mxd.saveACopy(r"C:\temp\migrate_server.mxd") del mxd print "done"
I tried to change a layer's dataSource in a gdb, and to different feature class dataset in another gdb.
It took long time that I grasped replaceDataSource needs only gdb path.
Any dataset name is not necessary.
(ex)
if you want to change " fc1 in a.gdb\datasetA " to " fc2 in b.gdb\datasetB "
C:\a.gdb\datasetA\fc1 -> C:\b.gdb\datasetB\fc2
you need to prepare 3 informations :
      1. where to change : "C:\b.gdb"   
 dataset name is not necessary !!
2. type of workspace: "FILEGDB_WORKSPACE"
      3. name of datasource : "datasetB" 
 if this is RASTER, it needs an extension of the file(RASTER_WORKSPACE), but is SHAPEFILE(SHAPEFILE_WORKSPACE), it dont need an extention.
then, they apply to the function:
lyr.reaplceDataSource( 1 , 2 , 3 )
It may not be an answer you needs.
I hope that it will be helpful for you.
references:
3 [2] python - Arcpy's replaceDataSource Error - Geographic Information Systems Stack Exchange
import arcpy
from time import gmtime, strftime
Oracle = r"Database Connections\Connection to tempest map.sde"
SQLServer = r"Database Connections\Connection to betty4.sde"
mxd = arcpy.mapping.MapDocument(r"C:\temp\analysts\forum\sde\Oracle_map.mxd")
# examine the input data source - just looking at the first layer
lyr = arcpy.mapping.ListLayers(mxd)[0]
print "Input data source:", lyr.dataSource
mxd.findAndReplaceWorkspacePaths(Oracle, SQLServer)
mxd.saveACopy(r"C:\temp\analysts\forum\sde\SQLServer_map.mxd")
del mxd, lyr
#examine the output data source - just looking at the first layer
mxd2 = arcpy.mapping.MapDocument(r"C:\temp\analysts\forum\sde\SQLServer_map.mxd")
lyr2 = arcpy.mapping.ListLayers(mxd2)[0]
print "Output data source:", lyr2.dataSource
del mxd2, lyr2
print "Completed at", strftime("%Y-%m-%d %H:%M:%S", gmtime())
print "========================================"import arcpy
from time import gmtime, strftime
SQLServer = r"Database Connections\Connection to betty4.sde"
mxd = arcpy.mapping.MapDocument(r"C:\temp\analysts\forum\sde\Oracle_cat.mxd")
lyrs = arcpy.mapping.ListLayers(mxd)
for lyr in lyrs:
    #examine the input data sources
    print "Input data source:", lyr.dataSource
    lyr.replaceDataSource(SQLServer, "SDE_WORKSPACE", lyr.datasetName, True)
mxd.saveACopy(r"C:\temp\analysts\forum\sde\SQLServer_map.mxd")
del mxd, lyr
#examine the output data source - just looking at the first layer
mxd2 = arcpy.mapping.MapDocument(r"C:\temp\analysts\forum\sde\SQLServer_map.mxd")
lyr2 = arcpy.mapping.ListLayers(mxd2)[0]
print "Output data source:", lyr2.dataSource
del mxd2, lyr2
print "Completed at", strftime("%Y-%m-%d %H:%M:%S", gmtime())
print "========================================"