2014年1月17日

曲苑杂坛--清除维护计划产生的日志文件

摘要: 在SQL SERVER中,由任务计划产生的JOB执行时会生成日志,并默认保存到SQL Server的日志文件夹下。如果维护计划运行频率较高的话,会积累较多的日志文件,需要及时清理。方式1--不生成日志记录方法二:由于日志记录时txt文档,可以使用“清除维护”来清理 阅读全文

posted @ 2014-01-17 18:00 笑东风 阅读(351) 评论(0) 推荐(0)

曲苑杂坛--服务启动时执行

摘要: 设置自动执行的存储过程。设置为自动执行的存储过程在每次启动 SQL Server 实例时运行。Transact-SQL 语法约定语法sp_procoption [ @ProcName = ] 'procedure' , [ @OptionName = ] 'option' , [ @OptionValue = ] 'value' 参数[ @ProcName = ] 'procedure'为其设置选项的过程的名称。 procedure 的数据类型为 nvarchar(776),无默认值。[ @OptionName = ] ' 阅读全文

posted @ 2014-01-17 17:57 笑东风 阅读(272) 评论(0) 推荐(0)

TSQL--可以在触发器中使用COMMIT吗?

摘要: 很多场景中,我们使用触发器来回滚一些不满足业务逻辑的修改,这没有问题,问题是我能在触发器中提交事务吗?这个问题很小白,当也来测试一下/*测试中创建三种表,对表 TB2 插入时触发触发器,在触发器中将TB2中新插入的数据插入到 TB3 和 TB4*/USE TestDBGO DROP TABLE TB2GODROP TABLE TB3GODROP TABLE TB4GOCREATE TABLE TB2(ID INT PRIMARY KEY IDENTITY,C1 INT)GOCREATE TABLE TB3(ID INT PRIMARY KEY,C1 INT)GOCREATE TABLE TB4 阅读全文

posted @ 2014-01-17 17:36 笑东风 阅读(1024) 评论(0) 推荐(1)

Wait--常见的等待类型

摘要: --==================================================================================--SLEEP_BPOOL_FLUSHMSDN上如是说:当检查点为了避免磁盘子系统泛滥而中止新 I/O 的发布时出现。场景:在做以下操作时1. 在修改数据库属性,如修改还原恢复模式简单为完整,长时间不能运行完毕2. 还原数据库时,消息提示100% 但是在运行经过调查,发现等待为SLEEP_BPOOL_FLUSH,进一步调查,发现该数据库上及其容易产生脏页(修改1W条记录可能会照成2W的脏页)解决办法:1. 将数据量较大的表和索引 阅读全文

posted @ 2014-01-17 17:28 笑东风 阅读(1068) 评论(0) 推荐(1)

Wait--使用sys.dm_io_virtual_file_stats来查看IO延迟

