- 1.获取所有数据库名
SELECT Name FROM Master..SysDatabases ORDER BY Name
- 2.获取所有表名
SELECT Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY Name
--XType='U':表示所有用户表; XType='S':表示所有系统表;
- 3.获取所有字段名
SELECT Name FROM SysColumns WHERE id=Object_Id('TableName')
- 4.查询数据库中无数据的数据表
select sys.objects.name from sys.objects join sys.sysindexes on sys.objects.object_id=sys.sysindexes.id
where indid<=2 and type='U'
group by sys.objects.name
having SUM(rows)=0
- 5.重新编译存储过程 ,解决在sql中执行快但程序调用执行慢的原因
EXEC sys.recompile @objname='存储过程名称'
原因分析:执行计划过期
由于存储过程是预编译的, 在第一次执行的时候, 会生成执行计划, 以后执行的时候, 会使用这个执行计划(除非存储过程侯或者显示指定重新编译), 而不是每次执行时都去生成执行计划。
当存储过程涉及的对象结构调整, 或者相关的数据产生了很大变化, 这可能导致原来的计划不适合当前的现状(执行计划过期), 这种情况下应该重新编译存储过程.
经常我们要查询表的索引,约束,相关性,触发器的属性,那么要知道sysobjects这个表的字段的意思,那么不管要查什么都没有问题!
Sysobjects:SQL-SERVER的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等,每个对象在表中占一行。
以下是此系统表的字段名称和相关说明。
Name,id,xtype,uid,status:分别是对象名,对象ID,对象类型,所有者对象的用户ID,对象状态。
对象类型(xtype)。可以是下列对象类型中的一种:
- AF = Aggregate function (CLR)
- C = CHECK constraint
- D = Default or DEFAULT constraint
- F = FOREIGN KEY constraint
- L = Log
- FN = Scalar function
- FS = Assembly (CLR) scalar-function
- FT = Assembly (CLR) table-valued function
- IF = In-lined table-function
- IT = Internal table
- P = Stored procedure
- PC = Assembly (CLR) stored-procedure
- PK = PRIMARY KEY constraint (type is K)
- RF = Replication filter stored procedure
- S = System table
- SN = Synonym
- SQ = Service queue
- TA = Assembly (CLR) DML trigger
- TF = Table function
- TR = SQL DML Trigger
- TT = Table type
- U = User table
- UQ = UNIQUE constraint (type is K)
- V = View
- X = Extended stored procedure
当xtype=’U’ and status>0代表是用户建立的表,对象名就是表名,对象ID就是表的ID值。
select * from misa.dbo.sysobjects where xtype='U' and status>0
--列出库misa中所有的用户建立的表名
SELECT * FROM SYSOBJECTS WHERE PARENT_OBJ = OBJECT_ID( 'CS') AND XTYPE='TR'
--列出表cs的所有属性,上面是trigger!
refer:http://blog.csdn.net/jackmacro/article/details/6405871