我想知道一个数据库里面有多少存储过程,多少表,多少主键,多少索引,多少视图,多少函数等等等,如何取得

解决方案 »

  1.   

    select * from sysobjects
    ....................................
    查看联机帮助里关于 sysobjects 的内容.
      

  2.   

    获取当前数据库中的所有用户表
    select Name from sysobjects where xtype='u' and status>=0
    查看当前数据库中所有存储过程
    select name as 存储过程名称 from sysobjects where xtype='P'
      

  3.   


    --查询表结构信息
    --邹老大的
    SELECT 
    表名=case when a.colorder=1 then d.name else '' end,
    表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
    字段序号=a.colorder,
    字段名=a.name,
    标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
    主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
    SELECT name FROM sysindexes WHERE indid in(
    SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
    ))) then '√' else '' end,
    类型=b.name,
    占用字节数=a.length,
    长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
    允许空=case when a.isnullable=1 then '√'else '' end,
    默认值=isnull(e.text,''),
    字段说明=isnull(g.[value],'')
    FROM syscolumns a
    left join systypes b on a.xusertype=b.xusertype
    inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
    left join syscomments e on a.cdefault=e.id
    left join sysproperties g on a.id=g.id and a.colid=g.smallid  
    left join sysproperties f on d.id=f.id and f.smallid=0
    --where d.name='要查询的表'    --如果只查询指定表,加上此条件
    order by a.id,a.colorder
      

  4.   

    查找索引的SQL:
    SELECT o.name,c.Name,i.Name,k.*,i.*
    FROM 
      sysindexes i,
      sysindexkeys k, 
      sysobjects o, 
      syscolumns c 
    WHERE o.id=i.id
      AND o.xType='U'
      AND i.id = k.id 
      AND i.indid = k.indid
      AND i.id = o.id
      AND i.id = c.id 
      AND k.colid = c.colid
      --AND o.name='G_Measures'
      --AND o.uid=User_ID('DW')
      and i.indid > 0 
      and i.indid < 255 
      and (i.status & 64)=0
      

  5.   


    --多少存储过程
    select * from sysobjects where type='P'
    --多少表
    select * from sysobjects where type='U'
    --多少主键
    select * from sysobjects where xtype='PK'
    --多少视图
    select * from sysobjects where type='V'
    --多少函数
    select * from sysobjects where type IN('TF', 'IF', 'FN')
      

  6.   

    楼主在sysobjectss统计一下就行了xtype为类型
    use 数据库
    select count(*)from sysobjects where xtype=..............
      

  7.   

    sp_MSgetversion
    This extended stored procedure can be used to get the current version of Microsoft SQL Server. To get the current SQL Server version, run
    EXEC master..sp_MSgetversion
    Note. A more common way to retrieve the current SQL Server version (this way provides more information) is to use following SELECT statement:
    SELECT @@version
    xp_dirtree
    This extended stored procedure can be used to get a list of all the folders for the folder named in the xp. To get a list of all the folders in the C:\MSSQL7 folder, run:
    EXEC master..xp_dirtree 'C:\MSSQL7'
    xp_enum_oledb_providers
    This extended stored procedure is used to list of all the available OLE DB providers. It returns Provider Name, Parse Name and Provider Description. To get a list of all OLE DB providers for your SQL Server, run:
    EXEC master..xp_enum_oledb_providers
    xp_enumcodepages
    This extended stored procedure can be used to list of all code pages, character sets and their description for your SQL Server. To get a list of all code pages and character sets, run:
    EXEC master..xp_enumcodepages
    xp_enumdsn
    This extended stored procedure returns a list of all System DSNs and their description. To get the list of System DSNs, run:
    EXEC master..xp_enumdsn
    xp_enumerrorlogs
    This extended stored procedure returns the list of all error logs with their last change date. To get the list of error logs, run:
    EXEC master..xp_enumerrorlogs
    xp_enumgroups
    This extended stored procedure returns the list of Windows NT groups and their description. To get the list of the Windows NT groups, run:
    EXEC master..xp_enumgroups
    xp_fileexist
    You can use this extended stored procedure to determine whether a particular file exists on the disk or not.
    Syntax:
    EXECUTE xp_fileexist filename [, file_exists INT OUTPUT]
    For example, to check whether the file boot.ini exists on disk c: or not, run:
    EXEC master..xp_fileexist 'c:\boot.ini'
    xp_fixeddrives
    This very useful extended stored procedure returns the list of all hard drives and the amount of free space in Mb for each hard drive.To see the list of drives, run:
    EXEC master..xp_fixeddrives
    xp_getnetname
    This extended stored procedure returns the WINS name of the SQL Server that you're connected to.
    To view the name, run:
    EXEC master..xp_getnetname
    xp_readerrorlog
    This extended stored procedure returns the content of the errorlog file. You can find the errorlog file in the C:\MSSQL7\Log directory, by default for SQL Server 7.0.
    To see the text of the errorlog file, run:
    EXEC master..xp_readerrorlog
    xp_regdeletekey
    This extended stored procedure will delete an entire key from the registry. You should use it very carefully.
    Syntax:
    EXECUTE xp_regdeletekey [@rootkey=]'rootkey',
     [@key=]'key' 
    For example, to delete the key 'SOFTWARE\Test' from 'HKEY_LOCAL_MACHINE', run:
    EXEC master..xp_regdeletekey
     @rootkey='HKEY_LOCAL_MACHINE', 
     @key='SOFTWARE\Test'
    xp_regdeletevalue
    This extended stored procedure will delete a particular value for a key in the registry. You should use it very carefully.
    Syntax:
    EXECUTE xp_regdeletevalue [@rootkey=]'rootkey',
     [@key=]'key',
     [@value_name=]'value_name'
    For example, to delete the value 'TestValue' for the key 'SOFTWARE\Test' from 'HKEY_LOCAL_MACHINE', run:
    EXEC master..xp_regdeletevalue
     @rootkey='HKEY_LOCAL_MACHINE',
     @key='SOFTWARE\Test',
     @value_name='TestValue'
    xp_regread
    This extended stored procedure is used to read from the registry.
    Syntax:
    EXECUTE xp_regread [@rootkey=]'rootkey',
     [@key=]'key'
     [, [@value_name=]'value_name']
     [, [@value=]@value OUTPUT] 
    For example, to read into the variable @test from the value 'TestValue' from the key 'SOFTWARE\Test' from the 'HKEY_LOCAL_MACHINE', run:DECLARE @test varchar(20)
    EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
     @key='SOFTWARE\Test',
     @value_name='TestValue',
     @value=@test OUTPUT
    SELECT @test
    xp_regwrite
    This extended stored procedure is used to write to the registry.
    Syntax:
    EXECUTE xp_regwrite [@rootkey=]'rootkey',
     [@key=]'key',
     [@value_name=]'value_name',
     [@type=]'type',
     [@value=]'value'
    For example, to write the variable 'Test' to the 'TestValue' value, key 'SOFTWARE\Test', 'HKEY_LOCAL_MACHINE', run:
    EXEC master..xp_regwrite
     @rootkey='HKEY_LOCAL_MACHINE',
     @key='SOFTWARE\Test',
     @value_name='TestValue',
     @type='REG_SZ',
     @value='Test'
    xp_subdirs
    This extended stored procedure is used to get the list of folders for the folder named in the xp. In comparison with xp_dirtree, xp_subdirs returns only those directories whose depth = 1.
    This is the example:
    EXEC master..xp_subdirs 'C:\MSSQL7'
    Note.Keep in mind that these undocumented extended stored procedures are not officially supported by Microsoft, and that they may not be found in the next version of SQL Server.
    sp_MSget_qualified_name
    The sp_MSget_qualified_name stored procedure is used to get the qualified name for the given object id.
    Syntax
    sp_MSget_qualified_name object_id, qualified_name
    where 
    object_id - is the object id. object_id is int.
    qualified_name - is the qualified name of the object. qualified_name
     is nvarchar(512).
    This is the example to get the qualified name for the authors table from the pubs database.
    USE pubs
    GO
    declare @object_id int, @qualified_name nvarchar(512)
    select @object_id = object_id('authors')
    EXEC sp_MSget_qualified_name @object_id, @qualified_name output
    select @qualified_name
    GO
    Here is the result set from my machine:
    --------------------------------------
    [dbo].[authors]
    sp_MSdrop_object
    The sp_MSdrop_object stored procedure is used to drop an object (it can be table, view, stored procedure or trigger) for the given object id, object name, and object owner. If object id, object name, and object owner are not specified, then nothing will be dropped.
    Syntax
    sp_MSdrop_object [object_id] [,object_name] [,object_owner]
    where 
    object_id - is the object id. object_id is int,
     with a default of NULL.
    object_name - is the name of the object. object_name is sysname,
     with a default of NULL.
    object_owner - is the object owner. object_owner is sysname,
     with a default of NULL.
    This is the example of dropping the titleauthor table from the pubs database.
    USE pubs
    GO
    declare @object_id int
    select @object_id = object_id('titleauthor')
    EXEC sp_MSdrop_object @object_id
    GO
    sp_gettypestring
    The sp_gettypestring stored procedure returns the type string for the given table id and column id.
    Syntax
    sp_gettypestring tabid, colid, typestring
    where 
    tabid - is the table id. tabid is int.
    colid - is the column id. colid is int.
    typestring - is the type string. It's output parameter.
     typestring is nvarchar(255).
    This is the example to get the type string for the column number 2 in the authors table, from the pubs database.
    USE pubs
    GO
    declare @tabid int, @typestring nvarchar(255)
    select @tabid = object_id('authors')
    EXEC sp_gettypestring @tabid, 2, @typestring output
    select @typestring
    GO
    Here is the result set from my machine:
      

  8.   

    -------------------------------
    varchar(40)
    sp_MSgettools_path
    The sp_MSgettools_path stored procedure returns the path to the SQL Server 2000 tools and utilities.
    Syntax
    sp_MSgettools_path install_path
    where 
    install_path - is the installation path. It's output parameter.
     install_path is nvarchar(260).
    This is the example to get the path to the SQL Server 2000 tools and utilities.
    USE master
    GO
    declare @install_path NVARCHAR(260)
    EXEC sp_MSgettools_path @install_path OUTPUT
    select @install_path
    GO
    Here is the result set from my machine:
    ------------------------------------------------------------
    C:\Program Files\Microsoft SQL Server\80\Tools
    sp_MScheck_uid_owns_anything
    The sp_MScheck_uid_owns_anything stored procedure returns the list of the object, owned by the specified user.
    Syntax
    sp_MScheck_uid_owns_anything uid
    where 
    uid - is the User ID, unique in this database. uid is smallint.
    This is the example to get the list of the objects, owned by the database owner 1 in the pubs database.
    USE pubs
    GO
    EXEC sp_MScheck_uid_owns_anything 1
    GO
    sp_columns_rowset
    The sp_columns_rowset stored procedure returns the complete columns description, including the length, type, name, and so on.
    Syntax
    sp_columns_rowset table_name [, table_schema ] [, column_name]
    where 
    table_name - is the table name. table_name is sysname.
    table_schema - is the table schema. table_schema is sysname,
     with a default of NULL.
    column_name - is the column name. column_name is sysname,
     with a default of NULL.
    This is the example:
    USE pubs
    GO
    EXEC sp_columns_rowset 'authors'
    GO
    sp_fixindex
    The sp_fixindex stored procedure can be used to fix corruption in a system table by recreating the index.
    Syntax
    sp_fixindex dbname, tabname, indid
    where 
    dbname - is the database name. dbname is sysname.
    tabname - is the system table name. tabname is sysname.
    indid - is the index id value. indid is int
    Note. Before using this stored procedure the database has to be in single user mode.
    See this link for more information:
    How can I fix a corruption in a system table?
    This is the example:
    USE pubs
    GO
    EXEC sp_fixindex pubs, sysindexes, 2
    GO
    sp_MSforeachdb
    Sometimes, you need to perform the same actions for all databases. You can create cursor for this purpose, or you can also use the sp_MSforeachdb stored procedure to accomplish the same goal with less work.
    For example, you can use the sp_MSforeachdb stored procedure to run a CHECKDB for all the databases on your server:
    EXEC sp_MSforeachdb @command1="print '?' DBCC CHECKDB ('?')"
    sp_MSforeachtable
    Sometimes, you need to perform the same actions for all tables in the database. You can create cursor for this purpose, or you can also use the sp_MSforeachtable stored procedure to accomplish the same goal with less work.
    For example, you can use the sp_MSforeachtable stored procedure to rebuild all the indexes in a database:
    EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?')"
    sp_MShelpcolumns
    The sp_MShelpcolumns stored procedure returns the complete schema for a table, including the length, type, name, and whether a column is computed.
    Syntax
    sp_MShelpcolumns tablename [, flags] [, orderby] [, flags2]
    where
    tablename - is the table name. tablename is nvarchar(517).
    flags - flags is int, with a default of 0.
    orderby - orderby is nvarchar(10), with a default of NULL.
    flags - flags2 is int, with a default of 0.
    To get the full columns description for the authors table in the pubs database, run:
    USE pubs
    GO
    EXEC sp_MShelpcolumns 'authors'
    GO
    sp_MShelpindex
    The sp_MShelpindex stored procedure returns information about name, status, fill factor, index columns names, and file groups for a given table.
    Syntax
    sp_MShelpindex tablename [, indexname] [, flags]
    where
    tablename - is the table name. tablename is nvarchar(517).
    indexname - is the index name. indexname is nvarchar(258),
     with a default of NULL.
    flags - flags is int, with a default of NULL.
    To get the indexes description for the authors table in the pubs database, run:
    USE pubs
    GO
    EXEC sp_MShelpindex 'authors'
    GO
    sp_MShelptype
    The sp_MShelptype stored procedure returns much useful information about system data types and user data types.
    Syntax
    sp_MShelptype [typename] [, flags]
    where
    typename - is the type name. typename is nvarchar(517),
     with a default of NULL.
    flags - flags is nvarchar(10), with a default of NULL.
    To get information about all built-in and user defined data types in the pubs database, run:
    USE pubs
    GO
    EXEC sp_MShelptype
    GO
    sp_MSindexspace
    The sp_MSindexspace stored procedure returns the size in kb, of the indexes found in a particular table.
    Syntax
    sp_MSindexspace tablename [, index_name]
    where
    tablename - is the table name. tablename is nvarchar(517).
    index_name - is the index name. index_name is nvarchar(258),
      

  9.   

    with a default of NULL.
    To determine the space used by the indexes from the authors table in the pubs database, run:
    USE pubs
    GO
    EXEC sp_MSindexspace 'authors'
    GO
    sp_MSkilldb
    The sp_MSkilldb stored procedure sets a database to suspect mode and uses DBCC DBREPAIR to kill it. You should run this sp from the context of the master database. Use it very carefully.
    Syntax
    sp_MSkilldb dbname
    where 
    dbname - is the database name. dbname is nvarchar(258).
    To kill the pubs database, run:
    USE master
    GO
    EXEC sp_MSkilldb 'pubs'
    GO
    sp_MStablespace
    The sp_MStablespace stored procedure returns the number of rows in a table and the space the table and index use.
    Syntax
    sp_MStablespace name [, id]
    where
    name - is the table name. name is nvarchar(517).
    id - id is int, with a default of NULL.
    To determine the space used by the authors table in the pubs database, run:
    USE pubs
    GO
    EXEC sp_MStablespace 'authors'
    GO
    Here is the result set from my machine:
    Rows DataSpaceUsed IndexSpaceUsed
    ----------- ------------- --------------
    23 8 32
    sp_tempdbspace
    The sp_tempdbspace stored procedure can be used to get the total size and the space used by the tempdb database. It is used without parameters.
    Syntax
    sp_tempdbspace
    This is the example:
    EXEC sp_tempdbspace
    Here is the result set from my machine:
    database_name database_size spaceused
    ------------- ----------------------- -----------------------------
    tempdb 9.750000 .562500
    sp_who2
    The sp_who2 stored procedure returns information about current SQL Server 2000 users and processes similar to sp_who, but it provides more detailed information. sp_who2 returns CPUTime, DiskIO, LastBatch and ProgramName in addition to the data provided by sp_who.
    Syntax
    sp_who [loginame]
    where
    loginame - the user's login name. If not specified, the procedure
     reports on all active users of SQL Server.
    This example returns information for the 'sa' login:
    EXEC sp_who2 'sa'
      

  10.   

    sysobjects 表type char(2) 对象类型。可以是下列值之一: 
    C = CHECK 约束 
    D = 默认值或 DEFAULT 约束
    F = FOREIGN KEY 约束 
    FN = 标量函数
    IF = 内嵌表函数
    K = PRIMARY KEY 或 UNIQUE 约束 
    L = 日志
    P = 存储过程
    R = 规则
    RF = 复制筛选存储过程
    S = 系统表 
    TF = 表函数
    TR = 触发器
    U = 用户表
    V = 视图
    X = 扩展存储过程
      

  11.   

    SP_开头的系统过程,一般也是从 sysobjects 等表中取信息
      

  12.   

    select * from sysobjects 再根据type来区别了类型,如type='U'就是用户表
      

  13.   

    SELECT * FROM INFORMATION_SCHEMA.TABLES