1.获取所有用户名
SELECT name FROM Sysusers where status='2' and islogin='1'
--islogin='1'表示帐户
--islogin='0'表示角色
--status='2'表示用户帐户
--status='0'表示糸统帐户
2.获取所有数据库名
SELECT Name FROM Master..SysDatabases ORDER BY Name
3.获取所有表名
SELECT Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY Name
--XType='U':表示所有用户表;
--XType='S':表示所有系统表;
4 获取某个表所有字段:
4.1 获取某个表所有字段名称:
SELECT Name FROM SysColumns WHERE id=Object_Id('TableName')
4.2 获取某个表的所有字段的详细信息
USE [database name]
GO
SELECT syscolumns.name,systypes.name,syscolumns.isnullable,
syscolumns.length FROM syscolumns, systypes
WHERE syscolumns.xusertype = systypes.xusertype
AND syscolumns.id = object_id('tablename')
结果如下:
注意:
5.获取数据库所有字段类型
select name from systypes
结果如下:
6.获取主键字段
SELECT name FROM SysColumns
WHERE id=Object_Id('表名')
and colid=(select top 1 keyno from sysindexkeys where id=Object_Id('表名'))
7. 获取当前数据库中的所有用户表(table),即不包括系统表
select Name from sysobjects where xtype='u' and status>=0
8.查询用户创建的所有数据库
select * from master..sysdatabases D where sid not in(select sid from
master..syslogins where name='sa')
9.取得某个database的所有存储过程名称
select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name
10.取得某个存储过程的内容(不是执行这个存储过程)
exec sp_helptext N'databasename.dbo.stored procedure name'
这个返回值是以255字节为单位分割的,如果存储过程的长度大于255,就会返回多行内容。需要自己将它们拼接起来,成为一个完整的sotred procedure。
在MSDN查到下面两句据说也能返回存储过程的内容:
--select definition from sys.sql_modules where object_id = (OBJECT_ID(N'databasename.dbo.sp name));
--select OBJECT_DEFINITION
但我在执行过程中就会报错,没法得到结果。