0

我正在重新提出我之前提出的一个问题,因为我知道我所看到的问题的原因。

我所拥有的:SQL Server 2000 上的数据库中的表。我使用 Access 2007、SQL Server Management Studio 2005 以及偶尔使用 SQL 2000 Enterprise Manager 查看/编辑表。

我做了什么:我试图将数据库从 SQL Server 2000 复制到我的本地 SQL Server 2005 实例。复制发生时没有错误。当我尝试在 Access 2007 中查看复制的数据库中的表时,我遇到了异常。

我发现:抛出异常的表具有与其相关的扩展属性。这可以追溯到对在 Access 中保存对表布局的更改说“是”。

我试图解决这个问题:我尝试通过 SQL Server 2005 Management Studio 删除扩展属性并重新复制数据库,但这并没有解决问题。在为表格编写脚本后,我发现扩展属性并没有在表格上消失。

现在我的问题:

我使用企业管理器跟踪了一个名为sysproperties表的表,该表位于我的数据库中。 这可能是一个未记录的表格(叹气),但它看起来有扩展的属性信息,这让我很头疼。我尝试修改另一个表的布局以查看是否将任何记录添加到sysproperties表中,但看起来答案是否定的。

有人有这个问题的经验吗?仅删除此表中的条目是否安全?我认为我所做的大多数“布局更改”都是调整 Access 中列的大小,所以如果这就是存储在那里的所有内容,我可以忍受。

更重要的是,我在 Enterprise Manager 中查找了扩展表属性,但它们不像在 SSMS 2005 中那样容易访问。

提前致谢!

4

1 回答 1

1

你没有说你的Access front 是MDB 还是ACCDB,但如果是前者,为什么不在TableDef 上设置不允许用户保存设计更改的权限呢?您需要检查这一点,但我认为您希望在前端的表链接上删除 MODIFY DESIGN 和 ADMINISTER 属性。

如果是 ACCDB,也许修复它的唯一方法是重新创建链接表。

不过,我确实质疑为什么您允许您的用户直接编辑表格。您应该只允许他们访问表单和报告中的数据(表单可以是数据表,因此您可以复制表数据表的所有方便功能,而无需使用表本身)。

此外,您的用户似乎必须在 SQL Server 表上拥有超出其应有权限的权限。我不知道这些属性如何存储在 SQL Server 中的详细信息(我的 SQL Server 工作使用的是旧版本),但应该有可分配给这些对象的组权限,以禁止将这些属性保存到服务器。

综上所述,您通过让用户直接访问链接表而导致了您自己的问题。解决这个问题,您的问题就会消失,而无需担心 Access 或 SQL Server 中表的用户权限。

于 2009-09-02T02:50:45.347 回答