sql server 2008如何获取数据库的详细信息?
根据DB名称,
获取数据库当前用户名,密码(sa这样的默认用户不需要列出)
数据库初始大小(size)
最大尺寸(maxsize)
物理文件路径(filename)
数据库日志文件初始大小(size)
日志文件最大尺寸(maxsize)
日志物理文件路径(filename)
日志模式
是否脱机

解决方案 »

  1.   

    报告有关指定数据库或所有数据库的信息。 Transact-SQL 语法约定语法
     
    sp_helpdb [ [ @dbname= ] 'name' ]
     参数
    [ @dbname= ] 'name'
    要报告其信息的数据库的名称。name 的数据类型为 sysname,没有默认值。如果未指定 name,则 sp_helpdb 将报告 sys.databases 目录视图中所有数据库的信息。返回代码值
    0(成功)或 1(失败)结果集
    列名  数据类型  说明  
    name 
     sysname 
     数据库名称。
     
    db_size 
     nvarchar(13) 
     数据库总计大小。
     
    owner 
     sysname 
     数据库所有者,例如 sa。
     
    dbid 
     smallint 
     数据库 ID。
     
    created 
     nvarchar(11) 
     数据库创建的日期。
     
    status 
     nvarchar(600) 
     以逗号分隔的值列表,这些值是当前在数据库上设置的数据库选项的值。只有启用布尔值选项时,才将这些选项列出。非布尔选项及其对应值以 option_name=value 的形式列出。有关详细信息,请参阅 ALTER DATABASE (Transact-SQL)。
     
    compatibility_level 
     tinyint 
     数据库兼容级别:60、65、70、80 或 90。
     如果指定 name,便会有显示指定数据库的文件分配的其他结果集。列名  数据类型  说明  
    name 
     nchar(128) 
     逻辑文件名。
     
    fileid 
     smallint 
     文件 ID。
     
    filename 
     nchar(260) 
     操作系统文件名(物理文件名称)。
     
    filegroup 
     nvarchar(128) 
     文件所属的文件组。NULL = 文件为日志文件。它决不是文件组的一部分。
     
    size 
     nvarchar(18) 
     文件大小 (MB)。
     
    maxsize 
     nvarchar(18) 
     文件大小可达到的最大值。此字段中的 UNLIMITED 值表示文件可以一直增长到磁盘变满为止。
     
    growth 
     nvarchar(18) 
     文件的增量。表示每次需要新的空间时给文件增加的空间大小。
     
    usage 
     varchar(9) 
     文件用法。对于数据文件,该值为 'data only',对于日志文件,该值为 'log only'。
     注释
    结果集中的 status 列报告数据库中已设置为 ON 的选项。并非所有的数据库选项都由 status 列报告。若要查看当前数据库选项设置的完整列表,请使用 sys.databases 目录视图。权限
    当指定单个数据库时,需要具有数据库中的 public 角色成员身份。当没有指定数据库时,需要具有 master 数据库中的 public 角色成员身份。如果无法访问数据库,那么 sp_helpdb 将显示错误消息 15622 和有关数据库的尽可能多的信息。示例
    A. 返回有关单个数据库的信息
    以下示例显示有关 AdventureWorks2008R2 数据库的信息。 复制代码 
    EXEC sp_helpdb N'AdventureWorks2008R2'; B. 返回有关所有数据库的信息
    以下示例显示有关运行 SQL Server 的服务器上所有数据库的信息。 复制代码 
    EXEC sp_helpdb;
    GO 
      

  2.   

    捕捉SQL Server 2005数据库大小的趋势,这是非常重要的,因为DBA们可以利用这些信息来规划未来的空间需求,问题的通知类型,并规划繁重负载的时间段。本文将介绍一种捕捉这一信息的简单的方法。  SQL Server上的每个数据库都包含了关于数据库文件的大小的信息,连同其他一些相关信息。为了得到这个信息,我们需要一个方法来从单个数库中一次性检索出相关的数据。  有两个方法可以实现这个功能:■sp_spaceused:这个系统存储过程将返回当前数据库中的表、索引视图或 SQL Server 2005 Service Broker 队列所使用的磁盘空间。这是存储过程的返回数据库或者数据库中表的大小,但是报告的输出内容不太友好,不好理解。该存储过程通过脚本来捕获每个数据库的信息,但它可能需要用到用户自定义的光标。
    ■sp_msforeachdb:这是一个非常有用的系统存储过程,将任何SQL脚本传递给你在每个数据库上的SQL Server实例上来执行。存储过程遍历每个数据库,这样就省却了您一项项指定数据库名称了。本文我们将利用这个存储过程来捕获各个数据库文件大小的信息。
      这些资料我想收集和储存可以在sys.database_files系统视图中获得,包括数据库文件的大小,以及其他一些相关的信息,如数据库状态,数据库文件的增长方式(按绝对大小递增还是按百分比递增),是否是只读的等等。我需要捕获每个数据库中的这些信息。  下面的脚本以系统视图sys.database_files的结构为基础,创建一个名为DatabaseFiles表(如果它不存在的话),还增加了一个新的字段,用来记录捕获的记录什么时候插入到数据表中。  IF OBJECT_ID('DatabaseFiles') IS NULL 
      BEGIN 
      SELECT TOP 0 * INTO DatabaseFiles 
      FROM sys.database_files 
      ALTER TABLE DatabaseFiles 
      ADD CreationDate DATETIME DEFAULT(GETDATE()) 
      END 
      现在需要填充DatabaseFiles数据表。下面这个脚本使用sp_msforeachdb存储过程,并通过一个SQL脚本从sys.database_files读取数据,并插入到DatabaseFiles数据表中。  EXECUTE sp_msforeachdb 'INSERT INTO DatabaseFiles SELECT *, GETDATE() FROM [?].sys.database_files'  从脚本中我们可以发现,每个数据库的数据库名称,有点特别:使用[ ?]作为视图sys.database_files的前缀。  此代码执行时,实际上是遍历每个数据库实例,将数据库名称作为参数代替[ ?]标记。每个数据库的信息,将插入到DatabaseFiles表。这比自己写一个自定义游标实现起来容易很多。我还增加了一个GETDATE( )函数,用来记录记录插入到表中的时间。  注意:这个例子有点违背编码标准,使用SELECT *插入到一个表时,没有明确写明字段名称不列清单。如果用于实际项目中,建议大家作下修改,注明字段名称。  为了确保正确捕获到所有的数据,我们来看看DatabaseFiles数据表中的内容。  SELECT * FROM DatabaseFiles
      

  3.   


    你好,我是用下面的语句创建了一个用户到test数据库下,为什么sp_helpdb test;语句返回的owner这一列没有返回cx这个用户,而是返回的:YV-265D CB\Administrator 这个系统自带用户呢?
    怎样才能返回cx这个用户,并返回密码:111sp_addlogin 'cx','111'
    use test;
    sp_adduser 'cx';
    sp_addrolemember 'db_owner','ct';谢谢。
      

  4.   


    这个要用 sp_helpuser密码是加密的,貌似看不到。
      

  5.   

    楼主说的那些信息,要从多个系统视图中获取.
    比如,你想知道数据库文件的详细信息,用
    select * from sys.database_files
      

  6.   

    select * from sysdatabases