摘要: /*============================================================================ File: VirtualFileStats.sql Summary: sys.dm_io_virtual_file_stats Date: March 2011------------------------------------------------------------------------------ Written by Paul S. Randal, SQLskills.com (c) 20... 阅读全文

posted @ 2014-01-17 17:22 笑东风 阅读(1648) 评论(4) 推荐(1)

Wait--查看等待

摘要: --清除等待统计--=====================================================--清除等待统计DBCC SQLPERF (N'sys.dm_os_wait_stats', CLEAR);GO--通用的查看等待WITH [Waits] AS (SELECT [wait_type], [wait_time_ms] / 1000.0 AS [WaitS], ([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS], [s... 阅读全文

posted @ 2014-01-17 17:21 笑东风 阅读(649) 评论(0) 推荐(0)

TSQL--临时表和表变量

摘要: 1. 临时表适用数据量较大的情况,因为临时表可以建立索引2. 表变量适用于数据较小的情况,表变量只能在定义时创建约束(PRIMARY KEY/UNIQUE)从而间接建立索引3. 临时表是事务性的,数据会随着事务回滚而回滚,表变量是非事务性的4. 临时表和表变量都存放在内存中,当内存存在压力时才放入到硬盘5. 临时表属于回话级别,除非显式DROP,否则会一直保持到回话结束6. 表变量属于上下文级别,当前批处理结束后会被立即释放。7. 临时表的创建删除会导致存储过程重编译,而在存储过程中使用表变量不会引发重编译8. 用户定义的临时对象(临时表、全局临时表、表变量、游标)都优先存放到内存9. 临时表 阅读全文

posted @ 2014-01-17 17:14 笑东风 阅读(895) 评论(0) 推荐(0)

TDE--相关Demo

摘要: SQL Server 2008引入透明数据加密(Transparent Data Encryption),它允许你完全无需修改应用程序代码而对整个数据库加密。当一个用户数据库可用且已启用TDE时,在写入到磁盘时在页级实现加密。在数据页读入内存时解密。如果数据库文件或数据库备份被盗,没有用来加密的原始证书将无法访问。TDE Demo:--在还原数据库之前必须还原证书,否则数据无法被还原--错误提示:找不到指纹为'XXX' 的服务器证书。use master;GO--还原证书DB_TDE_certCREATE CERTIFICATE DB_TDE_certFROM FILE = & 阅读全文

posted @ 2014-01-17 16:58 笑东风 阅读(556) 评论(0) 推荐(0)

曲苑杂坛--即时文件初始化特性

摘要: 即时文件初始化允许数据文件初始化过程跳过填0初始化过程,从而缩短数据库还原时间或数据库文件增长时间Note:即时文件初始化对日志文件无效使用跟踪标记3004来检查即时初始化功能是否开启使用追踪标记1806为ON来暂时停止文件即时初始化参考文献:http://www.cnblogs.com/CareySon/archive/2012/10/22/2733487.htmlhttp://www.sqlskills.com/blogs/kimberly/instant-initialization-what-why-and-how/ 阅读全文

posted @ 2014-01-17 16:55 笑东风 阅读(215) 评论(0) 推荐(0)

曲苑杂坛--修改数据库名和文件组名

摘要: /*该脚本示例如何完整的修改一个数据库的名称.数据库为原名称为DB_BEIJING,需要修改成DB_SHANGHAInzperfect 2012.12.19*/--判断是否存在同名的数据库,以防止误删除USE masterGOIF EXISTS (SELECT name FROM sys.databases WHERE name = N'DB_BEIJING')BEGIN RAISERROR('请注意:数据库已存在!',15,1) RETURN --DROP DATABASE DB_BEIJINGENDGOUSE masterGO--创建测试数库CREATE D 阅读全文

posted @ 2014-01-17 16:53 笑东风 阅读(505) 评论(0) 推荐(0)

曲苑杂坛--修改数据库服务器名称

摘要: --===========================================================--不能修改实例名称,但可以修改服务器名称DECLARE @serverName NVARCHAR(200);SELECT @serverName=@@SERVERNAME;EXEC sp_dropserver @server = @serverName;SET @serverName = CAST(SERVERPROPERTY('servername') AS sysname);SELECT @serverNameEXEC sp_addserver @se 阅读全文

posted @ 2014-01-17 16:45 笑东风 阅读(314) 评论(0) 推荐(0)

系统数据库--修改tempdb的位置

摘要: use mastergoAlter database tempdb modify file (name = tempdev, filename = 'G:\db\tempdb.mdf')goAlter database tempdb modify file (name = templog, filename = 'G:\db\templog.ldf')--重启数据库即可 阅读全文

posted @ 2014-01-17 16:44 笑东风 阅读(600) 评论(0) 推荐(0)

系统数据库--恢复Master数据库

摘要: 实现步骤:关闭SQL SERVER 服务,使用DAC登录在cmd下还原master重启SQL SERVER 服务 阅读全文

posted @ 2014-01-17 16:42 笑东风 阅读(265) 评论(0) 推荐(0)

TSQL--游标Dem

摘要: DECLARE @ID INT;DECLARE @Name NVARCHAR(200);DECLARE @NewName NVARCHAR(200);DECLARE MyCursor CURSOR FORSELECT TOP(100) ID,NAME1 FROM dbo.TB1ORDER BY ID;OPEN MyCursorFETCH NEXT FROM MyCursor INTO @ID, @NameWHILE @@FETCH_STATUS = 0BEGINSET @NewName=@Name+CAST(@ID AS NVARCHAR(20))UPDATE dbo.TB1SET name1 阅读全文

posted @ 2014-01-17 16:35 笑东风 阅读(222) 评论(0) 推荐(0)

