我有一个查询,我用来列出数据库:
SELECT * FROM sys.databases
但是此查询在SQL Server 2000中不起作用.
以下查询适用于SQL Server 2000及更高版本:
SELECT NAME FROM sysdatabases;
我发现这篇文章有一些注释sys.database
(并且还指出sysdatabases因兼容性原因而被保留).
我想知道的是,如果有任何原因我不应该sysdatabases
用来获取数据库名称列表?除了使用sys.databases
更新的风格,我还没有看到任何其他地方.
我可以想到以下原因:
它可能会在将来的版本中删除(强调我的):
包含此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或分区等新功能时,必须切换到使用目录视图.