当前位置:  开发笔记 > 数据库 > 正文

SQL Server sys.databases vs sysdatabases?

如何解决《SQLServersys.databasesvssysdatabases?》经验,为你挑选了1个好方法。

我有一个查询,我用来列出数据库:

SELECT * FROM sys.databases

但是此查询在SQL Server 2000中不起作用.

以下查询适用于SQL Server 2000及更高版本:

SELECT NAME FROM sysdatabases;

我发现这篇文章有一些注释sys.database(并且还指出sysdatabases因兼容性原因而被保留).

我想知道的是,如果有任何原因我不应该sysdatabases用来获取数据库名称列表?除了使用sys.databases更新的风格,我还没有看到任何其他地方.



1> Heinzi..:

我可以想到以下原因:

它可能会在将来的版本中删除(强调我的):

包含此SQL Server 2000系统表作为向后兼容性的视图.我们建议您使用当前的SQL Server系统视图.若要查找等效的系统视图或视图,请参阅将SQL Server 2000系统表映射到SQL Server 2005系统视图.将在Microsoft SQL Server的未来版本中删除此功能.避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序.

换句话说:是的,您可以使用sysdatabases,但是一旦发布了不再支持的SQL Server版本,您可能需要重写所有内容sysdatabases.

兼容性视图(例如sysdatabases)在SQL Server 2000中保持"原样"并且不会获得新功能.因此,它们包含的信息少于新同行:

兼容性视图公开SQL Server 2000中可用的相同元数据.但是,兼容性视图不会公开与SQL Server 2005及更高版本中引入的功能相关的任何元数据.因此,在使用Service Broker或分区等新功能时,必须切换到使用目录视图.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有