Azure LogicApp не может получить rowid от SQL Server - PullRequest
0 голосов
/ 31 октября 2019

У меня есть Azica Logicapp, который подключается к базе данных SQL Server в Azure. Таблица имеет столбец uniqueidentifier в качестве первичного ключа. В приложении логики для удаления или обновления требуется rowid, чтобы выполнить обновление, первичный ключ здесь не работает и выдает ошибку при запуске, утверждая, что таблица не имеет первичного ключа. Это происходит, и это дополнительно подтверждается при вставке строки дважды в logicapp, который знает об ограничении первичного ключа, будучи уникальным.

Если I Get Rows и выполнить фильтрацию по столбцу первичного ключа, результирующий массив перечисляет каждый найденный элемент (очевидно, один), но не делает rowid в качестве динамического выражения.

Как можно получить rowid? Можно ли обновить строку, используя только первичный ключ?

ОБНОВЛЕНИЕ:

uuid генерируется вне logicapp и передается ему в виде строки. Следует отметить, что вставка работает просто отлично.

Здесь logicapp требует спецификатор rowid, но использование uuid не удается. Тогда я подумал, что вместо этого смогу отфильтровать все строки по uuid и обновить их, как обходной путь, но я не смог получить rowid. У другого человека была похожая проблема (https://stackoverflow.com/a/43516709/1298523)), и он не мог получить rowid без редактирования исходного кода; однако этот метод добавления rowid в раздел body кода больше не работает, так какпусто. enter image description here Ошибка logicapp, которую я получаю во время update или delete при использовании uuid:

{ "status": 400, "message": "Execution Failure\r\n inner exception: The specified table has no primary key. Update and delete operations are not supported.\r\nclientRequestId: 555", "source": "sql-555.p.azurewebsites.net" }

С учетом сказанногоinsert идет хорошо, и uuid, который я передаю, помещается в таблицу.

Вставьте результат: enter image description here

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Я понял, я фактически удалил весь logicapp и перестроил его, и теперь он распознает, что столбец uuid - это PK. Я считаю, что когда приложение впервые подключается к SQL, оно сохраняет схему и никогда не обновляется впоследствии. Я несколько раз перестраивал соединение, но единственное, что заставило его обновиться, - это перестроил сам logicapp. Я немного убежден, что это ошибка, поэтому я оставляю здесь в качестве ответа на случай, если кто-нибудь когда-нибудь придет к этой проблеме в будущем

0 голосов
/ 31 октября 2019

Если у вас есть столбец по умолчанию (например, NEWID ()) в первичном ключе, удалите его.

Создайте uniqueidentifier непосредственно в приложении логики и просто вставьте его, как и любой другой столбец, в таблицу в базе данных SQL Azure. Если вы сделаете это, у вас уже есть значение GUID, которое вы затем сможете использовать позже в том же коде приложения.

Если это не проблема, я думаю, что вам нужно дать нам код для чтения, чтобы мы могли помочьбольше.

...