数据库管理方面必知语句(问答)(转)


转自:claro博客

每天一个小问题  SQL Server 部分汇总)

 

=======================================================================

select @@VERSION

Microsoft SQL Server 2008 ( RTM ) - 10.0.1600.22 ( Intel X86 )

    Jul   9 2008 14: 43: 34

    Copyright ( c ) 1988- 2008 Microsoft Corporation

    Enterprise Edition on Windows NT 6.0 < X86 > ( Build 6001: Service Pack 1)

=======================================================================

 

Q: 如何在 SQL 中查询实例中哪些数据库可以正常访问呢 ?

A:SELECT

dtb . name AS [Name] ,

dtb . database_id AS [ID] ,

case when has_dbaccess ( dtb . name ) = 1 then ' 可以访问 ' else ' 不可以访问 ' end AS[IsAccessible]

FROM

master . sys . databases AS dtb where database_id > 4

ORDER BY

[IsAccessible] , [Name] ASC

 

 

Q: 如何在 SQL 中查询哪些语句产生了阻塞呢 ?

A: -- 查询是否存在阻塞的情况发生

select *

from sys . sysprocesses

where blocked = 1

 

-- 查询哪些语句产生阻塞,查看结果中 EventInfo 字段。

dbcc inputbuffer ( 输入 spid  )

dbcc inputbuffer ( 输入 kpid  )

 

比如

dbcc inputbuffer ( 11111)

 

-- 近期发现 N 多数据库管理方面的问题出现,汇总到底。

-- 待续

 

--2010.6.25 记于古城西安

 

Q: 如何在 SQL 中查询最近 10 天内修改过的所有数据库对象呢 ?

A:-- 查看当前 DB 返回最近 10 天内修改过的所有数据库对象:

SELECT name AS object_name

  , SCHEMA_NAME ( schema_id ) AS schema_name

  , type_desc

  , create_date

  , modify_date

FROM sys . objects

WHERE modify_date > GETDATE () - 10

ORDER BY modify_date ;

 

 

--2010.7.17 记于古城西安

 

 

 

 

=======================================================================

Print @@VERSION

 

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 

Apr  2 2010 15:48:46 

Copyright (c) Microsoft Corporation

Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

 

=======================================================================

 

 

 

Q: 如何在 SQL 中查询指定数据库的还原记录?

A:-- 查看指定数据库的还原数据集:

SELECT rh.destination_database_name AS 数据库名,

       rh.restore_date AS 还原时间,

       CASE

         WHEN rf.file_number = 1 THEN '主数据文件'

         WHEN rf.file_number = 2 THEN '主日志文件'

         ELSE '其他'

       END                                   AS 文件类型,

       CASE

         WHEN rh.restore_type = 'D' THEN '数据库'

         WHEN rh.restore_type = 'F' THEN '文件'

         WHEN rh.restore_type = 'G' THEN '文件组'

         WHEN rh.restore_type = 'I' THEN '差异'

         WHEN rh.restore_type = 'L' THEN '日志'

         WHEN rh.restore_type = 'V' THEN '验证'

         WHEN rh.restore_type = 'R' THEN '恢复'

       END                                   AS 还原类型,

       Isnull(rf.destination_phys_drive, '') AS 还原媒体或路径,

       rf.destination_phys_name AS 还原文件名

FROM   msdb.dbo.restorehistory rh

       JOIN msdb.dbo.restorefile rf

         ON rh.restore_history_id = rf.restore_history_id

WHERE  rh.destination_database_name = '数据库名'

 

--2011.4.10 更新

 

 

Q:如何查询当前数据库中非Primary的文件组的对象信息?

A: --查询当前数据库中自定义文件组的对象信息

select 

CASE WHEN 'FG'=b.type THEN b.name ELSE N'' END AS [文件组],

CASE WHEN 'PS'=b.type THEN b.name ELSE N'' END AS [分区方案],

CASE WHEN 'FD'=b.type THEN b.name ELSE N'' END AS [FILESTREAM 数据文件组],

Object_name(a.object_id) 对象名,a.name 索引名,a.index_id 索引ID,

a.type_desc 索引类型,is_primary_key 主键约束属性

FROM sys.indexes a

JOIN sys.data_spaces b on a.data_space_id=b.data_space_id

WHERE b.name <> 'PRIMARY'  --非默认主文件组

 

--2011.5.24 更新

原文地址:https://www.cnblogs.com/cyun/p/5565477.html