Archive

Archive for the ‘Database’ Category

Sql Server 查看执行效率低下的SQL语句

June 8th, 2010 Tony hu No comments
–在测试功能时,先以下命令清除sql server的缓存
–DBCC freeProcCache
–再点击按钮,执行完后,再执行下面语句,就可以知道系统运行什么Sql和多少次了,其主要慢语句是那些了;

SELECT creation_time N’语句编译时间’
,last_execution_time N’上次执行时间’
,total_physical_reads N’物理读取总次数’
,total_logical_reads/execution_count N’每次逻辑读次数’
,total_logical_reads N’逻辑读取总次数’
,total_logical_writes N’逻辑写入总次数’
,execution_count N’执行次数’
,total_worker_time/1000 N’所用的CPU总时间ms’
,total_elapsed_time/1000 N’总花费时间ms’
,(total_elapsed_time / execution_count)/1000 N’平均时间ms’
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) N’执行语句’
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
where SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) not like ‘%fetch%’
ORDER BY total_elapsed_time / execution_count DESC;

常用经典SQL语句

June 3rd, 2010 Tony hu No comments

1. 嵌套子查询

Select a,b,c from Table1 where a in (Select a from Table2)

2. 提前5分钟显示

Select * from Table1 where datediff(minute, Getdate(), 开始时间字段) <5

3. 显示文章、提交人和最后回复时间

Select A.title, A.username, B.adddate From tablename a, (Select max (adddate) adddate from tablename where tablename.title=a.title) B 备注:这个是从书上抄下来的,我觉得回复表应该和主表是不同的表,而且也不应该用 title 来关联,应该有文章ID来关联,这个不重要,重要的是打开思路就对了。呵呵

4. 将数字编码成汉字

SELECT Name,
checked=
case checked
when 1 then ‘已审核’
when 0 then ‘未审核’
end
FROM Customer
5. 只复制表结构
Select * into tableB from tableA where 1<>1

Select top 0 * into tableB from tableA
6.复制表数据
select * into New_Customer from customer (插入一个新表)

insert into CFM(Type,Vacuum) Select Name,custid from Customer (插入一个已存在的表,这个用法很灵活)
7.将数据表中的数据呈几何级的增涨。
insert into CFM(Type,Vacuum) Select Type,Vacuum from CFM (一般没有什么用,用于程序员自娱自乐的测试)

Categories: SQL Tags:

Sql Server 2008 Notes (1)

March 4th, 2010 Tony hu No comments
  1. INSERT … SELECT … (将其它表中的数据行添加到现有的表中,注意两个表的对应列的数据类别是一样的)
  2. SELECT … INTO … (创建一个新表,将一个表中的结果放到这个新表中)
  3. TRUNCATE TABLE table_name (删除表中所有的数据,不更新事务日志,不可以使用ROLLBACK命令取消对行的删除)
  4. SP_HELPDB (用来查询所有数据库的基本信息)
  5. sp_detach_db (分离数据库)
  6. 数据库快照——SNAPSHOT (是源数据库的只读、静态视图。一个源数据库可以有多个快照。只能在与源数据库相同的实例上创建Database snapshot)
  7. 架构(schema)是对象的容器,用于在数据库内容定义对象的命名空间,用于简化管理和创建可以共同管理的对象子集。架构和用户分离,用户拥有架构。
Categories: Sql Server Tags:

SQL Server Backup And Recovery SQLS

March 3rd, 2010 Tony hu No comments
  1. SP_HELPDEVICE 查看服务器上每一个设备的相关情况。
  2. SP_addumpdevice ‘disk’,'Test3′,’D:\test3′ 添加一个设备,这里的设备是磁盘。
  3. sp_dropdevice ‘Test3′ 删除一个备份设备。
  4. BACKUP DATABASE POP
    TO DISK=’D:\test.bak’
    WITH NOINIT,
    NAME= ‘POP 测试 备份 完整 2222′,
    DESCRIPTION=’THIS IS A FULL BACKUP OF POP’;
  5. backup database pop
    to disk =’D:\test.bak’
    with Differential,
    noinit,
    name=’pop 差异备份’;
  6. backup log pop
    to disk=’D:\test.bak’
    with noinit,
    name =’pop 日志备份测试’
  7. backup database pop
    filegroup=’PRIMARY’
    to disk =’D:\test.bak’
    with name=’pop 文件组备份’
Categories: SQL, Sql Server Tags: , , ,

SQL Server 2008 backup and recovery

March 2nd, 2010 Tony hu No comments

SQL Server 2008 提供四种数据库备份类型。

  1. 完整数据库备份
  2. 差异数据库备份
  3. 事务日志备份
  4. 文件组备份

三种恢复模型。

  1. 简单恢复模型
  2. 完全恢复模型
  3. 大容量日志记录恢复模型

备份设备

  • 磁盘备份设备(日志和数据文件尽量不要放在同一物理磁盘上的文件中)
  • 磁带备份设备
  • 逻辑备份设备(更简单,更方便)