sql server 2008如何获取数据库的详细信息?
根据DB名称,
获取数据库当前用户名,密码(sa这样的默认用户不需要列出)
数据库初始大小(size)
最大尺寸(maxsize)
物理文件路径(filename)
数据库日志文件初始大小(size)
日志文件最大尺寸(maxsize)
日志物理文件路径(filename)
日志模式
是否脱机
根据DB名称,
获取数据库当前用户名,密码(sa这样的默认用户不需要列出)
数据库初始大小(size)
最大尺寸(maxsize)
物理文件路径(filename)
数据库日志文件初始大小(size)
日志文件最大尺寸(maxsize)
日志物理文件路径(filename)
日志模式
是否脱机
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
■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
你好,我是用下面的语句创建了一个用户到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';谢谢。
这个要用 sp_helpuser密码是加密的,貌似看不到。
比如,你想知道数据库文件的详细信息,用
select * from sys.database_files