【发布时间】:2019-06-10 19:30:40
【问题描述】:
我无法为“从 DacPac 创建新数据库”操作创建事件网格订阅。
我已尝试为包含我的 SQL Server 的资源组创建事件网格订阅。我已经为资源组启用了所有事件发送,并注册了一个 webhook 来发送资源组上的事件。我已经测试了事件网格订阅,它正在为 ResourceWriteSuccess、ResourceDeleteSuccess 等发送 webhook。所以我知道我的应用程序和 Azure 之间的实现运行正常。
这是我尝试为其创建事件网格订阅的事件的有效负载。
{
"authorization": {
"action": "Microsoft.Sql/servers/import/action",
"scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.Sql/servers/my-sql-server"
},
"caller": "00000000-0000-0000-0000-000000000000",
"channels": "Operation",
"claims": {
"aud": "https://management.azure.com/",
"iss": "https://sts.windows.net/00000000-0000-0000-0000-000000000000/",
"iat": "1560193452",
"nbf": "1560193452",
"exp": "1560197352",
"aio": "82WgYJi2DHbwKEodlmt4/lNKdx2cDQA=",
"appid": "00000000-0000-0000-0000-000000000000",
"appidacr": "1",
"http://schemas.microsoft.com/identity/claims/identityprovider": "https://sts.windows.net/00000000-0000-0000-0000-000000000000/",
"http://schemas.microsoft.com/identity/claims/objectidentifier": "00000000-0000-0000-0000-000000000000",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier": "00000000-0000-0000-0000-000000000000",
"http://schemas.microsoft.com/identity/claims/tenantid": "00000000-0000-0000-0000-000000000000",
"uti": "OzdZ2AA_HkCWRjLQ0E9hAQ",
"ver": "1.0"
},
"correlationId": "00000000-0000-0000-0000-000000000000",
"description": "",
"eventDataId": "00000000-0000-0000-0000-000000000000",
"eventName": {
"value": "EndRequest",
"localizedValue": "End request"
},
"category": {
"value": "Administrative",
"localizedValue": "Administrative"
},
"eventTimestamp": "2019-06-10T19:09:14.4117972Z",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.Sql/servers/my-sql-server/events/00000000-0000-0000-0000-000000000000/ticks/636957905544117972",
"level": "Informational",
"operationId": "5b1a45c6-297c-4c1e-81c5-31a10375a9e0",
"operationName": {
"value": "Microsoft.Sql/servers/import/action",
"localizedValue": "Create new database from DacPac"
},
"resourceGroupName": "my-resource-group",
"resourceProviderName": {
"value": "Microsoft.Sql",
"localizedValue": "Microsoft SQL"
},
"resourceType": {
"value": "Microsoft.Sql/servers",
"localizedValue": "Microsoft.Sql/servers"
},
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.Sql/servers/my-sql-server",
"status": {
"value": "Accepted",
"localizedValue": "Accepted"
},
"subStatus": {
"value": "Accepted",
"localizedValue": "Accepted (HTTP Status Code: 202)"
},
"submissionTimestamp": "2019-06-10T19:10:57.1665135Z",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"properties": {
"statusCode": "Accepted",
"serviceRequestId": "00000000-0000-0000-0000-000000000000"
},
"relatedEvents": []
}
我希望为启用所有事件的资源组创建事件网格订阅会为上面显示的事件发送 webhook;但是,我没有收到任何表明此操作已成功执行的 webhook。
【问题讨论】:
-
用于测试目的。使用门户 UI 将您的测试数据库导出/导入存储容器。您应该在订阅者中看到多个事件类型,例如:Microsoft.Resources.ResourceActionSuccess 和 Microsoft.Resources.ResourceWriteSuccess。
-
是的,我在通过门户导入时确实收到了这些事件;但是,当我通过 Azure API 进行导入时,我没有收到这些事件。在我的应用程序中,我们通过允许现有客户上传数据库备份来自动化他们的入职,我需要一个事件来了解导入何时完成。
-
如何从应用程序中导入数据库,是否使用 REST API 调用?
-
是的,我进行了 API 调用,效果很好。导入工作,并创建了我的数据库。以这种方式调用时,Azure 根本不会触发资源操作的事件。
-
没错,我已经测试了导出、创建数据库(空)、删除数据库和我的 AEG 订阅者接收所有事件。但是对于 Import,没有事件。根据文档docs.microsoft.com/en-us/rest/api/sql/…,导入操作必须在现有的空数据库中完成,因此我在导入之前创建了一个空数据库(可能与 azure 门户使用相同的方式),然后我收到了所有事件.
标签: azure azure-sql-database azure-eventgrid