随笔分类 -  MSSQL

摘要:mssql函数 IF EXISTS ( SELECT 1 FROM sysobjects WHERE name = 'fn_GetWeekDate') DROP FUNCTION fn_GetWeekDate GO CREATE function [dbo].fn_GetWeekDate( @Yea 阅读全文
posted @ 2016-03-30 18:57 忧忧夏天 阅读(1214) 评论(0) 推荐(0)
摘要:这里整理日常会用到的一些写法,一些常规的group by,系统函数等用法不在这里做记录了,大家有什么好的写法也可以分享下 1 sql操作xml内容(sp_xml_preparedocument和openxml) 2 sql递归查询(with cte as) 3 sql把查询结果转换成xml格式(fo 阅读全文
posted @ 2015-03-30 17:24 忧忧夏天 阅读(510) 评论(0) 推荐(0)
摘要:演示脚本IF not exists(SELECT 1 from sys.sysobjects where name = 'Student' AND type = 'U')BEGIN CREATE table Student( ID int ... 阅读全文
posted @ 2015-03-30 16:10 忧忧夏天 阅读(1136) 评论(0) 推荐(0)
摘要:需求:把字符串1,2,3变成表里的行数据方法:用自定义函数实现/* 获取字符串数组的 Table*/if exists (select 1 from sysobjects where id = object_id('Get_StrArrayStrOfTable' )) drop Fu... 阅读全文
posted @ 2015-03-30 13:13 忧忧夏天 阅读(3960) 评论(0) 推荐(0)
摘要:需求:获取字符数组1,2,3的第2个元素方法:通过自定义函数来实现/* 获取字符串数组某个元素*/if exists (select 1 from sysobjects where id = object_id('Get_StrArrayStrOfIndex' )) drop Fun... 阅读全文
posted @ 2015-03-30 13:08 忧忧夏天 阅读(6158) 评论(0) 推荐(0)
摘要:需求:获取字符串数组1,2,3,4的长度,当然也可以是其他分隔符1|2|3等方法:通过自定义函数来实现/* 获取字符串数组长度*/if exists (select 1 from sysobjects where id = object_id('Get_StrArrayLength' )... 阅读全文
posted @ 2015-03-30 13:03 忧忧夏天 阅读(8674) 评论(0) 推荐(0)
摘要:一 背景 客户数据库经常出现死锁、超时、查询慢等问题,数据库mssql,数据量主要表大概上千W。二 收集信息 首先是要找出IO大、查询慢、使用频率高的脚本。直接用Profiler加上限制条件在生产环境收集了。三 辅助脚本 DMV动态管理视图是必不可少的。还有其他一些命令用来如 1set ... 阅读全文
posted @ 2015-01-11 15:04 忧忧夏天 阅读(499) 评论(0) 推荐(1)
摘要:1.把trace文件导入到表中SELECT IDENTITY(BIGINT, 1, 1) AS RowNumber,* into TableNameFROM fn_trace_gettable('trace.trc', default)2.查询CPU开销大的语句SELECT top 100 t... 阅读全文
posted @ 2014-11-01 21:45 忧忧夏天 阅读(588) 评论(0) 推荐(1)
摘要:1.前言 对于优化SQL语句或存储过程,以前主要是用如下语句来判断具体执行时间,但是SQL环境是复杂多变的,下面语句并不能精准判断性能是否提高;如果需要精确知道CPU、IO等信息,就无能为力了。PRINT convert(varchar(30),getdate(),121)select * fr... 阅读全文
posted @ 2014-10-21 23:00 忧忧夏天 阅读(9277) 评论(0) 推荐(1)
摘要:1.每次执行sql语句都会生成执行计划并缓存起来,因为生成执行计划也需要时间开销,因此重用执行计划将能提高性能,并节省缓冲区空间。我们可以使用sys.dm_exec_cached_plans、sys.dm_exec_sql_text、sys.dm_exec_query_plan来查询缓存的执行计划。... 阅读全文
posted @ 2014-10-04 20:41 忧忧夏天 阅读(692) 评论(0) 推荐(0)
摘要:用SET CONTEXT_INFO来实现--在某个会话里设置SET CONTEXT_INFO 0x8888--在触发器里判断DECLARE @Cinfo VARBINARY(128) SELECT @Cinfo = Context_Info() 原文地址MSDN 阅读全文
posted @ 2014-08-22 17:54 忧忧夏天 阅读(211) 评论(0) 推荐(0)
摘要:1 系统表sys.sysobjects在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都对应一行,详细介绍参考MSDN2OBJECTPROPERTY返回当前数据库中架构范围内的对象的有关信息,MSDN介绍3 判断数据库、表、视图、存储过程、索引、列是否存在语句SELECT * F... 阅读全文
posted @ 2014-07-06 11:11 忧忧夏天 阅读(829) 评论(0) 推荐(0)
摘要:--启用or禁用指定表所有外键约束 alter table tbname NOCHECK constraint all alter table tbname CHECK constraint all--查看约束select name , is_disabled from sys.forei... 阅读全文
posted @ 2014-07-02 17:41 忧忧夏天 阅读(6846) 评论(0) 推荐(0)
摘要:1.触发器语法 CREATE TRIGGER ON [.] [WITH ENCRYPTION] {{{FOR|AFTER} } | INSTED OF} [WITH APPEND] AS 2.DML触发器类型 参考:msdn 1)AFTER 触发器:在执行 INSERT、UPDATE、MERGE 或 DELETE 语句的操作之后执行 AFTER 触发器。如果违反了约束,则永远不会执行 AFTER 触发器; 2)INSTEAD OF 触发器:插入、更新或删除行之前执行; 比较:功能AFTER触发器INSTEAD OF触发器适用范围表表和视图每个表或视图包... 阅读全文
posted @ 2014-03-08 15:16 忧忧夏天 阅读(1535) 评论(0) 推荐(0)
摘要: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_wo 阅读全文
posted @ 2013-11-06 22:47 忧忧夏天 阅读(400) 评论(0) 推荐(0)
摘要:原文出处一、前言很多数据库系统性能不理想是因为系统没有经过整体优化,存在大量性能低下的SQL语句。这类SQL语句性能不好的首要原因是缺乏高效的索引。没有索引除了导致语句本身运行速度慢外,更是导致大量的磁盘读写操作,使得整个系统性能都受之影响而变差。解决这类系统的首要办法是优化这些没有索引或索引不够好的SQL语句。本文讨论和索引相关的有关内容,以及通过分析语句的执行计划来讲述如何应用索引技术来优化SQL语句。通过分析执行计划,读者可以检查索引是否有用,以及如何创建高效的索引。本文对数据库管理人员以及数据库系统开发人员都有一定参考意义。如果读者不知道应该优化数据库系统的哪些SQL语句,那么建议读者 阅读全文
posted @ 2013-11-04 21:54 忧忧夏天 阅读(487) 评论(0) 推荐(0)
摘要:SERVERPROPERTY返回有关服务器实例的属性信息(具体使用可以参考msdn)sys.master_filesmsdnsys.databasesmsdnSQL Server 操作系统相关的动态管理视图msdn 阅读全文
posted @ 2013-05-26 19:37 忧忧夏天 阅读(218) 评论(0) 推荐(0)
摘要:1.出现标题: Microsoft SQL Server Management Studio 不允许所请求的注册表访问权。 (mscorlib) 以管理员权限运行就可以了2.附加数据库失败提示没有权限 5120提示的时候,给mdf,ldf文件的对应用户加上权限即可 阅读全文
posted @ 2013-05-25 21:52 忧忧夏天 阅读(232) 评论(0) 推荐(1)
摘要:1.批量导入bcp "select * from DbName.dbo.TableName" queryout E:\test.sql -S . -U sa -P1 -cexec master..xp_cmdshell 'bcp DbName.dbo.TableName in E:\test.sql -c -T'2.权限配置/*MSsql2005 如何启用xp_cmdshell默认情况下,sql server2005安装完后,xp_cmdshell是禁用的(可能是安全考虑),如果要使用它,可按以下步骤*/-- 允许配置高级选项EXEC sp_configur 阅读全文
posted @ 2013-04-09 16:21 忧忧夏天 阅读(210) 评论(0) 推荐(0)
摘要:常用数据库定义语言DDL--1.判断表中是否存在某个字段select * from SysObjects a left join SysColumns b on a.id = b.id where a.name = 'TableName' and b.Name='ColumnName'--2.在表中新增一个字段alter table TableName add ColumnName varchar(100) default ('') with values--3.在表中删除一个字段alter table TableName drop column 阅读全文
posted @ 2012-09-05 17:11 忧忧夏天 阅读(325) 评论(0) 推荐(0)