1

我想创建一个 SQL 连接并将数据从应用程序(Shoutouts 模板)导入 SQL 数据库。我创建了一个 SQL 连接并尝试在其中导入数据,但出现此错误。

CreatedOnDateTime:指定列是服务器生成的,不能指定

我确实CreatedOnDateTime创建了列,但我猜它的数据类型不一样或其他东西。

在哪里可以查看通过 SQL 连接从 PowerApps 将哪些字段和数据类型导入 PowerApps 中的 SQL 表?

谢谢您的帮助!

4

1 回答 1

0

总的来说,在 PowerApps 中找出数据源的结构并不容易(请为此在PowerApps Ideas 板中创建一个新功能请求)。但是,有一种复杂的方法可以找到它,我将在这里介绍。

但对于您的具体问题,这是与 PowerApps 中数据源架构匹配的 SQL 表架构:

CREATE TABLE PowerAppsTest.StackOverflow51847975 (
    PrimaryID BIGINT PRIMARY KEY,
    [Id] NVARCHAR(MAX),
    [Message] NVARCHAR(MAX),
    CreatedOnDateTime NVARCHAR(MAX),
    CreatorEmail NVARCHAR(MAX),
    CreatorName NVARCHAR(MAX),
    RecipientEmail NVARCHAR(MAX),
    RecipientName NVARCHAR(MAX),
    ShoutoutType NVARCHAR(MAX),
    [Image] IMAGE
)

现在对于一般情况。您已被警告说这很复杂,因此请自行承担风险:)

首先,将应用程序本地保存到您的计算机: 保存到本地计算机

该应用程序将使用 .msapp 扩展名保存,但它基本上是一个 .zip 文件。如果您使用的是 Windows,您可以将其重命名以将扩展名更改为 .zip,您将能够解压缩并提取描述该应用程序的文件。

其中一个文件 Entities.json 包含应用程序中使用的所有数据源的架构定义等。该文件是一个巨大的 JSON 文件,它的所有空格都已删除,因此您可能需要使用一些在线工具来格式化(或美化)JSON 以便于阅读。完成此操作后,您可以在您喜欢的文本编辑器中打开文件(比记事本更好的任何东西都应该能够处理它)。

打开文件后,在 JSON 根目录中搜索具有“名称”属性且值等于数据源名称的条目。比如在shoutouts应用案例中,数据源叫做“Shoutout”,所以搜索

"Name": "Shoutout"

如果在打开 JSON 文件之前没有漂亮地打印它,则必须删除空格。这应该是一个描述数据源的对象,并且它有一个名为的属性DataEntityMetadataJson,该属性具有数据源模式,格式为 JSON 字符串。同样在 Shoutouts 示例中,这是值:

"{\"name\":\"Shoutout\",\"title\":\"Shoutout\",\"x-ms-permission\":\"read-write\",\"schema\":{\"type\":\"array\",\"items\":{...

请注意,它又不是漂亮的印刷品。您首先需要对该字符串进行解码,然后再次对其进行漂亮打印,最终您将得到如下结果:

{
  "name": "Shoutout",
  "title": "Shoutout",
  "x-ms-permission": "read-write",
  "schema": {
    "type": "array",
    "items": {
      "type": "object",
      "properties": {
        "PrimaryID": {
          "type": "number",
          "format": "double",
          ...
        },
        "Message": {
          "type": "string",
          ...
        },
        "Image": {
          "type": "string",
          "format": "uri",
          "x-ms-media-kind": "image",
          ...
        },
        "Id": {
          "type": "string",
          ...
        },
        "CreatedOnDateTime": {
          "type": "string",
          ...
        },
    ...

这是数据源的架构。从此我在 SQL 中重新创建了模式,从应用程序中删除了对 Shoutout 数据源的引用(这导致了许多错误),然后添加了对我的 SQL 表的引用,并且由于它具有不同的名称,所以去寻找所有的地方应用程序中有错误来修复这些错误。

希望这可以帮助!

于 2018-08-21T04:49:25.737 回答