I am trying to change the data source from an FGDB to an SDE feature class. I can get this to work for an SDE feature class that is not within a feature dataset. For the life of me, I cannot get this to work for a feature class within a feature dataset. The script fails on line 15.
The error message:
ValueError: Layer: Unexpected error
I believe I am not correctly specifying the workspath_path or dataset_name correctly. The destination dataSource =
Database Connections\sdetest.sde\PIPELINE.BAKKEN\PIPELINE.Pipe
SDE Connection: Database Connections\sdetest.sde
Dataset: PIPELINE.BAKKEN
Feature Class: PIPELINE.Pipe
Any help would be appreciated!
import arcpy import os mxd = arcpy.mapping.MapDocument('CURRENT') ListLayers = arcpy.mapping.ListLayers(mxd) workspace_path = "Database Connections\sdetest.sde" dataset_name = "PIPELINE.BAKKEN\PIPELINE.Pipe" # dataset_name = "BAKKEN\PIPELINE.Pipe" # dataset_name = "PIPELINE.BAKKEN.PIPELINE.Pipe" # Source: Database Connections\sdetest.sde\PIPELINE.BAKKEN\PIPELINE.Pipe for Layer in ListLayers: if Layer.supports("DATASOURCE"): desc = arcpy.Describe(Layer) if desc.catalogPath == "\\\\ftwnas01a\\ProjectsNew\\NatGasOps\\NGOData\\Assets\\Bakken.gdb\\Bakken\\Pipe": Layer.replaceDataSource(workspace_path, "SDE_WORKSPACE", dataset_name)
Have you tried using the find and replace data Source feature in ArcCatalog?
If in 10.3 Updating and fixing data sources—ArcPy | ArcGIS for Professionals
I'm working on updating data sources with arcpy myself right, not just FGDB/SDE, so I'm looking at all of it too. Looks like they recommend updating/replacing the database connection file. #4 on that help page
import arcpy aprx = arcpy.mp.ArcGISProject(r'C:\Projects\YosemiteNP\Yosemite.aprx') aprx.updateConnectionProperties(r'C:\Projects\YosemiteNP\Vector_Data\Yosemite.gdb', r'C:\Projects\YosemiteNP\DBConnections\Server.sde') aprx.save() del aprx
I'm not sure if that will work for you or not, but might be worth checking.
Thanks Blake. I am really trying to automate this through scripting. We are converting over 100 FGDB feature classes to SDE, which will affect well over 100 ArcMap projects. If I can't figure this out, then yes, that will probably be how we update our mxds.