查询Sql Server 中,数据库名称、数据表名称、字段名称.

本文介绍了如何使用SQL语句查询SQL Server数据库中的各种信息,包括数据库名称、数据表名称及字段名称等,并解决了不同版本间(如SQL Server 2000与2005)的兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 查询数据库(Databases)名称: 

SELECT name FROM master.dbo.sysdatabases WHERE status <> 512

查询数据表(Tables)名称:

SELECT name FROM dbo.sysobjects WHERE OBJECTPROPERTY(id,N'IsUserTable') = 1 AND name <> 'dtproperties'

查询带Schema 的数据表(Tables)名称:
  SELECT b.name + '.' + a.name AS name FROM sysobjects a INNER JOIN sys.schemas b ON a.uid=b.schema_id WHERE OBJECTPROPERTY(id,N'IsUserTable') = 1 AND a.name <> 'dtproperties'
   说明:默认情况下Schema是dbo,数据表的名称应该是dbo.TableName.但是有的数据表指定了其他的Schema.比如AdventureWorks 中的表HumanResources.Employee;Production.Product 等等.
查询数据表(Tables)中的字段(Columns)名称:
    SELECT * FROM dbo.syscolumns WHERE id=OBJECT_ID(N'[Production].[Product]') ORDER BY colid

有的数据库敏感大小写 ,比如AdventureWorks.所以千万要注意,表名称,Schemas名称要写正确.我就是在我的一个程序里面将 dbo.sysobjects写成 dbo.Sysobjects(首字母大写 )而发生了错误.
PS:有关列举局域网内可用数据库服务器名称的方法请参考我的另一篇日志:

2010/05/28 added:
今天在公司的网络上DEBUG. 连接到一台SQL Server 2000.加载表名称的时候出错了.后来比对自己电脑上的SQL Server 2005.发现 2000没有sys.schemas 这个视图(View).(貌似连Schema的概念都没有.抱歉,我在数据库上面还是比较小白的.)后面尝试多次,由于SQL Server 2005 的sysobjects中并没有保存诸如sys.schemas之类的视图.多次尝试之下,丑陋地完成了兼容性问题:
                BEGIN
                IF EXISTS (SELECT uid FROM sysobjects where name='sysobjects')
                    SELECT b.name+'.'+a.name FROM sysobjects a INNER JOIN sysusers b ON a.uid=b.uid WHERE OBJECTPROPERTY(a.id,N'IsUserTable') = 1 AND a.name <> 'dtproperties'
                ELSE
                    SELECT b.name+'.'+a.name FROM sysobjects a INNER JOIN sys.schemas b ON a.uid=b.schema_id WHERE OBJECTPROPERTY(a.id,N'IsUserTable') = 1 AND a.name <> 'dtproperties'
                END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值