备份数据库的sql语句(sql备份恢复数据库语句)-j9九游会登录

资料来源:https://mp.weixin.qq.com/s/pexio0mnoi1k0w9xgyecnw

作者:廖

1.sqlserver在实例级别查看信息,并使用serverproperty函数。

选择server property(& # 39;propertyname & # 39)

2.在例程层检查参数xx的配置。

select * from sys . configuration s where name = & # 39;xx & # 39

3.在实例级别更改参数xx的值

sp _ configure & # 39xx & # 39,'0'reconfigure with override sp _ configure显示或更改当前服务器的全局配置设置。

reconfigure意味着sql server立即生效,无需重新启动。

使用sp_configure更改设置时,请使用reconfigure语句使更改立即生效,否则更改将在sql server重新启动后生效。在reconfigure后添加with override,以指示该值无论是否满足要求都将生效。例如,恢复间隔的范围值是10-60,对应于sys.configurations.minimum是10,sys.configurations.maximum是60。如果sp _ configure & # 39恢复间隔& # 39;,75设置为75,这超出了10-60的规格,但要使75生效,必须添加with override。

4.sqlserver没有系统表来查询数据库下的所有对象。以下只能在当前数据库下查询。

select * from- sys.all_objects-查询当前数据库的所有模式范围的对象select * from sys.sysobjects-查询当前数据库的所有对象-sys . all _ objects、sys . sys objects等视图,在每个数据库的系统视图下,都有select * from sys . databases-可以查询当前数据库下的所有数据库信息,包括是否打开。select * from sys . sysdatabases-可以查询当前数据库下的所有数据库信息,不包括是否开启。这个系统视图在后续版本中会被删除——比如- sys.databases和sys.sysdatabases这样的视图每个数据库的系统视图下都有sys.processes如果没有这个视图,选择* from sys . sys processes——在当前数据库下,可以查询sql server实例上运行的所有进程的相关信息,也就是数据库上的所有线程。此系统视图将在后续版本中删除[/

5.全局系统视图,单数据库系统视图

sys.database_files -存储在数据库中的每个数据库文件在表中占一行。这是基于每个数据库的视图。sys . master _ files-master数据库中的每个文件对应一行。这是一个全系统的观点。-诸如- sys.database_files和sys.master_files之类的视图位于每个数据库的系统视图下

6.有些系统表只有msdb,没有系统视图。

dbo . backupset dbo . log _ shipping _ secondarydbo . restorehistorydbo . sysjobsdbo . sysjobhistory-这些系统表只存在于msdb数据库中,因此它们必须以msdb
为前缀

7.一些系统存储过程如sp _ lock、sp_who、sp_who2和sp_helptext存在于每个数据库中。

8.报告锁的信息,这将显示实例中所有数据库的锁信息和阻塞信息。

sp_lock

9.提供有关当前用户、会话和流程实例的信息。您可以看到会话的状态,运行、暂停、休眠和回滚。sp_who2可以通过cputime和diskio判断对应的交易是否大。

sp_who sp_who2 sp_who2 active(可选参数loginname,或active代表活动会话数)cputime(进程占用的总cpu时间)diskio(进程读取磁盘的总次数)lastbatch(客户最后一次调用存储过程或执行查询的时间)programname(用于初始化连接的应用程序名或主机名)

10.查看存储过程的内容。

sp_helptext pro_name

1.显示发送到sqlserver数据库的最后一条语句的线程号。

dbcc输入缓冲区

12.假设对249的查询被锁阻塞,查询被sql语句阻塞。

dbcc输入缓冲区(249)

13.检查数据库中是否有活动的事务。如果有活动的事务,你肯定会写日志。

dbcc opentran(数据库名称)

14.监控日志室空

dbcc sqlperf(日志空间)

15.寻找日志中空无法重用的原因(日志无法截断,所以日志文件越来越大,但是可用的空空间太小无法收缩)

select name,log _ reuse _ wait _ desc from sys . databases

16.检查虚拟日志文件信息。

多少行dbcc loginfo结果代表多少个虚拟日志文件,并且活动虚拟日志文件的状态是2。

17.修复msdb数据库。比如ss页面sql server代理缺失或者无法读取作业视图历史等功能,说明msdb坏了,需要修复。

dbcc checkdb(msdb);

18.在当前连接的sql server数据库中生成手动检查点。

check point[check point _ duration]-check point _ duration表示手动检查点完成所需的时间(秒)。通常不使用该参数,以便数据库可以自我控制。19.检查数据库的各种设置。

select name,state,user_access,is_read_only,recovery _ model from sys . databases

20.检查数据库中是否有会话。

select db_name(dbid),* from sys.sysprocesses其中dbid = db _ id(& # 39;dbname & # 39)

21.查询所有当前被阻止的请求。

select * from sys . sys processes where blocked & gt;或者0 selectt1.resource _ type,db _ name(t1 . resource _ database _ id),t1 . resource _ associated _ entity _ id,t1.request _ mode,t1.request _ session _ id,t2.blocking_session_id,t2 . wait _ duration _ ms from sys . dm _ tran _ locks as t1 inner join sys . dm _ os _ waiting _ tasks as t2 on t1 . lock _ owner _ address = t2 . resource _ address;或者选择a.spid作为阻塞进程,由a.cmd执行的操作作为阻塞进程,b.spid的编号作为阻塞进程,由b.cmd执行的操作作为来自主机的阻塞进程..系统进程a,主机..sysprocesses b,其中a. blocked 0和a.blocked= b.spid或select session _ id,spid,ecid,db _ name (sp.dbid),nt _ username,er.status,wait _ type,[个别查询] = substring (qt.text,er.statement_start_offset / 2,(case when er . statement _ end _ offset =-1 tenlen(convert(nvarchar(max),qt.text))* 2 elseer . statement _ end _ offset end-er . statement _ start _ offset)/2),qt . text,program_name,hostname50 /*忽略系统spids。*/和sp.blocked & gt或从sys.dm _ exec _ requests中选择session_id、status、blocking _ session _ id、wait _ type、wait _ time、wait _ resource、transaction _ id,其中status = n & # 39暂停& # 39;;-sys.dm _ exec _ requests返回sql server中正在执行的每个请求的信息。22.检查哪些表被锁定,以及被哪个进程锁定。

select request_session_id spid,object _ name(resource _ associated _ entity _ id)tablename from sys . dm _ tran _ locks其中resource _ type = & # 39对象& # 39;order by request _ session _ id asc

23.查询作业是否被阻止。

select * from msdb.dbo.sysjobs其中name = & # 39jobname & # 39select a.program_name,a.* from master..sys processes a where a . program _ name like & # 39;% 0 d1 ce 57 e8 ac 5% & # 39;-将第一条语句中的job_id代入第二条语句的program_name24。检查sql代理是否已打开。

如果存在(select top 1 1 from sys . sysprocesses where program _ name = & # 39;sqlagent -通用刷新程序& # 39;)选择& # 39;跑步& # 39;其他选择& # 39;不跑& # 39;

25.检查活动线程执行的sql语句,批量生成被杀死的语句。

选择& # 39;杀& # 39; cast(a . spid as nvarchar(100))as kill cmd,replace(hostname,& # 39;','')作为主机名,替换(程序名,& # 39;','')作为程序名,替换(逻辑名,& # 39;', '')作为loginame,db_name(a.dbid)作为dbname,spid,blocked,waittime/1000作为waittime,a.status,replace(b.text,& # 39;''','''')as sqlmessage,cpu from sys . sys processes as a with(no lock)cross apply sys . dm _ exec _ sql _ text(sql _ handle)as b where a . status & lt;& gt'睡觉& # 39;和a.spid & lt& gt@@spid

26.检查备份进度

select db _ name(database _ id)as exec _ db,percent_complete,case when estimated _ completion _ time & lt;36000000然后& # 39;0'else & # 39'end rtrim(estimated _ completion _ time/1000/3600) & # 39;:' 右(& # 39;0' rtrim((estimated _ completion _ time/1000)% 3600/60),2) & # 39;:' 右(& # 39;0' rtrim((estimated _ completion _ time/1000)% 60),2)作为[剩余时间],b.text作为tsql,*from sys。dm _ exec _ requestscross apply sys . dm _ exec _ sql _ text(sql _ handle)as b where命令like & # 39备份% & # 39;-and database _ id = db _ id(& # 39;cardorder & # 39)-或者像& # 39;恢复% & # 39;由2 desc订购

27.检查恢复进度。

select db _ name(database _ id)as exec _ db,percent_complete,case when estimated _ completion _ time & lt;36000000然后& # 39;0'else & # 39'end rtrim(estimated _ completion _ time/1000/3600) & # 39;:' 右(& # 39;0' rtrim((estimated _ completion _ time/1000)% 3600/60),2) & # 39;:' 右(& # 39;0' rtrim((estimated _ completion _ time/1000)% 60),2)作为[剩余时间],b.text作为tsql,*from sys。dm _ exec _ requestscross apply sys . dm _ exec _ sql _ text(sql _ handle)as b where命令like & # 39恢复% & # 39;-and database _ id = db _ id(& # 39;cardorder & # 39)-或者像& # 39;恢复% & # 39;由2 desc订购

28.检查数据库的最新备份信息。

select _ name,type,max(backup _ finish _ date)as backup _ finish _ date from msdb . dbo . backup set group by database _ name,type order by database _ name,type备注:d表示完全备份,i表示差异备份,l表示日志备份

29.检查数据库的历史备份记录,并生成restore语句。

selectconvert(char(100),server property(& # 39;servername & # 39))作为服务器,bs.database_name,bs.backup_start_date,bs.backup_finish_date,bs.expiration_date,case bs.typewhen & # 39d & # 39然后& # 39;数据库& # 39;当& # 39;l & # 39然后& # 39;日志& # 39;end as backup_type,bs.backup_size,bmf.logical_device_name,bmf.physical_device_name,bs.name as backupset_name,bs.description,& # 39;恢复数据库[& # 39; bs . database _ name & # 39;]from disk = n & # 39;'' bmf . physical _ device _ name & # 39;''with norecovery'从msdb . dbo . backup media family bmfinner加入msdb . dbo . backup set bson bmf . media _ set _ id = bs . media _ set _ id where bs . backup _ start _ date & gt;dateadd(day,-1,getdate())order by bs . backup _ finish _ date

30.查询xx库从yyyy-mm-dd日期开始的日志备份记录,生成还原日志的语句。

选择前1000个数据库名[数据库],案例。[类型]当& # 39;l & # 39然后n & # 39恢复日志& # 39; quote name(s . database _ name) n & # 39;从磁盘= & # 39;'' f .物理设备名称 n & # 39;''with norecovery'end [logrestore],f.physical_device_name,s.[type],s.backup_start_date,s . backup _ finish _ date from msdb . dbo . backup media family f inner join msdb . dbo . backup set s on s . media _ set _ id = f . media _ set _ id其中s.database _ name = & # 39xx & # 39而s.type = & # 39l & # 39s.backup _ start _ date & gt'yyyy-mm-dd & # 39;order by s . backup _ start _ date asc

31.查询常亮状态是否正常。

select dc.database_name,d.synchronization_health_desc,d.synchronization_state_desc,d . database _ state _ desc from sys . dm _ hadr _ database _ replica _ states d . join sys . ail ability _ databases _ cluster dc on d . group _ database _ id = dc . group _ database _ id and d . is _ local = 1

32.检查镜像信息。

selectdb_name(database_id),mirroring_state_desc,mirroring_role_desc,mirroring_partner_name,mirroring _ partner _ instance from sys。数据库_镜像33。查询职务选择b。name作为作业名e . name e . path d .与ssrs报表订阅相关的描述a.subscriptionid,laststatus,eventtype,lastruntime,date_created,date _ modifiedfromreportserver . dbo . report schedule a join msdb . dbo . sysjobs b on convert(sysname,a . schedule id)= b . name join reportserver . dbo . report schedule c on b . name = convert(sysname,c . schedule id)join reportserver . dbo . subscriptions d on c . subscription id = d报告名称在这里& # 39;

34.检查一个数据库的数据文件信息,连镜像从库的数据文件都能找到,filestream目录也能找到。

select db_name(database_id),* from master.sys.master_files其中database _ id = db _ id(n & # 39;dba & # 39);

35.检查数据文件的信息。

select b.name、a.type_desc、a.name、a.physical_name、a.size、a.max_size、a.is_percent_growth、a . growth from sys . master _ files a join sys . databases b on a . database _ id = b . database _ id和a.physical _ name like & # 39% dts wonda _ 1% & # 39;

36.查询实例的数据文件的总大小

从master.sys.master_files
中选择sum(size*8/1024/1024)

37.查询目录中数据库使用的总大小。

select a.size*8/1024/1024,a . * from master . sys . master _ files a其中physical _ name like & # 39g:\默认。数据% & # 39;

38.查询目录中哪些数据库占用8g以上的容量。

select b.name dbname,a.size*8/1024/1024 sum_gb,a.type_desc,a.name datafilename,a . physical _ name from master . sys . master _ files a join sys . sysdatabases b on a . database _ id = b . dbid和a.physical _ name like & # 39g:\默认。数据% & # 39;和a . size * 8/1024/1024 & gt;8

39.查询实例上每个数据库的大小。

selectdb _ name(db . database _ id)databasename,(cast(m rows。rowsize as float)* 8)/1024 rowsizemb,(cast(mflog。logsize as float)* 8)/1024 logsize mb,(cast(mfstream。streamsize as float)* 8)/1024 streamsizemb,(cast(mftext。textindexsize as float)* 8)/1024 textindexsize mb from sys . databases db left join(select database _ id,sum(size)rowsize from sys . master _ files where type = 0 group by database _ id,type)mfrows . database _ id = db . database _ idleft join(select database _ id,sum(size)logsize from sys . master _ files where type = 1 group by database _ id,type)mf log . database _ id = db . database _ idleft join(select database _ id,sum(idleft查询cpu消耗最多的前3条sql,选择前3名total _ worker _ time/1000 as[总cpu消耗(毫秒)]最近5天出现,execution _ count[运行次数],qs . total _ worker _ time/qs . execution _ count/1000 as[平均cpu时间(毫秒)],last _ execution _ time as[上次执行时间],max _ worker _ time/1000 as[最大执行时间(毫秒)],子串(qt.text,qs . statement _ start _ offset/offset (情况当qs . statement _ end _ offset =-1 then datalength(qt . text)else qs . statement _ end _ offset end-qs . statement _ start _ offset)/2 1)as[语法使用cpu]、qt . text[完整语法]、qt.dbid、dbname = db _ name (qt.dbid)、qt.objectid、object _ name (qt.objectid、qt . dbid)object name from sys.dm _ exec _ query _ stats qs with(no lock)交叉应用sys . dm 1和最后执行时间& gtdateadd(dd,-5,getdate())order by total _ worker _ time desc

41.查询平均cpu消耗最多的前3条sql,最近5个小时出现过。

select 3 total _ worker _ time/1000 as[总cpu时间(毫秒)],execution _ count[运行次数],qs . total _ worker _ time/qs . execution _ count/1000 as[平均cpu时间(毫秒)],last _ execution _ time as[上次执行时间],min _ worker _ time/1000 as[最小执行时间(毫秒)],max _ worker _ time/1000 as[最大执行时间(毫秒)],substring(qt.text,qs.statement_start_offset/2 1和最后执行时间& gtdateadd(hh,-5,getdate())order by(qs . total _ worker _ time/qs . execution _ count/1000)desc

42.检查当前前10个sql及其spid。

select top 10session_id,request_id,start _ time as & # 39开始时间& # 39;,状态为& # 39;地位& # 39;,命令为& # 39;命令& # 39;,d _ sql.text as & # 39sql语句& # 39;,db _ name(database _ id)as & # 39;数据库名称& # 39;,blocking _ session _ id as & # 39阻止其他会话的会话& # 39,wait _ type as & # 39等待资源类型& # 39;,wait _ time as & # 39等待时间& # 39;,wait _ resource as & # 39等待资源& # 39;,读作& # 39;物理读数的数量& # 39;,写作为& # 39;写时间& # 39;,逻辑_读作& # 39;逻辑读取次数& # 39;,row _ count as & # 39返回行数& # 39;from sys . dm _ exec _ requests as d _ request cross apply sys . dm _ exec _ sql _ text(d _ request . sql _ handle)as d _ sql where session _ id & gt;50 order by cpu _ time desc——前50个session _ ids一般是系统后台进程,sys.dm_exec_requests的状态显示为background43。查询哪些作业调用了存储过程。

select * from msdb . dbo . sys jobs job with(no lock)inner join msdb。dbo.sysjobsteps stp和stp上的(nolock)。job_id =作业。job_idwhere stp。命令如n & # 39% sp _ name % & # 39-要查询调用了哪个作业,只需将sp_name存储过程的名称更改为job_name的作业名称

44.执行作业的命令

执行msdb . dbo . sp _ start _ job n & # 39;job _ name & # 39

45.查询表标识列的列名。

select column _ name from information _ schema . columns其中table _ name = & # 39表名& # 39;和column property(object _ id(& # 39;表名& # 39;)、column_name、& # 39;isidentity & # 39)=1

46.获取标识列的种子值。

select ident _ seed(& # 39;表名& # 39;) 47.获取标识列的增量。

选择识别incr(& # 39;表名& # 39;)

48.获取指定表中最后生成的标识值。

选择ident _ current(& # 39;表名& # 39;)

49.将身份种子值重置为xx。

dbccheck ident(表名,重新播种,xx)

50.升级之前,请查询服务器名称、实例名称和版本号。

选择server property(& # 39;机器名& # 39;)、@@servername,server property(& # 39;版本& # 39;),@@version

51.grant操作授予用户的权限

使用dbname exec sp _ help protect @ username = & # 39;用户名& # 39;52.授予用户执行数据库sp的权限。

use dbname grant execute to & # 34用户名& # 34;

53.永远在线

-检查集群中每个节点的信息,包括节点成员的名称、类型、状态和投票仲裁号。select * from sys . dm _ hadr _ cluster _ members;-查看集群中每个节点的信息,包括节点成员名称和节点成员上的sql实例名称select * from sys . dm _ hadr _ instance _ node _ map-查看wsfc(windows server故障转移集群)的信息,包括集群名称、仲裁类型和仲裁状态select * from sys . dm _ hadr _ cluster;-查看ag名称select * from sys . dm _ hadr _ name _ id _ map-查看集群中每个节点的子网信息,包括节点成员名称、子网段和子网掩码select * from sys . dm _ hadr _ cluster _ networks;-检查监听ip select * from sys . ail ability _ group _ listeners;-检查主节点和从节点的状态select d.is _ local,dc.database _ name,d.synchronization _ health _ desc,d.synchronization _ state _ desc,d . database _ state _ desc from sys . dm _ hadr _ database _ replica _ states d . join sys . ail ability _ databases _ cluster dc on d . group _ database _ id = dc . group _ database _ id;-检查二级副本(传说中的从机)延迟了多少m log。select db _ name (database _ id),log _ send _ queue _ size/1024 delay _ m,* from sys . dm _ hadr _ database _ replica _ states其中is _ primary _ replica = 0;select ar.replica_server_name,db_name(drs.database_id),drs.truncation_lsn,drs.log_send_queue_size,drs . redo _ queue _ size from sys . dm _ hadr _ database _ replica _ states drs join sys . ail ability _ replicas ar on drs . replica _ id = ar . replica _ id其中drs . is _ local = 0;select ar.replica_server_name、db_name(drs.database_id)、drs.truncation_lsn、drs.log_send_queue_size、drs.log_send_rate、drs.redo_queue_size、drs . redo _ rate from sys . dm _ hadr _ database _ replica _ states drs join sys . ail ability _ replicas ar on drs . replica _ id = ar . replica _ id其中drs . is _ local = 0-log _ send _ queue _ size主数据库中尚未发送到的日志记录

54.查询实例的文件流使用的directory_name

选择server property(& # 39;filestreamsharename & # 39)

5.查询filetable表的数据库对应的directory_name。

select _ name (database _ id),* from sys . database _ filestream _ options当只使用filestream函数时,数据库不需要相应的directory_name

56.查询filetable对应的directory_name。

select object_name(object_id),* from sys.filetables

57.在文件表testdb.dbo.table1中查询文件的完整路径名

select filetablerootpath() [file _ stream]。getfilenamespacepath(),name from testdb.dbo.table158 .查询所有作业的状态是否为正在运行select sj.name,case当sja.start _ execution _ date为空时则& # 39;不跑& # 39;当sja.start_execution_date不为空且sja.stop_execution_date为空时,则& # 39;跑步& # 39;当sja.start_execution_date不为空且sja.stop_execution_date不为空时,则& # 39;不跑& # 39;结尾为& # 39;runstatus & # 39from msdb . dbo . sysjobs sj join msdb . dbo . sysjobactivity sja on sj . job _ id = sja . job _ id其中session _ id =(select max(session _ id)from msdb . dbo . sysjobactivity)order by run status desc;59.锁定手表的四种用途

在tablockx select * from table with(tablockx)查询过程中,在查询过程结束之前,其他会话无法查询和更新此表。在ta block select * from table with(ta block)查询过程中,其他会话可以查询,但不能更新此表。直到查询过程结束hold lock select * from table with(hold lock)。在查询过程中,其他会话可以查询,但不能更新该表。在查询过程结束之前,其他会话可以查询和更新该表

60.查询已发布的xx,已发布的数据库对象的两种方法

在发布数据库上执行(数据源:这三个表:distribution . dbo . ms publications,distribution.dbo.msarticles,sysarticle columns)select a . article,a.source _ object,a.destination _ object,b.colid from (select article,article_id,source _ object,destination _ object from[distribution].【dbo】。ms articles where publication_id in(从[distribution]中选择publication _ id)。【dbo】。mspublications,其中publication = & # 39xx & # 39))内部联接(select * from replicate 1 . dbo . sysarticlecolumns)b on a . article _ id = b . artid order by a . article订阅数据库执行select distinct article from ms replication _ objects where publication = & # 39;xx & # 3961.查询发布信息,发布名称,发布名称对应的发布序列号。

select * from distribution . dbo . ms publications

62.查询发布名称中发布对象的信息,包括表、视图、存储过程等。

select * from distribution . dbo . ms articles

63.监视发布和订阅是否有异常,只需执行以下五条语句。

从[分配]中选择*。【dbo】。[mslogreader_history]其中错误id!= 0且[时间]& gt;= dateadd(hour,-1,getdate())select * from[distribution]。【dbo】。[msdistribution_history]其中error_id!= 0且[时间]& gt;= dateadd(hour,-1,getdate())select * from[distribution]。【dbo】。[mssnapshot_history]其中错误id!= 0且[时间]& gt;= dateadd(hour,-1,getdate())select * from[distribution]。【dbo】。ms repl _ errors order by 2 desc select * from msdb . dbo . sysreplicationalerts order by 7 desc

64.查询xx表的索引信息。

select a.name index_name,c.name table_name,d . name column _ name from sysindexes a join sysindexkeys b on a . id = b . id and a . indid = b . indid join sys objects c on b . id = c . id join sys columns d on b . id = d . id = and b . colid = d . colid其中a.indid not in(0,255)and c . name in(& # 39;xx & # 39)

65.生成sql语句的执行计划(以select xxx为例。当然,select xxx也可以替换为exec pro_xxx之类的执行存储过程,只生成执行计划,不生成结果集,不执行存储过程)

将showplan_all设置为on;go select xxx go set showplan _ all off;或者将showplan_xml设置为on;go select xxx go set showplan _ xml off;去吧

66.查询名为xxx的作业的上次成功时间。

select top 1 convert(datetime,rtrim(run _ date)) ((run _ time/10000 * 3600) ((run _ time % 10000)/100 * 60) (run _ time % 10000)% 100)/(86399.9964)from msdb . dbo . sysjobhistory job他的内部联接jobhis.job_id = jobs.job_id和jobhis.step_id =上的msdb . dbo . sysjob his . jobs作业xxx & # 39订单1说明67。查询已分区表的总数和大小,例如,表是crm。电子邮件日志

exec sp _ spaceused & # 39crm。emaillog & # 39;

68.查询一个分区表的信息,每个分区有多少行,比如表是crm。电子邮件日志

select convert(varchar(50),ps.name ) as partition_scheme,p.partition_number,convert(varchar(10),ds2.name ) as filegroup,convert(varchar(19),isnull(v.value,& # 39;'),120)作为range_boundary,str(p.rows,9)作为sys.indexes中的行i join sys . partition _ schemes ps on i . data _ space _ id = ps . data _ space _ id join sys . destination _ data _ spaces dds on ps . data _ space _ i d = dds . partition _ scheme _ id join sys . data _ spaces ds2 on dds . data _ space _ id = ds2 . data _ space _ id join sys . partitions p on dds . destination _ id = p . partition _ number and p . object _ idpart tion _ range _ values v on pf . function _ id = v . function _ id和v . boundary _ id = p . partition _ number-pf . boundary _ value _ on _ right其中i . object _ id = object _ id(& # 39;crm。emaillog & # 39)和i.index_id按p.partition_number
的(0,1)顺序排列

69.查询分区函数

select * from sys . partition _ functions

70.请检查分区架构。

select * from sys . partition _ schemes

71.查询ssis包的信息

select * from msdb . dbo . sysssispackages

72.查询表中索引的大小。下面的示例表是dbo.table1

select i.name as indexname,sum(page _ count * 8)as indexsize kb from sys . dm _ db _ index _ physical _ stats(db _ id(),object _ id(& # 39;dbo.table1 & # 39),null,null,& # 39;详细& # 39;)as s join sys . indexes as i on s .[object _ id]= i .[object _ id]and s . index _ id = i . index _ id group by i . name order by i . name

73.重建表上的所有索引。

alter index all on table _ name rebuild with(online = on)重建表的索引alter index index _ name on table _ name rebuild with(online = on)重新组织表的所有索引alter index all on table _ name重新组织表的索引alter index index _ name on table _ name reorganize

74.检查数据文件是否可以收缩空。有关结果,请参见ailabesize _ mb字段的值。

select name,size*8/1024 as totalsize_mb,cast(fileproperty(name,& # 39;已用空间& # 39;)as int)*8/1024 as usedsize_mb,size * 8/1024-cast(file property(name,& # 39;已用空间& # 39;)as int)* 8/1024 as ailable size _ mb from sys . master _ files其中database _ id = db _ id(n & # 39;dbname & # 3975.查询一个表中所有索引的信息declare @ tablename varchar(50)= & # 39;lbalistallertdetail & # 39;declare @ tableid int select @ tableid = object _ id from sys . objects where name = @ tablename select object _ name(ix。object_id) table_name,ix.name as index_name,ix.type_desc index_type,sum(ps。[used _ page _ count])* 8 indexsize kb,ixus.user_seeks as numofseeks,ixus.user_scans as numofscans,ixus . user _ lookups as numoflookups,ixus . user _ updates as numofupdates,ixus.last_user_seek as lastseek,ixus.last_user_scan as lastscan,ixus . last _ user _ lookup as last lookup,ixus . last _ user _ update as last update from sys . indexes ix

ixus.index_id = ix.index_id和ixus上的内部联接sys . dm _ db _ index _ usage _ stats ixus。object_id = ix。对象标识

ps.object_id=ix.object_id上的内部联接sys.dm_db_partition_stats ps

其中objectproperty(ix。object_id,& # 39;i可断言& # 39;) = 1

和九。object_id = @tableid

按对象名分组(ix。object_id)、ix.name、ix.type_desc、ixus.user_seeks、ixus.user_scans、ixus.user_lookups、ixus.user_updates、ixus.last_user_seek、ixus.last_user_scan、ixus.last_user_lookup、ixus.last_user_update

sqlserver中类似oracle的dba_source视图是sys.sql_modules。

76.查询一个数据库下磁盘容量最大的10个表。

如果存在,则使用xx(从tempdb中选择1..sysobjects,其中id = object _ id(& # 39;数据库..# tabname & # 39)和xtype = & # 39u & # 39)drop table # tabname go create table # tabname(table _ name varchar(100),rowsnum varchar(100),reserved_size varchar(100),data_size varchar(100),index_size varchar(100),unused _ size varchar(100))declare @ name varchar(100)declare cur cur cursor for select name from sys objects where xtype = & # 39;u & # 39order by name open cur fetch next from cur into @ name while @ @ fetch _ status = 0 begin insert into # tabname exec sp _ space used @ name fetch next from cur into @ name end close cur deallocate cur select top 10 table _ name,data_size,rowsnum,index_size,unused _ size,reserved _ size,convert (int,substring (data _ size,0,len(data _ size)-2)size from # tabname order by size desc或select top 10 a.tablename,a.schemaname,sum(a.totalspacemb p.rows作为行数,sum(a.total_pages) * 8作为totalspacekb,cast(round((sum(a . total _ pages)* 8)/1024.00),2)作为数值(36,2))作为totalspacemb,sum(a.used_pages) * 8作为usedspacekb,cast(round((sum(a . used _ pages)* 8)/1024.00),2)作为数值(36,2))作为usedspacemb,(sum(a.total_pages) – sum dt % & # 39且t.is_ms_shipped = 0且i . object _ id & gt25 group by t. name,s. name,p. rows) a group by a. tablename,a. schemaname order by sum (a .总空间mb)desc——这个比最后一个专业好。77.查询数据库中是否有创建索引& # 39; name char(10)select & # 39;使用& # 39; name char(10) & # 39;select db_name(),object_name(object_id),definition from & # 39 name & # 39;. sys . sql _ modules where object property(object _ id,& # 39;'isprocedure & # 39')= 1和定义like & # 39'% online % = % on % & # 39'像& # 39;'% index % & # 39''来自sys.databases

78.根据id号查询数据库名称

db _ name (18)根据id号查询一个对象名select object _ name(1769220894)79。100%检查收缩进度。该语句应该在指定的数据库下执行。

select db _ name(database _ id)as exec _ db,percent_complete,case when estimated _ completion _ time & lt;36000000然后& # 39;0'else & # 39'end rtrim(estimated _ completion _ time/1000/3600) & # 39;:' 右(& # 39;0' rtrim((estimated _ completion _ time/1000)% 3600/60),2) & # 39;:' 右(& # 39;0' rtrim((estimated _ completion _ time/1000)% 60),2)作为[剩余时间],b.text作为tsql,*from sys。dm _ exec _ requestscross apply sys . dm _ exec _ sql _ text(sql _ handle)as b where命令like & # 39dbccfilescompact % & # 39-and database _ id = db _ id(& # 39;cardorder & # 39)由2 desc订购

80.检查索引重组的100%进度。

select db _ name(database _ id)as exec _ db,percent_complete,case when estimated _ completion _ time & lt;36000000然后& # 39;0'else & # 39'end rtrim(estimated _ completion _ time/1000/3600) & # 39;:' 右(& # 39;0' rtrim((estimated _ completion _ time/1000)% 3600/60),2) & # 39;:' 右(& # 39;0' rtrim((estimated _ completion _ time/1000)% 60),2)作为[剩余时间],b.text作为tsql,*from sys。dm _ exec _ requestscross apply sys . dm _ exec _ sql _ text(sql _ handle)as b where命令like & # 39% reorganize % & # 39-and database _ id = db _ id(& # 39;cardorder & # 39)由2 desc订购

81.检查存储过程的执行计划。

select d.object_id,db_name(d.database_id) dbname,object_name(object_id,database _ id)& # 39;spname & # 39、d.cached_time、d.last_execution_time、d . total _ elapsed _ time/1000000 as total _ elapsed _ time、d . total _ elapsed _ time/d.execution_count/1000000 as[g _ elapsed _ time]、d.last_elapsed_time、d . execution _ count、d.total_physical_reads、d.total_logical_writes、d.last_logical_readsxxxx & # 39按[total_worker_time] desc排序;

82.检查当前用户。

选择系统用户

83.查询ddl修改操作记录

-执行以下命令查找跟踪文件的目录和名称select * from sys.traces-使用sqlserver profiler工具打开跟踪文件,可以找到相关记录

原文链接:http://blog.itpub.net/30126024/viewspace-2638523/

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文链接:https://www.andon8.com/197303.html

网站地图