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

Posted

技术标签:

【中文标题】如何摆脱 SQL Server 2000 中的扩展表属性?【英文标题】:How to get rid of extended table properties in SQL Server 2000? 【发布时间】:2009-09-01 20:33:21 【问题描述】:

现在我知道了我所看到的问题的原因,我正在重新发送 a question I asked earlier。

我有什么: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 的表,该表位于我的数据库中。 This might be an undocumented table(叹气)但看起来它具有扩展的属性信息,这让我很头疼。我尝试修改另一个表的布局以查看是否将任何记录添加到 sysproperties 表中,但看起来答案是否定的。

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

此外,我在 Enterprise Manager 中查找了扩展表属性,但它们不像在 SSMS 2005 中那样易于访问。

提前致谢!

【问题讨论】:

【参考方案1】:

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

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

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

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

话虽如此,您给用户直接访问链接表的权限会导致您自己的问题。解决这个问题,您的问题就会消失,而无需担心 Access 或 SQL Server 中表的用户权限。

【讨论】:

感谢大卫的回答。我没有在问题中说明这一点,但我的用户通过我正在编写的应用程序访问表,而不是通过 Access。保存布局更改是我作为应用程序开发人员所做的事情(不知道这些复杂的后果)。 因此,如果您不再进行这些更改,问题就不会再次发生。如果您将 Jet ULS 安全性应用于链接表,您可以保护自己免受伤害。另一种选择是删除链接表并使用带有 ODBC 连接字符串的查询代替链接表——在这种情况下,Access 可能不会保存扩展属性。

以上是关于如何摆脱 SQL Server 2000 中的扩展表属性?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008转换成sql 2000数据库如何操作?

SQL Server 2000:如何只返回电话号码列中的号码

如何从 SQL Server 2000 调用 MySQL 存储过程?

如何解决 SQL Server 2000 中的连接问题

如何修改sql server 2000 里的表中的内容?

在sql server中一次插入固定数量的行2000