整理的一些T-sql(二)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:
None.gif这个存储过程的作用是自动生成编号,比如我们在数据库中有个**票编号字段,该存储过程可以生成格式为头(自己定义的一个头,比如AA)+日期(形如20070401)+6位递增整数(形如002254),并且每到了新的一年后面的6位整数便会归0重新开始。其中用到了动态执行sql的方法。参数有四个,需要给出表名称,字段名称,头和一个返回值。
None.gif =============================================
None.gif
-- Author: <vagerent>
None.gif--
Create date: <2006-12-14>
None.gif--
Description: <获取编码,形如HEAD20060512000001;(头+日期+6位整数)后面为六位,每新的一年编号重新
None.gif

None.gif归0
>
None.gif
-- =============================================
None.gif
Create PROCEDURE [ dbo ] . [ mp_GetPKNo ]
None.gif
@sTableName varchar (50 ),
None.gif
@sFieldName varchar (50 ), -- 目标字段
None.gif
@sHead varchar (50 ), -- 前缀,如Head等
None.gif
@sPK varchar (50 ) out -- 输出
None.gif

None.gif
AS
None.gif
BEGIN
None.gif
declare @dToday datetime , @sToday varchar (10 ),
None.gif
@sYear varchar (10 ), @sSubID varchar (20 ), @sSql nvarchar (1000 ); -- 动态sql一定要用
None.gif

None.gif
nvarchar !!!
None.gif
None.gif
set @dToday = getdate ();
None.gif
set @sToday = Convert ( varchar , Year ( @dToday ))
None.gif
+ SubString ( Convert ( varchar , Month ( @dToday ) +100 ),2 ,2 )
None.gif
+ SubString ( Convert ( varchar , Day ( @dToday ) +100 ),2 ,2 );
None.gif
-- select @sToday--形如20060512
None.gif
set @sYear = Convert ( varchar (10 ), Year ( getdate ()))
None.gif
-- select @sYear--形如2006
None.gif

