Eine Service-Definition (.sd) kapselt einen Service, optional einschließlich GIS-Quelldaten, in nur eine übertragbare Datei. Das Geoverarbeitungswerkzeug Service-Definition hochladen lädt eine Service-Definition auf die ArcGIS Server-Site hoch und veröffentlicht sie. Sie können das Werkzeug über das ArcPy-Site-Paket aufrufen, das im Lieferumfang von ArcGIS Server enthalten ist.
Mit dem folgenden Python-Beispiel wird ein angegebener Ordner auf dem Microsoft Windows-Computer durchlaufen, nach den im Ordner enthaltenen Service-Definitionen gesucht (ohne Unterordner), und diese werden dann auf der eigenständigen ArcGIS Server-Site veröffentlicht, die mit der Verbindungsdatei (.ags) angegeben wurde.
Zum Ausführen des Werkzeugs wird ein lokaler Dateispeicherort, der die Service-Definitionsdateien enthält, der Pfad zur ArcGIS Server-Verbindungsdatei und der Name des Zielordners auf der ArcGIS Server-Site benötigt.
# Publishes all service definitions in an operating system directory
# (excluding subfolders). Services are published but not started.
# Import required modules
import arcpy
import os
# Define path to SD files on local machine
sdDir = "C:/data/sd_files"
# Provide path to ArcGIS Server connection file
con = "C:/projects/publishing_project/arcgis on myserver_6443.ags"
# Destination folder name on ArcGIS Server
serverFolder = "ScriptPublish"
# Loop through all items in local directory
sdList = os.listdir(sdDir)
for sd in sdList:
# Construct path to item
extension = os.path.splitext(sd)[1] # Get file extension
sdPath = os.path.join(sdDir, sd)
# Check if item is an SD file and, if so, try to publish
if os.path.isfile(sdPath) and extension == ".sd":
try:
arcpy.UploadServiceDefinition_server(sdPath, con, "", "", "EXISTING", serverFolder, "STOPPED")
print("Published " + sd + " with no errors reported.")
except:
print("Could not complete publishing operation for " + sd + ".")
print(arcpy.GetMessages())