【问题标题】:How to change columns in a SharePoint external content type without screwing everything up?如何更改 SharePoint 外部内容类型中的列而不搞砸一切?
【发布时间】:2014-05-05 02:04:39
【问题描述】:

场景 1:

我有一个返回行/列的 SQL Server 存储过程。然后在 SP Designer (SPD) 中创建一个外部内容类型 (ECT) 并推送到 Central Admin (CA)。在 CA 中,我分配权限。在该站点上,我创建了一个外部列表 (EL) 并可以查看我的数据。都很好。

我在程序中将列名从“供应商名称”更改为“供应商”。现在我进入 SPD 来更改 ECT,有时它无法打开,出现错误:

“无法访问 BDC 服务应用程序业务数据连接服务。完整的异常文本为:Xml 类型“xdt:untypedAtomic 列表”不支持从 Clr 类型“Guid”到 Clr 类型“String”的转换。”

我没有看到这与我的更改有什么关系。撤消我对程序的更改并没有解决它。我不得不删除 ECT 和 ET 并重新创建它们。但是,它有时会再次发生。

场景 2

在测试它是否再次发生时,我发现它有时没有。我有不同的问题。

在proc中重命名字段后,我进入SPD并成功打开ECT并进行更改,将其推送到CA。在 CA 中,我发现所有权限都已被删除。这是个问题。为什么会这样?如何避免?

所以我重做权限,然后转到出现两个不同“子”问题的站点。

场景 2 A

外部列表已损坏,无法查看或更新以显示新列名称。我必须删除列表并重新创建它。这显然会杀死任何视图并将其从它所在的每个页面中删除,等等,或任何引用它的东西。这是一场噩梦。如何避免这种情况?我想到了一种方法,导致....

场景 2 B

我没有创建外部列表,而是编辑了一个网页,添加了一个业务数据列表 (BDL) Web 部件并将我的 ECT 添加到其中。一切都很好。然后我故意再次重命名 proc 中的一列,打开 SPD 并且(这一次)能够打开 ECT,更新字段名称。我推到CA。所有权限都被删除(叹气)。我重新添加了它们。然后我用我的 BDL 访问了我的网页,但该网页已损坏。我编辑了 Web 部件并能够对其进行更新,以便数据出现在屏幕上。

但是,旧的“供应商名称”字段丢失了(毫不奇怪,因为我已将其重命名)。但是新的“供应商”字段也不见了。在 BDL Web 部件中,我编辑了视图,令我惊讶的是,没有一个字段出现在可以添加到视图的字段列表中。在 SPD 中,我打开了 ECT 以验证新字段是否存在(确实存在)。将 ECT 推送到 CA、重做权限和编辑 BDL 都不会导致出现新字段。然后,最后,不知何故,新字段出现在屏幕上,而我却从未将其添加到 BDL 视图 - 缓存问题?

问题

所以现在我有两个问题: 1. 可以使用外部列表避免上述问题吗? 2. 为什么每次更新 ECT 时权限都会消失,如何防止?

谢谢。

【问题讨论】:

  • 我们认为这一切都是无稽之谈。

标签: sql-server sharepoint stored-procedures bdc external-contenttype


【解决方案1】:

对于场景 1:Sharepoint 不适合使用“GUID”数据类型。在将更改提交到您的 ECT 之前,将面包屑导航回 ECT 的一个级别(如果您“退得太远”并且可能会丢失您的更改,sharepoint 会提醒您)并检查 sharepoint 分配给每个字段的数据类型,如果您注意任何 GUID 数据类型,您可能必须在视图/进程中手动强制它们为 varchar 并关闭/重新打开 ECT。

场景 2:这可能是时间问题,我以前也遇到过。发生的事情是你在设计器中创建了你的 ECT 并保存了它,然后去 CA 设置权限。如果你没有理由重新更新你的 ECT,你会一切都好。但问题是您需要在设置权限后进行更改,但可能在设计器中打开了新创建的 ECT。所以你需要做的是——在 CA 中设置权限后,不要保存对 ECT 的任何更改,直到你确认你在 DESIGNER 中看到了你在 CA 中设置的权限(这是右上角的框)。这就是问题所在:SP 设计器不允许您设置权限,但在保存时会很高兴地覆盖它们,因此如果您在设计器中没有看到任何权限,那么保存该 ECT 会将权限“重置”为空。在设计器中设置权限后,您必须等待/刷新(有时关闭并重新打开 ECT)设计器中的 ECT,直到您也看到那里的权限。

场景 2B:经常对 ECT 进行更改必须让它们“传播”到站点(这正是我的设想,我没有读过这个)。进行更改后,我看到我的 ECT 完全损坏(您会收到一个无用的相关 ID 错误)或者只是看不到我的更改。解决方案是“如果你得到他们就吸烟”。我通常在更新后至少等待 10 分钟,直到我开始担心 ECT 是否损坏、不显示我的更改等。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多