TSQL--约束基础和Demo

摘要: SQL SERVER 中使用constraint和role来对数据进行限制,role需要先创建,再应用到指定的表和列上,role可以被应用到多个对象上。而constraint只能针对单一对象,处理的问题更多一些,constraint可以跨越多个表处理,如限制某个表中输入的值不能大于另一表的最大值,role无法实现这样的需求。通常优先考虑使用constraint来实现对数据的限制。 SQL Server中约束有: check constraint unique constraint primary key constraint default constraint 阅读全文

posted @ 2014-01-17 16:32 笑东风 阅读(286) 评论(0) 推荐(0)

ResorceGovernor--基础和Demo

摘要: 资源调控器分为三部分:1:资源池,将资源CPU/MEMORY划分到不同的载体上2:负载组,承载负载并将负载映射到不同的资源池3: 分类函数,将不同回话映射到不同的负载组08提供两种预定义的系统资源池1:internal,内部资源池,只用于SQL数据库引擎,系统管理员不能改变和设置;2:default,默认资源池,所有未分配资源池的的回话都使用默认资源池,默认资源池不能被修改和删除;所有资源池的下限之和不得超过100%,因为系统会尽量满足资源池下限资源池的上线可设置为下限到100%之间--====================================================== 阅读全文

posted @ 2014-01-17 16:00 笑东风 阅读(435) 评论(0) 推荐(0)

曲苑杂坛--查看CPU配置

摘要: ​--===================================================--查看CPU配置SELECT cpu_count AS [Logical CPU Count], hyperthread_ratio AS [Hyperthread Ratio],cpu_count/hyperthread_ratio AS [Physical CPU Count]FROM sys.dm_os_sys_info 阅读全文

posted @ 2014-01-17 15:57 笑东风 阅读(318) 评论(0) 推荐(0)

优化案例--改写IN条件为INNER JOIN

摘要: 由于满足以下条件中一个或多个--1.条件IN中外部数据与子查询数据是一对一的关系--2.对查询结果排重--因此可以将IN条件改写为INNDE JOIN 在将IN条件改成INNER JOIN 时,一定要考虑数据是一对一还还是一对多以及多对一的关系, 如果是一对多的关系,需要对查询结果集排重。 如果除I 阅读全文

posted @ 2014-01-17 15:51 笑东风 阅读(1934) 评论(0) 推荐(0)

优化案例--定期归档数据

摘要: 归档历史数据很少有开发会考虑到数据归档的问题已经数据增长的问题,当程序运行一段时间后,就会出现各种问题,部分问题可以修改SQL语句或使用索引来解决,但如果SQL语句无法修改,糟糕的SQL语句无法使用索引,归档历史数据便成为一种解决手段。如某系统登录表每天增加 20W 数据,系统需访问最近一周的数据,系统运行一年后,积累数据 6000W 数据,系统中某一查询造成整表扫描,消耗大量IO和CPU资源,并导致内存压力。解决方法:将表中数据按天分区,定期将一周前数据归档,这样将表扫描消耗的资源控制在可接受的范围。归档历史数据需要考虑以下问题1> 那些属于历史数据(数据的访问频率和访问几率)2> 阅读全文

posted @ 2014-01-17 15:47 笑东风 阅读(534) 评论(0) 推荐(0)

疑难杂症--单回话下 WITH(NOLOCK)返回更多数据

摘要: ​场景:某DBA在一个人操作数据库时发现,可提交读事务隔离级别下返回的数据少于未提交读事务隔离级别,确认没有其他事务修改数据。解决方案1:将数据查询放入一个新建的表,使用该表查询发现问题被消除。解决方案2:运行DBCC CHECKDB,发现 3 个分配错误和 21756 个一致性错误,使用DBCC CHECKDB(REPAIR_REBUILD)来修复问题原因:在未提交读或NOLOCK下,SQL SERVER 使用IAM链来读取所有数据,在普通模式下,SQL SERVER 按照聚集索引的索引链(每个索引页头存放上一页和下一页的文件ID和页ID)来访问所有数据,因此当分配页出现错误时,就会导致该情 阅读全文

posted @ 2014-01-17 15:39 笑东风 阅读(355) 评论(0) 推荐(0)

导航