-
--按姓氏笔画排序:
-
SELECT * FROM TableName ORDER BY CustomerName COLLATE Chinese_PRC_Stroke_ci_as
-
--数据库加密:
-
SELECT encrypt ( '原始密码' )
-
SELECT pwdencrypt ( '原始密码' )
-
SELECT pwdcompare ( '原始密码', '加密后密码' ) = 1 --相同;否则不相同 encrypt('原始密码')
-
SELECT pwdencrypt ( '原始密码' )
-
SELECT pwdcompare ( '原始密码', '加密后密码' ) = 1 --相同;否则不相同
-
--取回表中字段:
-
DECLARE @list VARCHAR ( 1000 ),@ SQL NVARCHAR ( 1000 )
-
SELECT @list =@list + ',' +b. name FROM sysobjects a,syscolumns b WHERE a. id =b. id and a. name = '表A'
-
SET @ SQL = 'select ' + RIGHT (@list, LEN (@list ) - 1 ) + ' from 表A'
-
EXEC (@ SQL )
-
--查看硬盘分区:
-
EXEC master.. xp_fixeddrives
-
--比较A,B表是否相等:
-
IF ( SELECT CHECKSUM_AGG ( BINARY_CHECKSUM ( * ) ) FROM A )
-
=
-
( SELECT CHECKSUM_AGG ( BINARY_CHECKSUM ( * ) ) FROM B )
-
PRINT '相等'
-
ELSE
-
PRINT '不相等'
-
--杀掉所有的事件探察器进程:
-
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill ' + RTRIM (spid ) FROM master. dbo. sysprocesses
-
WHERE program_name IN ( 'SQL profiler',N 'SQL 事件探查器' )
-
EXEC sp_msforeach_worker '?'
-
--记录搜索:
-
开头到N条记录
-
SELECT TOP N * FROM 表
-
-------------------------------
-
N到M条记录 (要有主索引ID )
-
SELECT TOP M -N * FROM 表 WHERE ID in ( SELECT TOP M ID FROM 表 ) ORDER BY ID DESC
-
----------------------------------
-
N到结尾记录
-
SELECT TOP N * FROM 表 ORDER BY ID DESC
-
--如何修改数据库的名称:
-
SP_RENAMEDB 'old_name', 'new_name'
-
--获取当前数据库中的所有用户表
-
SELECT Name FROM sysobjects WHERE xtype = 'u' and status >= 0
-
--获取某一个表的所有字段
-
SELECT name FROM syscolumns WHERE id = OBJECT_ID ( '表名' )
-
--查看与某一个表相关的视图、存储过程、函数
-
SELECT a. * FROM sysobjects a, syscomments b WHERE a. id = b. id and b. TEXT like '%表名%'
-
--查看当前数据库中所有存储过程
-
SELECT name AS 存储过程名称 FROM sysobjects WHERE xtype = 'P'
-
--查询用户创建的所有数据库
-
SELECT * FROM master.. sysdatabases D WHERE sid not in ( SELECT sid FROM master.. syslogins WHERE name = 'sa' )
-
或者
-
SELECT dbid, name AS DB_NAME FROM master.. sysdatabases WHERE sid <> 0x01
-
--查询某一个表的字段和数据类型
-
SELECT column_name,data_type FROM information_schema. columns
-
WHERE table_name = '表名'
-
[n ]. [标题 ]:
-
SELECT * FROM TableName ORDER BY CustomerName
-
[n ]. [标题 ]:
-
SELECT * FROM TableName ORDER BY CustomerName
-
--查看数据库的版本
-
SELECT @@VERSION
-
--查看数据库所在机器操作系统参数
-
EXEC master.. XP_MSVER
-
--查看数据库启动的参数
-
SP_CONFIGURE
-
--查看数据库启动时间
-
SELECT CONVERT ( VARCHAR ( 30 ),login_time, 120 ) FROM master.. sysprocesses WHERE spid = 1
-
查看数据库服务器名和实例名
-
PRINT 'Server Name...............: ' + CONVERT ( VARCHAR ( 30 ), @@SERVERNAME )
-
PRINT 'Instance..................: ' + CONVERT ( VARCHAR ( 30 ), @@SERVICENAME )
-
--查看所有数据库名称及大小
-
SP_HELPDB
-
重命名数据库用的 SQL
-
SP_RENAMEDB 'old_dbname', 'new_dbname'
-
--查看所有数据库用户登录信息
-
SP_HELPLOGINS
-
查看所有数据库用户所属的角色信息
-
SP_HELPSRVROLEMEMBER
-
修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程
-
更改某个数据对象的用户属主
-
SP_CHANGEOBJECTOWNER [@objectname = ] 'object', [@newowner = ] 'owner'
-
注意: 更改对象名的任一部分都可能破坏脚本和存储过程。
-
把一台服务器上的数据库用户登录信息备份出来可以用add_login_to_aserver脚本
---------------------------------------------------------------- --查看链接服务器
-
SP_HELPLINKEDSRVLOGIN
-
查看远端数据库用户登录信息
-
SP_HELPREMOTELOGIN
-
--查看某数据库下某个数据对象的大小
-
SP_SPACEUSED @objname
-
还可以用sp_toptables过程看最大的N (默认为 50 )个表
-
查看某数据库下某个数据对象的索引信息
-
SP_HELPINDEX @objname
-
还可以用SP_NChelpindex过程查看更详细的索引情况
-
SP_NChelpindex @objname
-
CLUSTERED索引是把记录按物理顺序排列的,索引占的空间比较少。
-
对键值DML操作十分频繁的表我建议用非 CLUSTERED索引和约束, FILLFACTOR参数都用默认值。
-
查看某数据库下某个数据对象的的约束信息
-
SP_HELPCONSTRAINT @objname
-
--查看数据库里所有的存储过程和函数
-
USE @database_name
-
SP_STORED_PROCEDURES
-
查看存储过程和函数的源代码
-
SP_HELPTEXT '@procedure_name'
-
查看包含某个字符串@ STR的数据对象名称
-
SELECT DISTINCT OBJECT_NAME (id ) FROM syscomments WHERE TEXT like '%@str%'
-
创建加密的存储过程或函数在 AS前面加 WITH ENCRYPTION参数
-
解密加密过的存储过程和函数可以用sp_decrypt过程
-
--查看数据库里用户和进程的信息
-
SP_WHO
-
查看 SQL Server数据库里的活动用户和进程的信息
-
SP_WHO 'active'
-
查看 SQL Server数据库里的锁的情况
-
SP_LOCK
-
进程号 1 --50是SQL Server系统内部用的,进程号大于50的才是用户的连接进程.
-
spid是进程编号,dbid是数据库编号,objid是数据对象编号
-
查看进程正在执行的 SQL语句
-
DBCC inputbuffer ( )
-
推荐大家用经过改进后的sp_who3过程可以直接看到进程运行的 SQL语句
-
sp_who3
-
检查死锁用sp_who_lock过程
-
sp_who_lock
-
--收缩数据库日志文件的方法
-
收缩简单恢复模式数据库日志,收缩后@database_name_log的大小单位为M
-
BACKUP LOG @database_name WITH no_log
-
DBCC shrinkfile (@database_name_log, 5 )
-
--分析SQL Server SQL 语句的方法:
-
SET STATISTICS TIME { ON | OFF }
-
SET STATISTICS io { ON | OFF }
-
图形方式显示查询执行计划
-
在查询分析器 ->查询 ->显示估计的评估计划 (D ) -Ctrl -L 或者点击工具栏里的图形
-
文本方式显示查询执行计划
-
SET showplan_all { ON | OFF }
-
SET showplan_text { ON | OFF }
-
SET STATISTICS profile { ON | OFF }
-
--出现不一致错误时,NT事件查看器里出3624号错误,修复数据库的方法
-
先注释掉应用程序里引用的出现不一致性错误的表,然后在备份或其它机器上先恢复然后做修复操作
-
ALTER DATABASE [@error_database_name ] SET single_user
-
修复出现不一致错误的表
-
DBCC checktable ( '@error_table_name',repair_allow_data_loss )
-
或者可惜选择修复出现不一致错误的小型数据库名
-
DBCC checkdb ( '@error_database_name',repair_allow_data_loss )
-
ALTER DATABASE [@error_database_name ] SET multi_user
-
CHECKDB 有 3个参数:
-
repair_allow_data_loss 包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,
-
以及删除已损坏的文本对象,这些修复可能会导致一些数据丢失。
-
修复操作可以在用户事务下完成以允许用户回滚所做的更改。
-
如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。
-
如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。
-
修复完成后,请备份数据库。
-
repair_fast 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。
-
这些修复可以很快完成,并且不会有丢失数据的危险。
-
repair_rebuild 执行由 repair_fast 完成的所有修复,包括需要较长时间的修复(如重建索引)。
-
执行这些修复时不会有丢失数据的危险。
/*
getdate() 获取当前时间,
datename(datepart,date) 返回datepart指定字符串格式的时间
datepart(datepart,date) 返回datepart指定字整形格式的时间
*/
select getdate (), datename (mm, getdate ()), datepart (mm, getdate ())
/* isdate(str) 为真返回1 为假则为0 */
select isdate ( ' 2009/1/02 ' )
select ceiling ( 12.3 ) -- 取最大整数
select floor ( 12.3 ) -- 取最小整数
select len ( getdate ()) -- 获取字符串长度
select left ( ' abcdef ' , 4 ), right ( 123456 , 4 ) -- left 获取字符串从左开始的指定长度
-- ---right 获取字符串从右边开始的指定长度
select substring ( ' abcdefghijklmn ' , 2 , 6 ) -- bcdefg 获取指定起点跟终点的长度
select replicate ( ' wk ' , 3 ) -- 按照指定次数复制字符串
select ltrim ( ' 123 ' ) , rtrim ( ' add ' ) -- 取出字符串左,右空格
select reverse ( ' abcde ' ) -- edcba 获取一个反序的字符串
-- ------------****数据库时间格式****----------------
select dateadd ( year , 2 , ' 2004-10-17 ' ) -- 加两年
select datediff ( day , ' 2006-10-10 ' , ' 2006-12-18 ' ) -- 判断天差
分类拼接字符串
---1、 建立临时表-- SELECT * INTO temp_CombineBuying FROM (SELECT b.ProviderTypeShortName,a.ProviderGUID,b.ProviderTypeCode FROM p_provider2Type a INNER JOIN p_ProviderType b ON a.ProviderTypeCode=b.ProviderTypeCode) t ----- 2、拼接字符串 --- SELECT ProviderGUID, stuff( (select ','+convert(varchar(25), ProviderTypeShortName) from temp_CombineBuying as t2 WHERE t2.ProviderGUID=t1.ProviderGUID FOR XML PATH('')), 1, 1, '' ) as ProviderTypeNameList INTO p_ProviderTypeNameList FROM temp_CombineBuying AS t1 GROUP BY ProviderGUID ----- 3、清除临时表 DROP TABLE temp_CombineBuying; DROP TABLE p_ProviderTypeNameList;