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

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

精妙sql语句二
AS
精妙sql语句二
BEGIN
精妙sql语句二    
declare @dToday datetime,@sToday varchar(10),
精妙sql语句二        
@sYear varchar(10),@sSubID varchar(20),@sSql nvarchar(1000);--动态sql一定要用
精妙sql语句二

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

精妙sql语句二   spid是进程编号,dbid是数据库编号,objid是数据对象编号 
精妙sql语句二
精妙sql语句二   查看进程正在执行的SQL语句 
精妙sql语句二   
dbcc inputbuffer () 
精妙sql语句二            
精妙sql语句二  推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的SQL语句 
精妙sql语句二   sp_who3 
精妙sql语句二    
精妙sql语句二  检查死锁用sp_who_lock过程 
精妙sql语句二   sp_who_lock     
精妙sql语句二        
精妙sql语句二       
11.查看和收缩数据库日志文件的方法 
精妙sql语句二        
精妙sql语句二          查看所有数据库日志文件大小           
精妙sql语句二          
dbcc sqlperf(logspace) 
精妙sql语句二  
精妙sql语句二          如果某些日志文件较大,收缩简单恢复模式数据库日志,收缩后
@database_name_log的大小单位为M 
精妙sql语句二   
backup log @database_name with no_log 
精妙sql语句二   
dbcc shrinkfile (@database_name_log5
精妙sql语句二
精妙sql语句二       
12.分析SQL Server SQL 语句的方法: 
精妙sql语句二        
精妙sql语句二   
set statistics time {on | off
精妙sql语句二
精妙sql语句二   
set statistics io {on | off
精妙sql语句二
精妙sql语句二           图形方式显示查询执行计划 
精妙sql语句二            
精妙sql语句二           在查询分析器
->查询->显示估计的评估计划(D)-Ctrl-L 或者点击工具栏里的图形 
精妙sql语句二            
精妙sql语句二           文本方式显示查询执行计划 
精妙sql语句二
精妙sql语句二   
set showplan_all {on | off
精妙sql语句二    
精妙sql语句二   
set showplan_text { on | off } 
精妙sql语句二
精妙sql语句二   
set statistics profile { on | off } 
精妙sql语句二    
精妙sql语句二  
精妙sql语句二       
13.出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法 
精妙sql语句二   
精妙sql语句二  先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作 
精妙sql语句二   
精妙sql语句二  
alter database [@error_database_name] set single_user 
精妙sql语句二   
精妙sql语句二  修复出现不一致错误的表 
精妙sql语句二   
精妙sql语句二  
dbcc checktable('@error_table_name',repair_allow_data_loss) 
精妙sql语句二   
精妙sql语句二  或者可惜选择修复出现不一致错误的小型数据库名 
精妙sql语句二   
精妙sql语句二  
dbcc checkdb('@error_database_name',repair_allow_data_loss) 
精妙sql语句二
精妙sql语句二  
alter database [@error_database_name] set multi_user 
精妙sql语句二
精妙sql语句二  CHECKDB 有3个参数: 
精妙sql语句二
精妙sql语句二  repair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误, 
精妙sql语句二  以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。 
精妙sql语句二  修复操作可以在用户事务下完成以允许用户回滚所做的更改。 
精妙sql语句二  如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。 
精妙sql语句二  如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。 
精妙sql语句二  修复完成后,请备份数据库。  
精妙sql语句二
精妙sql语句二  repair_fast 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。 
精妙sql语句二  这些修复可以很快完成,并且不会有丢失数据的危险。  
精妙sql语句二
精妙sql语句二  repair_rebuild 执行由 repair_fast 完成的所有修复,包括需要较长时间的修复(如重建索引)。 
精妙sql语句二  执行这些修复时不会有丢失数据的危险。  
精妙sql语句二 MS-SQL数据库开发常用汇总 1.按姓氏笔画排序:
精妙sql语句二
Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 
精妙sql语句二
2.数据库加密:
精妙sql语句二
select encrypt('原始密码')
精妙sql语句二
select pwdencrypt('原始密码')
精妙sql语句二
select pwdcompare('原始密码','加密后密码'= 1--相同;否则不相同 encrypt('原始密码')
精妙sql语句二
select pwdencrypt('原始密码')
精妙sql语句二
select pwdcompare('原始密码','加密后密码'= 1--相同;否则不相同
精妙sql语句二
3.取回表中字段:
精妙sql语句二
declare @list varchar(1000),@sql nvarchar(1000
精妙sql语句二
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
精妙sql语句二
set @sql='select '+right(@list,len(@list)-1)+' from 表A' 
精妙sql语句二
exec (@sql)
精妙sql语句二
4.查看硬盘分区:
精妙sql语句二
EXEC master..xp_fixeddrives
精妙sql语句二
5.比较A,B表是否相等:
精妙sql语句二
if (select checksum_agg(binary_checksum(*)) from A)
精妙sql语句二
=
精妙sql语句二(
select checksum_agg(binary_checksum(*)) from B)
精妙sql语句二
print '相等'
精妙sql语句二
else
精妙sql语句二
print '不相等'
精妙sql语句二
6.杀掉所有的事件探察器进程:
精妙sql语句二
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
精妙sql语句二
WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
精妙sql语句二
EXEC sp_msforeach_worker '?'
精妙sql语句二
7.记录搜索:
精妙sql语句二开头到N条记录
精妙sql语句二
Select Top N * From 表
精妙sql语句二
-------------------------------
精妙sql语句二
N到M条记录(要有主索引ID)
精妙sql语句二
Select Top M-* From 表 Where ID in (Select Top M ID From 表) Order by ID Desc
精妙sql语句二
----------------------------------
精妙sql语句二
N到结尾记录
精妙sql语句二
Select Top N * From 表 Order by ID Desc
精妙sql语句二
8.如何修改数据库的名称:
精妙sql语句二sp_renamedb 
'old_name''new_name' 
精妙sql语句二
9:获取当前数据库中的所有用户表
精妙sql语句二
select Name from sysobjects where xtype='u' and status>=0
精妙sql语句二
10:获取某一个表的所有字段
精妙sql语句二
select name from syscolumns where id=object_id('表名')
精妙sql语句二
11:查看与某一个表相关的视图、存储过程、函数
精妙sql语句二
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
精妙sql语句二
12:查看当前数据库中所有存储过程
精妙sql语句二
select name as 存储过程名称 from sysobjects where xtype='P'
精妙sql语句二
13:查询用户创建的所有数据库
精妙sql语句二
select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
精妙sql语句二或者
精妙sql语句二
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
精妙sql语句二
14:查询某一个表的字段和数据类型
精妙sql语句二
select column_name,data_type from information_schema.columns
精妙sql语句二
where table_name = '表名' 
精妙sql语句二
[n].[标题]:
精妙sql语句二
Select * From TableName Order By CustomerName 
精妙sql语句二
[n].[标题]:
精妙sql语句二

精妙sql语句二快速获取表test的记录总数 : 
精妙sql语句二
select rows from sysindexes where id = object_id('test'and indid in (0,1)
精妙sql语句二提取数据库内所有表的字段详细说明的SQL语句 :
精妙sql语句二sql2000
精妙sql语句二
SELECT 
精妙sql语句二(
case when a.colorder=1 then d.name else '' end) N'表名'
精妙sql语句二a.colorder N
'字段序号'
精妙sql语句二a.name N
'字段名'
精妙sql语句二(
case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' 
精妙sql语句二
end) N'标识'
精妙sql语句二(
case when (SELECT count(*
精妙sql语句二
FROM sysobjects 
精妙sql语句二
WHERE (name in 
精妙sql语句二(
SELECT name 
精妙sql语句二
FROM sysindexes 
精妙sql语句二
WHERE (id = a.id) AND (indid in 
精妙sql语句二(
SELECT indid 
精妙sql语句二
FROM sysindexkeys 
精妙sql语句二
WHERE (id = a.id) AND (colid in 
精妙sql语句二(
SELECT colid 
精妙sql语句二
FROM syscolumns 
精妙sql语句二
WHERE (id = a.id) AND (name = a.name))))))) AND 
精妙sql语句二(xtype 
= 'PK'))>0 then '' else '' end) N'主键'
精妙sql语句二b.name N
'类型'
精妙sql语句二a.length N
'占用字节数'
精妙sql语句二
COLUMNPROPERTY(a.id,a.name,'PRECISION'as N'长度'
精妙sql语句二
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0as N'小数位数'
精妙sql语句二(
case when a.isnullable=1 then ''else '' end) N'允许空'
精妙sql语句二
isnull(e.text,'') N'默认值'
精妙sql语句二
isnull(g.[value],''AS N'字段说明' 
精妙sql语句二
FROM syscolumns a 
精妙sql语句二
left join systypes b 
精妙sql语句二
on a.xtype=b.xusertype 
精妙sql语句二
inner join sysobjects d 
精妙sql语句二
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' 
精妙sql语句二
left join syscomments e 
精妙sql语句二
on a.cdefault=e.id 
精妙sql语句二
left join sysproperties g 
精妙sql语句二
on a.id=g.id AND a.colid = g.smallid 
精妙sql语句二
order by object_name(a.id),a.colorder
精妙sql语句二获取表结构
[把 'sysobjects' 替换 成 'tablename' 即可] 
精妙sql语句二sql2005
SELECT
(CASE WHEN a.colorder=1 THEN d.name ELSE '' END) N'表名',
a.colorder N'字段序号',
a.name N'字段名',
(CASE WHEN COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 THEN '√'ELSE '' END) N'标识',
(CASE WHEN (SELECT COUNT(*)
FROM sysobjects
WHERE (name in
            (SELECT name
           FROM sysindexes
           WHERE (id = a.id) AND (indid in
                     (SELECT indid
                    FROM sysindexkeys
                    WHERE (id = a.id) AND (colid in
                              (SELECT colid
                             FROM syscolumns
                             WHERE (id = a.id) AND (name = a.name))))))) AND
         (xtype = 'PK'))>0 THEN '√' ELSE '' END) N'主键',
b.name N'类型',
a.length N'占用字节数',
COLUMNPROPERTY(a.id,a.name,'PRECISION') AS N'长度',
ISNULL(COLUMNPROPERTY(a.id,a.name,'Scale'),0) AS N'小数位数',
(CASE WHEN a.isnullable=1 THEN '√'ELSE '' END) N'允许空',
ISNULL(e.text,'') N'默认值',
ISNULL(g.[value],'') AS N'字段说明'

FROM syscolumns a
LEFT JOIN systypes b on a.xtype=b.xusertype
INNER JOIN sysobjects d on a.id=d.id AND d.xtype='U' AND d.name<>'dtproperties'
LEFT JOIN syscomments e on a.cdefault=e.id
LEFT JOIN sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id 
WHERE
d.name = '表名'
ORDER BY
object_name(a.id), a.colorder

精妙sql语句二
SELECT CASE IsNull(I.name, ''
精妙sql语句二
When '' Then '' 
精妙sql语句二
Else '*' 
精妙sql语句二
End as IsPK, 
精妙sql语句二
Object_Name(A.id) as t_name, 
精妙sql语句二A.name 
as c_name, 
精妙sql语句二
IsNull(SubString(M.text1254), ''as pbc_init, 
精妙sql语句二T.name 
as F_DataType, 
精妙sql语句二
CASE IsNull(TYPEPROPERTY(T.name, 'Scale'), ''
精妙sql语句二
WHEN '' Then Cast(A.prec as varchar
精妙sql语句二
ELSE Cast(A.prec as varchar+ ',' + Cast(A.scale as varchar
精妙sql语句二
END as F_Scale, 
精妙sql语句二A.isnullable 
as F_isNullAble 
精妙sql语句二
FROM Syscolumns as A 
精妙sql语句二
JOIN Systypes as T 
精妙sql语句二
ON (A.xType = T.xUserType AND A.Id = Object_id('sysobjects') ) 
精妙sql语句二
LEFT JOIN ( SysIndexes as I 
精妙sql语句二
JOIN Syscolumns as A1 
精妙sql语句二
ON ( I.id = A1.id and A1.id = object_id('sysobjects'and (I.status & 0x800= 0x800 AND A1.colid <= I.keycnt) ) 
精妙sql语句二
ON ( A.id = I.id AND A.name = index_col('sysobjects', I.indid, A1.colid) ) 
精妙sql语句二
LEFT JOIN SysComments as M 
精妙sql语句二
ON ( M.id = A.cdefault and ObjectProperty(A.cdefault, 'IsConstraint'= 1 ) 
精妙sql语句二
ORDER BY A.Colid ASC
精妙sql语句二四种方法取表里n到m条纪录:
精妙sql语句二
精妙sql语句二
1.
精妙sql语句二
select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入
精妙sql语句二
set rowcount n
精妙sql语句二
select * from 表变量 order by columnname desc
精妙sql语句二
2.
精妙sql语句二
select top n * from (select top m * from tablename order by columnname) a order by columnname desc
精妙sql语句二
3.如果tablename里没有其他identity列,那么:
精妙sql语句二
select identity(int) id0,* into #temp from tablename
精妙sql语句二取n到m条的语句为:
精妙sql语句二
select * from #temp where id0 >=and id0 <= m
精妙sql语句二如果你在执行 
select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
精妙sql语句二
exec sp_dboption 你的DB名字,'select into/bulkcopy',true
精妙sql语句二
精妙sql语句二
精妙sql语句二
4.如果表里有identity属性,那么简单:
精妙sql语句二
select * from tablename where identitycol between n and m 
精妙sql语句二
精妙sql语句二
--------------------------------------------------------------------------------
精妙sql语句二

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

相关文章:

  • 2021-05-20
猜你喜欢
  • 2022-12-23
  • 2021-10-15
  • 2022-01-22
相关资源
相似解决方案