None.gif
declare @sHead1 varchar (30 ), @iHeadLength int ;
None.gif
set @sHead1 = @sHead + @sYear ; -- 形如HEAD2006
None.gif
-- select @sHead1;--形如HEAD2006
None.gif
set @iHeadLength = Len ( @sHead1 );
None.gif
-- select @iHeadLength;--形如6
None.gif
set @sSql = N ' select @sSubID=Max(SubString( '
None.gif
+ @sFieldName + ' , ' + Convert ( varchar (10 ), @iHeadLength +5 ) + ' ,6)) from '
None.gif
+ @sTableName + ' where SubString( ' + @sFieldName + ' ,1, '
None.gif
+ Convert ( varchar (10 ), @iHeadLength ) + ' )= ''' + @sHead1 + '''' ;
None.gif
-- select @sSql;--形如selectdot.gif..
None.gif
exec sp_executesql @sSql ,N ' @sSubID varchar(20) output ' , @sSubID output;
None.gif
None.gif
if (( @sSubID = '' ) or ( @sSubID is null ))
None.gif
set @sSubID = ' 000001 '
None.gif
else
None.gif
begin
None.gif
declare @iSubID int ;
None.gif
set @iSubID = Convert ( int , @sSubID ) +1000001 ;
None.gif
set @sSubID = SubString ( Convert ( varchar , @iSubID ),2 ,6 )
None.gif
end
None.gif
-- select @sSubID;
None.gif
set @sPK = @sHead + @sToday + @sSubID ;
None.gif
None.gif
return
None.gif
END
-- Demo 1:
None.gif
use northwind
None.gif
go
None.gif
set statistics IO on
None.gif
go
None.gif
select count ( * ) from northwind.dbo.employees
None.gif
go
None.gif
set statistics IO off
None.gif
go
None.gif
None.gif
use northwind
None.gif
go
None.gif
exec sp_spaceused employees
None.gif
go
None.gif
None.gif
-- Demo 2:
None.gif
set statistics time on
None.gif
go
None.gif
select count ( * ) from northwind.dbo.employees
None.gif
go
None.gif
set statistics time off
None.gif
go
None.gif
None.gif
-- Demo 3:
None.gif
set showplan_text on
None.gif
go
None.gif
select count ( * ) from northwind.dbo.employees
None.gif
go
None.gif
set showplan_text off
None.gif
go
None.gif
None.gif
-- Demo 4:
None.gif
set nocount on
None.gif
go
None.gif
select count ( * ) from northwind.dbo.employees
None.gif
go
None.gif
set nocount off
None.gif
go
None.gif
None.gif
None.gif
-- Demo 5查询单条sql语句的执行时间:
None.gif
declare @start_time datetime
None.gif
select @start_time = getdate ()
None.gif
select * from northwind.dbo.employees
None.gif
select ' 查询语句的执行时间(毫秒) ' = datediff (ms, @start_time , getdate ())
None.gif
None.gif
-- Demo 6查询成批的sql语句的执行时间:
None.gif
create table #save_time(start_time datetime not null )
None.gif
insert #save_time values ( getdate ())
None.gif
go
None.gif
select * from employees
None.gif
go
None.gif
select * from orders
None.gif
go
None.gif
select ' 查询语句的执行时间(毫秒) ' = datediff (ms,start_time, getdate ())
None.gif
from #save_time
None.gif
drop table #save_time
None.gif
go
None.gif
None.gif
-- Demo 7返回语句的执行计划内容:
None.gif
set showplan_all on
None.gif
go
None.gif
select * from pubs.dbo.authors
None.gif
go
None.gif
set showplan_all off
None.gif
go
None.gif
None.gif
-- Demo 8从执行计划判断是否需要优化SQL:
ExpandedBlockStart.gifContractedBlock.gif
/**/ /*SEEK操作*/
None.gif
set showplan_all on
None.gif
go
None.gif
select * from pubs.dbo.sales where stor_id >= ' 7131 '
None.gif
go
None.gif
set showplan_all off
None.gif
go
ExpandedBlockStart.gifContractedBlock.gif
/**/ /*SCAN操作*/
None.gif
set showplan_all on
None.gif
go
None.gif
select * from pubs.dbo.sales where ord_date is not null
None.gif
go
None.gif
set showplan_all off
None.gif
go
None.gif
None.gif
-- Demo 9连接查询VS子查询:
ExpandedBlockStart.gifContractedBlock.gif
/**/ /*子查询*/
None.gif
set statistics io on
None.gif
go
None.gif
select au_fname,au_lname from pubs.dbo.authors where au_id in
None.gif(
select au_id from pubs.dbo.titleauthor)
None.gif
set statistics io off
None.gif
go
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**/ /*连接查询*/
None.gif
set statistics io on
None.gif
go
None.gif
select distinct au_fname,au_lname from pubs.dbo.authors as a inner join
None.gifpubs.dbo.titleauthor
as t on a.au_id = t.au_id
None.gif
go
None.gif
set statistics io off
None.gif
go
None.gif
None.gif
-- Demo 10智能优化:
None.gif
select p1.productname from northwind.dbo.products as p1 inner join
None.gifnorthwind.dbo.products
as p2 on (p1.unitprice = p2.unitprice)
None.gif
where p2.productname like ' Alice% '
None.gif
1. 查看数据库的版本
None.gif select @@version
None.gif
None.gif 常见的几种SQL SERVER打补丁后的版本号:
None.gif
None.gif 8.00. 194 Microsoft SQL Server 2000
None.gif 8.00. 384 Microsoft SQL Server 2000 SP1
None.gif 8.00. 532 Microsoft SQL Server 2000 SP2
None.gif 8.00. 760 Microsoft SQL Server 2000 SP3
None.gif 8.00. 818 Microsoft SQL Server 2000 SP3 w / Cumulative Patch MS03 - 031
None.gif 8.00. 2039 Microsoft SQL Server 2000 SP4
None.gif
None.gif 2. 查看数据库所在机器操作系统参数
None.gif exec master..xp_msver
None.gif
None.gif 3. 查看数据库启动的参数
None.gif sp_configure
None.gif
None.gif 4. 查看数据库启动时间
None.gif select convert( varchar( 30),login_time, 120) from master..sysprocesses where spid = 1
None.gif
None.gif 查看数据库服务器名和实例名
None.gif print ' Server Namedot.gifdot.gifdot.gifdot.gifdot.gif: ' + convert( varchar( 30), @@SERVERNAME)
None.gif print ' Instancedot.gifdot.gifdot.gifdot.gifdot.gifdot.gif: ' + convert( varchar( 30), @@SERVICENAME)
None.gif
None.gif 5. 查看所有数据库名称及大小
None.gif sp_helpdb
None.gif
None.gif 重命名数据库用的SQL
None.gif sp_renamedb ' old_dbname ', ' new_dbname '
None.gif
None.gif 6. 查看所有数据库用户登录信息
None.gif sp_helplogins
None.gif
None.gif 查看所有数据库用户所属的角色信息
None.gif sp_helpsrvrolemember
None.gif
None.gif 修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程
None.gif
None.gif 更改某个数据对象的用户属主
None.gif sp_changeobjectowner [ @objectname = ] ' object ', [ @newowner = ] ' owner '
None.gif
None.gif 注意: 更改对象名的任一部分都可能破坏脚本和存储过程。
None.gif
None.gif 把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本
None.gif
None.gif 查看某数据库下,对象级用户权限
None.gif sp_helprotect
None.gif
None.gif 7. 查看链接服务器
None.gif sp_helplinkedsrvlogin
None.gif
None.gif 查看远端数据库用户登录信息
None.gif sp_helpremotelogin
None.gif
None.gif 8.查看某数据库下某个数据对象的大小
None.gif sp_spaceused @objname
None.gif
None.gif 还可以用sp_toptables过程看最大的N(默认为50)个表
None.gif
None.gif 查看某数据库下某个数据对象的索引信息
None.gif sp_helpindex @objname
None.gif
None.gif 还可以用SP_NChelpindex过程查看更详细的索引情况
None.gif SP_NChelpindex @objname
None.gif
None.gif clustered索引是把记录按物理顺序排列的,索引占的空间比较少。
None.gif 对键值DML操作十分频繁的表我建议用非clustered索引和约束,fillfactor参数都用默认值。
None.gif
None.gif 查看某数据库下某个数据对象的的约束信息
None.gif sp_helpconstraint @objname
None.gif
None.gif 9.查看数据库里所有的存储过程和函数
None.gif use @database_name
None.gif sp_stored_procedures
None.gif
None.gif 查看存储过程和函数的源代码
None.gif sp_helptext ' @procedure_name '
None.gif
None.gif 查看包含某个字符串 @str的数据对象名称
None.gif select distinct object_name(id) from syscomments where text like ' %@str% '
None.gif
None.gif 创建加密的存储过程或函数在AS前面加WITH ENCRYPTION参数
None.gif
None.gif 解密加密过的存储过程和函数可以用sp_decrypt过程
None.gif
None.gif 10.查看数据库里用户和进程的信息
None.gif sp_who
None.gif
None.gif 查看SQL Server数据库里的活动用户和进程的信息
None.gif sp_who ' active '
None.gif
None.gif 查看SQL Server数据库里的锁的情况
None.gif sp_lock
None.gif
None.gif 进程号1 -- 50是SQL Server系统内部用的,进程号大于50的才是用户的连接进程.
None.gif

None.gif spid是进程编号,dbid是数据库编号,objid是数据对象编号
None.gif
None.gif 查看进程正在执行的SQL语句
None.gif dbcc inputbuffer ()
None.gif
None.gif 推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的SQL语句
None.gif sp_who3
None.gif
None.gif 检查死锁用sp_who_lock过程
None.gif sp_who_lock
None.gif
None.gif 11.查看和收缩数据库日志文件的方法
None.gif
None.gif 查看所有数据库日志文件大小
None.gif dbcc sqlperf(logspace)
None.gif
None.gif 如果某些日志文件较大,收缩简单恢复模式数据库日志,收缩后 @database_name_log的大小单位为M
None.gif backup log @database_name with no_log
None.gif dbcc shrinkfile ( @database_name_log, 5)
None.gif
None.gif 12.分析SQL Server SQL 语句的方法:
None.gif
None.gif set statistics time { on | off}
None.gif
None.gif set statistics io { on | off}
None.gif
None.gif 图形方式显示查询执行计划
None.gif
None.gif 在查询分析器 ->查询 ->显示估计的评估计划(D) -Ctrl -L 或者点击工具栏里的图形
None.gif
None.gif 文本方式显示查询执行计划
None.gif
None.gif set showplan_all { on | off}
None.gif
None.gif set showplan_text { on | off }
None.gif
None.gif set statistics profile { on | off }
None.gif
None.gif
None.gif 13.出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法
None.gif
None.gif 先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作
None.gif
None.gif alter database [ @error_database_name ] set single_user
None.gif
None.gif 修复出现不一致错误的表
None.gif
None.gif dbcc checktable( ' @error_table_name ',repair_allow_data_loss)
None.gif
None.gif 或者可惜选择修复出现不一致错误的小型数据库名
None.gif
None.gif dbcc checkdb( ' @error_database_name ',repair_allow_data_loss)
None.gif
None.gif alter database [ @error_database_name ] set multi_user
None.gif
None.gif CHECKDB 有3个参数:
None.gif
None.gif repair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,
None.gif 以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。
None.gif 修复操作可以在用户事务下完成以允许用户回滚所做的更改。
None.gif 如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。
None.gif 如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。
None.gif 修复完成后,请备份数据库。
None.gif
None.gif repair_fast 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。
None.gif 这些修复可以很快完成,并且不会有丢失数据的危险。
None.gif
None.gif repair_rebuild 执行由 repair_fast 完成的所有修复,包括需要较长时间的修复(如重建索引)。
None.gif 执行这些修复时不会有丢失数据的危险。
None.gif MS -SQL数据库开发常用汇总 1.按姓氏笔画排序:
None.gif Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as
None.gif 2.数据库加密:
None.gif select encrypt( ' 原始密码 ')
None.gif select pwdencrypt( ' 原始密码 ')
None.gif select pwdcompare( ' 原始密码 ', ' 加密后密码 ') = 1 -- 相同;否则不相同 encrypt('原始密码')
None.gif
select pwdencrypt( ' 原始密码 ')
None.gif select pwdcompare( ' 原始密码 ', ' 加密后密码 ') = 1 -- 相同;否则不相同
None.gif
3.取回表中字段:
None.gif declare @list varchar( 1000), @sql nvarchar( 1000)
None.gif select @list = @list + ' , ' +b.name from sysobjects a,syscolumns b where a.id =b.id and a.name = ' 表A '
None.gif set @sql = ' select ' + right( @list, len( @list) - 1) + ' from 表A '
None.gif exec ( @sql)
None.gif 4.查看硬盘分区:
None.gif EXEC master..xp_fixeddrives
None.gif 5.比较A,B表是否相等:
None.gif if ( select checksum_agg(binary_checksum( *)) from A)
None.gif =
None.gif( select checksum_agg(binary_checksum( *)) from B)
None.gif print ' 相等 '
None.gif else
None.gif print ' 不相等 '
None.gif 6.杀掉所有的事件探察器进程:
None.gif DECLARE hcforeach CURSOR GLOBAL FOR SELECT ' kill ' + RTRIM(spid) FROM master.dbo.sysprocesses
None.gif WHERE program_name IN( ' SQL profiler ',N ' SQL 事件探查器 ')
None.gif EXEC sp_msforeach_worker ' ? '
None.gif 7.记录搜索:
None.gif开头到N条记录
None.gif Select Top N * From
None.gif -- -----------------------------
None.gif
N到M条记录(要有主索引ID)
None.gif Select Top M -N * FromWhere ID in ( Select Top M ID From 表) Order by ID Desc
None.gif -- --------------------------------
None.gif
N到结尾记录
None.gif Select Top N * FromOrder by ID Desc
None.gif 8.如何修改数据库的名称:
None.gifsp_renamedb ' old_name ', ' new_name '
None.gif 9:获取当前数据库中的所有用户表
None.gif select Name from sysobjects where xtype = ' u ' and status >= 0
None.gif 10:获取某一个表的所有字段
None.gif select name from syscolumns where id = object_id( ' 表名 ')
None.gif 11:查看与某一个表相关的视图、存储过程、函数
None.gif select a. * from sysobjects a, syscomments b where a.id = b.id and b. text like ' %表名% '
None.gif 12:查看当前数据库中所有存储过程
None.gif select name as 存储过程名称 from sysobjects where xtype = ' P '
None.gif 13:查询用户创建的所有数据库
None.gif select * from master..sysdatabases D where sid not in( select sid from master..syslogins where name = ' sa ')
None.gif或者
None.gif select dbid, name AS DB_NAME from master..sysdatabases where sid < > 0x01
None.gif 14:查询某一个表的字段和数据类型
None.gif select column_name,data_type from information_schema.columns
None.gif where table_name = ' 表名 '
None.gif [ n ]. [ 标题 ]:
None.gif Select * From TableName Order By CustomerName
None.gif [ n ]. [ 标题 ]:
None.gif
None.gif快速获取表test的记录总数 :
None.gif select rows from sysindexes where id = object_id( ' test ') and indid in ( 0, 1)
None.gif提取数据库内所有表的字段详细说明的SQL语句 :
None.gif
None.gif SELECT
None.gif( case when a.colorder = 1 then d.name else '' end) N ' 表名 ',
None.gifa.colorder N ' 字段序号 ',
None.gifa.name N ' 字段名 ',
None.gif( case when COLUMNPROPERTY( a.id,a.name, ' IsIdentity ') = 1 then ' ' else ''
None.gif end) N ' 标识 ',
None.gif( case when ( SELECT count( *)
None.gif FROM sysobjects
None.gif WHERE (name in
None.gif( SELECT name
None.gif FROM sysindexes
None.gif WHERE (id = a.id) AND (indid in
None.gif( SELECT indid
None.gif FROM sysindexkeys
None.gif WHERE (id = a.id) AND (colid in
None.gif( SELECT colid
None.gif FROM syscolumns
None.gif WHERE (id = a.id) AND (name = a.name))))))) AND
None.gif(xtype = ' PK ')) > 0 then ' ' else '' end) N ' 主键 ',
None.gifb.name N ' 类型 ',
None.gifa.length N ' 占用字节数 ',
None.gif COLUMNPROPERTY(a.id,a.name, ' PRECISION ') as N ' 长度 ',
None.gif isnull( COLUMNPROPERTY(a.id,a.name, ' Scale '), 0) as N ' 小数位数 ',
None.gif( case when a.isnullable = 1 then ' ' else '' end) N ' 允许空 ',
None.gif isnull(e. text, '') N ' 默认值 ',
None.gif isnull(g. [ value ], '') AS N ' 字段说明 '
None.gif FROM syscolumns a
None.gif left join systypes b
None.gif on a.xtype =b.xusertype
None.gif inner join sysobjects d
None.gif on a.id =d.id and d.xtype = ' U ' and d.name <> ' dtproperties '
None.gif left join syscomments e
None.gif on a.cdefault =e.id
None.gif left join sysproperties g
None.gif on a.id =g.id AND a.colid = g.smallid
None.gif order by object_name(a.id),a.colorder
None.gif获取表结构 [ 把 'sysobjects' 替换 成 'tablename' 即可 ]
None.gif
None.gif SELECT CASE IsNull(I.name, '')
None.gif When '' Then ''
None.gif Else ' * '
None.gif End as IsPK,
None.gif Object_Name(A.id) as t_name,
None.gifA.name as c_name,
None.gif IsNull( SubString(M. text, 1, 254), '') as pbc_init,
None.gifT.name as F_DataType,
None.gif CASE IsNull( TYPEPROPERTY(T.name, ' Scale '), '')
None.gif WHEN '' Then Cast(A.prec as varchar)
None.gif ELSE Cast(A.prec as varchar) + ' , ' + Cast(A.scale as varchar)
None.gif END as F_Scale,
None.gifA.isnullable as F_isNullAble
None.gif FROM Syscolumns as A
None.gif JOIN Systypes as T
None.gif ON (A.xType = T.xUserType AND A.Id = Object_id( ' sysobjects ') )
None.gif LEFT JOIN ( SysIndexes as I
None.gif JOIN Syscolumns as A1
None.gif ON ( I.id = A1.id and A1.id = object_id( ' sysobjects ') and (I.status & 0x800) = 0x800 AND A1.colid <= I.keycnt) )
None.gif ON ( A.id = I.id AND A.name = index_col( ' sysobjects ', I.indid, A1.colid) )
None.gif LEFT JOIN SysComments as M
None.gif ON ( M.id = A.cdefault and ObjectProperty(A.cdefault, ' IsConstraint ') = 1 )
None.gif ORDER BY A.Colid ASC
None.gif四种方法取表里n到m条纪录:
None.gif
None.gif 1.
None.gif select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入
None.gif
set rowcount n
None.gif select * from 表变量 order by columnname desc
None.gif 2.
None.gif select top n * from ( select top m * from tablename order by columnname) a order by columnname desc
None.gif 3.如果tablename里没有其他identity列,那么:
None.gif select identity( int) id0, * into # temp from tablename
None.gif取n到m条的语句为:
None.gif select * from # temp where id0 >=n and id0 <= m
None.gif如果你在执行 select identity( int) id0, * into # temp from tablename这条语句的时候报错,那是因为你的DB中间的select into /bulkcopy属性没有打开要先执行:
None.gif exec sp_dboption 你的DB名字, ' select into/bulkcopy ',true
None.gif
None.gif
None.gif 4.如果表里有identity属性,那么简单:
None.gif select * from tablename where identitycol between n and m
None.gif
None.gif -- ------------------------------------------------------------------------------
None.gif

None.gif数据库管理常用SQL
None.gif
None.gif 1. 查看数据库的版本
None.gif select @@version
None.gif
None.gif 2. 查看数据库所在机器操作系统参数
None.gif exec master..xp_msver
None.gif
None.gif 3. 查看数据库启动的参数
None.gifsp_configure
None.gif
None.gif 4. 查看数据库启动时间
None.gif select convert( varchar( 30),login_time, 120) from master..sysprocesses where spid = 1
None.gif
None.gif查看数据库服务器名和实例名
None.gif print ' Server Namedot.gifdot.gifdot.gifdot.gifdot.gif: ' + convert( varchar( 30), @@SERVERNAME)
None.gif print ' Instancedot.gifdot.gifdot.gifdot.gifdot.gifdot.gif: ' + convert( varchar( 30), @@SERVICENAME)
None.gif 5. 查看所有数据库名称及大小
None.gifsp_helpdb
None.gif
None.gif重命名数据库用的SQL
None.gifsp_renamedb ' old_dbname ', ' new_dbname '
None.gif
None.gif 6. 查看所有数据库用户登录信息
None.gifsp_helplogins
None.gif
None.gif查看所有数据库用户所属的角色信息
None.gifsp_helpsrvrolemember
None.gif
None.gif修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程
None.gif
None.gif更改某个数据对象的用户属主
None.gifsp_changeobjectowner [ @objectname = ] ' object ', [ @newowner = ] ' owner '
None.gif
None.gif注意: 更改对象名的任一部分都可能破坏脚本和存储过程。
None.gif
None.gif把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本
None.gif
None.gif 7. 查看链接服务器
None.gifsp_helplinkedsrvlogin
None.gif
None.gif查看远端数据库用户登录信息
None.gifsp_helpremotelogin
None.gif
None.gif 8.查看某数据库下某个数据对象的大小
None.gifsp_spaceused @objname
None.gif
None.gif还可以用sp_toptables过程看最大的N(默认为50)个表
None.gif
None.gif查看某数据库下某个数据对象的索引信息
None.gifsp_helpindex @objname
None.gif
None.gif还可以用SP_NChelpindex过程查看更详细的索引情况
None.gifSP_NChelpindex @objname
None.gif
None.gifclustered索引是把记录按物理顺序排列的,索引占的空间比较少。
None.gif对键值DML操作十分频繁的表我建议用非clustered索引和约束,fillfactor参数都用默认值。
None.gif查看某数据库下某个数据对象的的约束信息
None.gifsp_helpconstraint @objname
None.gif
None.gif 9.查看数据库里所有的存储过程和函数
None.gif use @database_name
None.gifsp_stored_procedures
None.gif查看存储过程和函数的源代码
None.gifsp_helptext ' @procedure_name '
None.gif
None.gif查看包含某个字符串 @str的数据对象名称
None.gif select distinct object_name(id) from syscomments where text like ' %@str% '
None.gif
None.gif创建加密的存储过程或函数在AS前面加WITH ENCRYPTION参数
None.gif
None.gif解密加密过的存储过程和函数可以用sp_decrypt过程
None.gif
None.gif 10.查看数据库里用户和进程的信息
None.gifsp_who
None.gif查看SQL Server数据库里的活动用户和进程的信息
None.gifsp_who ' active '
None.gif查看SQL Server数据库里的锁的情况
None.gifsp_lock
None.gif
None.gif进程号1 -- 50是SQL Server系统内部用的,进程号大于50的才是用户的连接进程.
None.gif
spid是进程编号,dbid是数据库编号,objid是数据对象编号
None.gif查看进程正在执行的SQL语句
None.gif dbcc inputbuffer ()
None.gif
None.gif推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的SQL语句
None.gifsp_who3
None.gif
None.gif检查死锁用sp_who_lock过程
None.gifsp_who_lock
None.gif
None.gif 11.收缩数据库日志文件的方法
None.gif收缩简单恢复模式数据库日志,收缩后 @database_name_log的大小单位为M
None.gif backup log @database_name with no_log
None.gif dbcc shrinkfile ( @database_name_log, 5)
None.gif 12.分析SQL Server SQL 语句的方法:
None.gif
None.gif set statistics time { on | off}
None.gif set statistics io { on | off}
None.gif图形方式显示查询执行计划
None.gif
None.gif在查询分析器 ->查询 ->显示估计的评估计划(D) -Ctrl -L 或者点击工具栏里的图形
None.gif
None.gif文本方式显示查询执行计划
None.gif set showplan_all { on | off}
None.gif
None.gif set showplan_text { on | off }
None.gif set statistics profile { on | off }
None.gif
None.gif 13.出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法
None.gif
None.gif先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作
None.gif
None.gif alter database [ @error_database_name ] set single_user
None.gif
None.gif修复出现不一致错误的表
None.gif
None.gif dbcc checktable( ' @error_table_name ',repair_allow_data_loss)
None.gif
None.gif或者可惜选择修复出现不一致错误的小型数据库名
None.gif
None.gif dbcc checkdb( ' @error_database_name ',repair_allow_data_loss)
None.gif alter database [ @error_database_name ] set multi_user
None.gifCHECKDB 有3个参数:
None.gifrepair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,
None.gif以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。
None.gif修复操作可以在用户事务下完成以允许用户回滚所做的更改。
None.gif如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。
None.gif如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。
None.gif修复完成后,请备份数据库。
None.gifrepair_fast 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。
None.gif这些修复可以很快完成,并且不会有丢失数据的危险。
None.gifrepair_rebuild 执行由 repair_fast 完成的所有修复,包括需要较长时间的修复(如重建索引)。
None.gif执行这些修复时不会有丢失数据的危险。



本文转自高海东博客园博客,原文链接http://www.cnblogs.com/ghd258/archive/2006/07/14/450585.html,如需转载请自行联系原作者 
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
《SQL必知必会》个人笔记(一)
《SQL必知必会》个人笔记(一)
42 0
|
1月前
|
SQL XML Java
整理几个常用的sql和其他代码
整理几个常用的sql和其他代码
12 1
|
1月前
|
SQL Oracle 关系型数据库
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
11 0
|
2月前
|
SQL 存储 安全
《SQL必知必会》个人笔记(四)
《SQL必知必会》个人笔记(四)
32 0
|
2月前
|
SQL 关系型数据库 数据库
《SQL必知必会》个人笔记(三)
《SQL必知必会》个人笔记(三)
28 0
|
2月前
|
SQL 存储 Oracle
《SQL必知必会》个人笔记(二)
《SQL必知必会》个人笔记(二)
30 0
|
9月前
|
SQL
SQL书部分知识点总结
SQL书部分知识点总结
36 0
|
SQL XML Java
常用的几个sql整理
常用的几个sql整理
101 0
常用的几个sql整理
|
SQL Oracle 关系型数据库
SQL 进阶使用技巧(上)
SQL 进阶使用技巧(上)
|
SQL 存储 关系型数据库
《SQL必知必会》读书笔记,30分钟入门SQL!(四)
本篇文章是 《SQL 必知必会》 的读书笔记,SQL必知必会的英文名叫做 Sams Teach Yourself in 10 Minutes。但是,我肯定是不能够在10分钟就能学会本书所有涉及到的sql,所以就起个名字叫30分钟学会SQL语句。 目前手边的数据库是 mysql,所以以下示例均是由 mysql 演示。由于现在大部分工具都支持语法高亮,所以以下关键字都使用小写。
《SQL必知必会》读书笔记,30分钟入门SQL!(四)

热门文章

最新文章