如何摆脱SQL Server 2000中的扩展表属性?

时间:2009-09-01 20:33:21

标签: sql-server-2005 sql-server-2000 ms-access-2007 extended-properties

我正在重新铸造a question I asked earlier,因为我知道我遇到问题的原因。

我拥有:SQL Server 2000上的数据库中的表。我使用Access 2007,SQL Server Management Studio 2005以及偶尔使用SQL 2000企业管理器查看/编辑表。

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

我发现:抛出异常的表具有与之相关的扩展属性。我回过头来说“是”将保存更改保存到Access中的表格布局。

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

现在问我的问题:

我使用名为 sysproperties 表的Enterprise Manager跟踪了一个表,该表位于我的数据库中。 This might be an undocumented table(叹气),但看起来它有扩展的属性信息,这引起了我所有的麻烦。我尝试修改另一个表的布局,看看是否有任何记录被添加到 sysproperties 表中,但看起来答案是否定的。

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

更重要的是,我在企业管理器中查找了扩展表属性,并且它们不像SSMS 2005中那样容易访问。

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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

但我确实提出问题,为什么您允许用户直接编辑表格。您应该只允许他们访问表单和报表中的数据(表单可以是数据表,因此您可以复制表数据表的所有便利功能,而无需自己使用表格。)

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

所有这些都说明了,通过让用户直接访问链接表,您就会产生自己的问题。修复此问题,您的问题就会消失,而无需担心Access或SQL Server中的表的用户权限。