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

来源:互联网 发布:seo工程师薪资待遇 编辑:程序博客网 时间:2024/05/17 05:52

每天一个小问题 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 dtbwhere 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 BYmodify_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_nameAS 数据库名,

       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_nameAS 还原文件名

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 更新

 

原创粉丝点击