2016-05-15 16 views
0

Wie kann ich eine Logikanwendung bereitstellen, die eine gespeicherte SQL DB-Prozedur aufruft? Ich habe die folgende Aktion ausprobiert.Bereitstellen einer Logikanwendung mithilfe von ARM-Templates/Powershell

"actions": { 
      "Execute_stored_procedure": { 
       "conditions": [ ], 
       "inputs": { 
       "body": null, 
       "host": { 
        "api": { 
        "runtimeUrl": "https://logic-apis-northcentralus.azure-apim.net/apim/sql" 
        }, 
        "connection": { 
        "name": "<sql connection string>" 
        } 
       }, 
       "method": "post", 
       "path": "/datasets/default/procedures/@{encodeURIComponent(encodeURIComponent(string('<stored-procedure-name>')))}" 
       }, 
       "type": "apiconnection" 
      } 
      } 

Wenn ich diese Vorlage bereitstellen, erstellt die Logik App gets aber es Fehler oder die SQL-Verbindung Aktion werfen zeigt nicht auf der Entwurfsansicht auf. Was mache ich hier falsch? Ist Logic App zum Aufruf von SQL Stored Proc derzeit von arm unterstützt?

+0

Ist Ihre ARM-Vorlage mit den Schritten zum Erstellen der Verbindung auch? – TusharJ

+0

Momentan nicht. Ich konnte keine Dokumentation über die Vorlage zum Erstellen einer SQL API-Verbindung finden. – harryjohn

Antwort

0

ich dies schließlich dachte ich von @TusharJ Links und ich bin Entsendung der Vorlage ich verwendet habe, unten, um eine LogicApp zu konfigurieren, die eine gespeicherte SQL DB-Prozedur in bestimmten Intervallen aufruft.

resources: 
[ 
    { 
    "type": "Microsoft.Web/connections", 
    "apiVersion": "2015-08-01-preview", 
    "location": "[resourceGroup().location]", 
    "name": "sqlconnector", 
    "properties": { 
     "api": { 
     "id": "[concat('subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/sql')]" 
     }, 
     "displayName": "sqlconnector", 
     "parameterValues": { 
     "sqlConnectionString": "<sql db connection string>" 
     } 
    } 
    }, 
    { 
    "type": "Microsoft.Logic/workflows", 
    "apiVersion": "2015-08-01-preview", 
    "name": "[parameters('logicAppName')]", 
    "location": "[resourceGroup().location]", 
    "tags": { 
     "displayName": "LogicApp" 
    }, 
    "properties": { 
     "sku": { 
     "name": "[parameters('workflowSkuName')]", 
     "plan": { 
      "id": "[concat(resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('svcPlanName'))]" 
     } 
     }, 
     "definition": { 
     "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2015-08-01-preview/workflowdefinition.json#", 
     "contentVersion": "1.0.0.0", 
     "parameters": { 
      "$connections": { 
      "defaultValue": { }, 
      "type": "Object" 
      } 
     }, 
     "triggers": { 
      "recurrence": { 
      "type": "recurrence", 
      "recurrence": { 
       "frequency": "Hour", 
       "interval": 1 
      } 
      } 
     }, 
     "actions": { 
      "Execute_stored_procedure": { 
      "conditions": [ ], 
      "inputs": { 
       "body": null, 
       "host": { 
       "api": { 
        "runtimeUrl": "[concat('https://logic-apis-', resourceGroup().location, '.azure-apim.net/apim/sql')]" 
       }, 
       "connection": { 
        "name": "@parameters('$connections')['sql']['connectionId']" 
       } 
       }, 
       "method": "post", 
       "path": "/datasets/default/procedures/@{encodeURIComponent(encodeURIComponent(string('[dbo].[<Stored Proc Name>]')))}" 
      }, 
      "type": "apiconnection" 
      } 
     }, 
     "outputs": { } 
     }, 
     "parameters": { 
     "$connections": { 
      "value": { 
      "sql": { 
       "connectionId": "[resourceId('Microsoft.Web/connections', 'sqlconnector')]", 
       "connectionName": "sqlconnector", 
       "id": "[reference(concat('Microsoft.Web/connections/', 'sqlconnector'), '2015-08-01-preview').api.id]" 
      } 
      } 
     } 
     } 
    } 
    } 
] 
+0

Vielen Dank Harry für das Teilen. – TusharJ

1

Möglicherweise hat sich die API seit der letzten Antwort geändert. Hier ist, was ab 10/2016 für mich funktionierte. Hinweis: Ich verwendete Parameter (Definitionen nicht gezeigt) für viele der Variablen:

{ 
    "type": "Microsoft.Web/connections", 
    "apiVersion": "2015-08-01-preview", 
    "location": "[parameters('location')]", 
    "name": "[variables('sql_conn_name')]", 
    "properties": { 
    "api": { 
     "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/sql')]" 
    }, 
    "displayName": "sql_connection", 
    "parameterValues": { 
     "server": "[concat(variables('dbserver_unique_name'), '.database.windows.net')]", 
     "database": "[parameters('databases_name')]", 
     "authType": "windows", 
     "username": "[parameters('databases_admin_user')]", 
     "password": "[parameters('databases_admin_password')]" 
    } 
    } 
}, 
{ 
    "type": "Microsoft.Logic/workflows", 
    "name": "[variables('logic_app_name')]", 
    "apiVersion": "2016-06-01", 
    "location": "[parameters('location')]", 
    "properties": { 
    "state": "Enabled", 
    "definition": { 
     "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", 
     "contentVersion": "1.0.0.0", 
     "parameters": { 
     "$connections": { 
      "defaultValue": { }, 
      "type": "Object" 
     } 
     }, 
     "triggers": { 
     "Recurrence": { 
      "recurrence": { 
      "frequency": "Hour", 
      "interval": 1 
      }, 
      "type": "Recurrence" 
     } 
     }, 
     "actions": { 
     "Execute_stored_procedure": { 
      "runAfter": { }, 
      "type": "ApiConnection", 
      "inputs": { 
      "body": { 
       "timeoffset": "-4" 
      }, 
      "host": { 
       "api": { 
       "runtimeUrl": "[concat('https://logic-apis-', parameters('location'), '.azure-apim.net/apim/sql')]" 
       }, 
       "connection": { 
       "name": "@parameters('$connections')['sql']['connectionId']" 
       } 
      }, 
      "method": "post", 
      "path": "/datasets/default/procedures/@{encodeURIComponent(encodeURIComponent('[dbo].[usp_UpdateHourlyOos]'))}" 
      } 
     } 
     }, 
     "outputs": { } 
    }, 
    "parameters": { 
     "$connections": { 
     "value": { 
      "sql": { 
      "connectionId": "[concat(subscription().id, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/connections/', variables('sql_conn_name'))]", 
      "connectionName": "[variables('sql_conn_name')]", 
      "id": "[concat(subscription().id,'/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/sql')]" 
      } 
     } 
     } 
    } 
    }, 
    "resources": [ ], 
    "dependsOn": [ 
    "[resourceId('Microsoft.Web/connections', variables('sql_conn_name'))]" 
    ] 
} 
+0

Sieht so aus, als ob die in Ihrer Vorlage verwendete API-Version die letzte ist ('2016-06-01') und die vorher verwendete ('2015-08-01-Vorschau') war immer noch die Vorschau. – harryjohn