随笔分类 - MSSQL Technical
MSSQL Technical
摘要:概述 对数据库系统而言,保证数据的安全性永远都是最重要的问题之一。一个好的数据库环境,必须明确每个用户的职责,并分配其对应的权限。同时出现问题了也可以找到根源。 你是否会有这样的需求: 给某个用户查询所有数据库的权限 给某个用户只有备份数据库的权限 给一个用户只有指定数据库的权限 给一个用户只有某个
阅读全文
摘要:当我们利用EF这个ORM框架时,我们可能会利用LINQ或者原生的SQL语句来进行数据操作,此时我们无法确定我们的代码是否会给数据库带来一定的负载,当给数据库带来一定的压力时,由于项目中对数据进行相应的操作实在是太多,我们无法准确的去进行定位,又或者我们不是专业的DBA,无法准确的去分析SQL性能的优
阅读全文
摘要:使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁, 死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉。利用sp_who_lock这个存储过程,可 以很方便的知道哪个进程出现了死锁,出现死锁的问题在哪里.创建sp_who_loc...
阅读全文
摘要:1.查询的模糊匹配尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用.解决办法:其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下:a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户...
阅读全文
摘要:你还在为数据库编程而抓狂吗?那些恶心的脚本拼接,低效的脚本调试的日子将会与我们越来越远啦。现在我们能用支持.NET的语言来开发数据库中的对象,如:存储过程,函数,触发器,集合函数已及复杂的类型。看到这些你还能淡定吗?哈哈,不仅仅是这些。那些能被.NET支持的第三方扩展通过该技术统统都能应用在数据库编...
阅读全文
摘要:http://www.cnblogs.com/xqhppt/archive/2011/02/15/1955366.html2011-02-15 16:41 by 忧忧夏天,2415阅读,0评论,收藏,编辑with cte as( select Id,Pid,DeptName,0as lvl f...
阅读全文
摘要:几年前在做项目中第一次接触到了Migrator.Net,就深深被吸引住了,至此以后在新的大项目中,我都会使用Migrator.Net来创建或者更新数据库架构。曾经在项目中也发现了小bug并提交给了作者,当时还是有点小激动啊。几年过去了,Migrator.Net虽然已经迁移到了github上,但作者好像从3年前就不再更新了,不过这不影响我对它的喜爱,一如既往的使用着它,它的出现让我对数据库这块彻底的放开,不用手动去创建表,不用手动的去创建索引,一切就这么简单。目前Migrator.Net原生代码支持:MsSql,Oracle,PostgreSql,Sqlite,MySql。当然您也可以继承其几个
阅读全文
摘要:So you want to spit out some XML from SQL Server into a file, how can you do that? There are a couple of ways, I will show you how you can do it with SSIS. In the SSIS package you need an Execute SQL Task and a Script Task.Let's get startedFirst create and populate these two tables in your datab
阅读全文
摘要:Declare @xmlDoc xmlSET @xmlDoc = (SELECT * FROM USERS AS UserTable For XML AUTO, ELEMENTS, ROOT('Root'))SELECT @xmlDocResult as below : 1 Admin admin 49CE5FB6D05148ACB66A Administrator 0 1 2013-07-10T13:40:48.470 2 cshsvc cshsvc 54C0FCD2B54CCE8BE6AD Administrator 0 1 2013-07-10T13:38:2...
阅读全文
摘要:经带在论坛上看到有人在问怎么捕获和记录死锁信息,在这里,我将自己的一些心得贡献出来,与大家分享,也请各位指正。我们知道,可以使用SQL Server自带的Profiler工具来跟踪死锁信息。但这种方式有一个很大的敝端,就是消耗很大。据国外某大神测试,profiler甚至可以占到服务器总带宽的35%,所以,在一个繁忙的系统中,使用profiler显然不是一个好主意,下面我介绍两种消耗比较少的方法。其中第二种的消耗最小,在最繁忙的系统中也可使用。第一种最为灵活,可满足多种应用。方法一:利用SQL Server代理(Alert+Job)具体步骤如下:1.首先使用下面的命令,将有关的跟踪标志启用。SQ
阅读全文
摘要:SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQLServer2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000系列操作系统一统天下的局面,在微软的操作系统上,没有任何一种数据库系统能与之抗衡,包括数据库领域中的领头羊甲骨文公司的看家数据库Oracle在内。不可否认,SQL Server最大的缺陷就是只能运行在微软自己的操作系统上,这一点是SQL Server的致命点。但在另一方面却也成了最好的促进剂,促使SQL Server在自己仅有的“土地”上面将自己的功能发挥到了极至最大限度的利用了NT系列操作系统的各
阅读全文
摘要:PIVOT用于将列值旋转为列名(即行转列),在SQL Server2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P完整语法:table_sourcePIVOT(聚合函数(value_column)FOR pivot_columnIN(<column_list>))UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现完整语法:table_sourceUNPIVOT(value_columnFOR pivot_columnIN(<column_list
阅读全文
摘要:Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;selecta.S#from(selects#,scorefromSCwhereC#='001') a,(selects#,scorefromSCwhereC#='002') bwherea.score>b.scoreanda.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select
阅读全文
摘要:USE [GloriousFuture]GO/****** Object: StoredProcedure [dbo].[sp_drop_all_fk] Script Date: 12/07/2012 16:46:51 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[sp_drop_all_fk] as declare @sql varchar(255) declare dropsql_cursor cursor for select 'alter table '+o...
阅读全文
摘要:排名函数 详解SQLServer2005 能够在 T-SQL 代码中对数据行进行排名。排名函数(ranking function)能对每一个数据行进行排名,从而提供一种以升序来组织输出的方法。可以给每一行一个唯一的序号,或者给每一组相似的行相同的序号。排名函数有四种类型: ROW_NUMBER :为查询的结果行提供连续的整数值。 RANK :为行的集合提供升序的、非唯一的排名序号,对于具有相同值的行,给予相同的序号。由于行的序号有相同的值,因此,要跳过一些序号。 DENSE_RANK :与RANK类似,不过,无论有多少航具有相同的序号,DENSE_RANK放回的每一行的...
阅读全文
摘要:堂弟的同学找我,他要写一个学生成绩管理系统,其中一个模块需要提供用户查询学生成绩名次排名,名次排名里需要考虑到成绩相同的情况。这个让我想起N年前我读书时候做这个问题,当时我用了最笨的方法,使用程序来排名,而没有使用SQL语句,自然效率相当低下。需求简述:例如我有这样一个成绩表 编号 姓名 成绩1 张三 902 李四 853 王五 1004 赵六 855 汪一 1006 周九 787 何二 56然后我希望排名次,因为这里有同分,所以必然会出现并列名次。网络上关于并列成绩名次排名有两种方式,其一是这样:A名次 姓名 成绩1 王五 1001 汪一 1003 张三 904 赵六 854 李四 856
阅读全文
摘要:在网上找到了一句得到删除数据库中所有外键约束的语句的sql语句但是发现这只是一句查询,要执行的话,还得复制出来执行,比较麻烦于是写了个sp来自动执行,比较方便代码如下:Sql代码CREATEPROCEDUREsp_drop_all_fkasdeclare@sqlvarchar(255)declaredropsql_cursorcursorforselect'altertable'+object_name(fkeyid)+'dropconstraint'+object_name(constid)+char(10)fromsysreferencesopendrops
阅读全文
摘要:This blog post illustrates how to update more than one column in a table with values from columns in another table and explains how to do it in the three RDBMS that we support.Table Structures and values:TableA has four columns: a, b, c, d (a is the primary key column)TableB has five columns: a1, b1
阅读全文
摘要:Persist Security Info=False"表示的是什么?生活随笔2009-07-20 15:34:39阅读391评论0字号:大中小订阅2008年01月03日 星期四 10:19ADO数据库连接中的Persist Security Info参数的作用ADO用了这么久,每次用向导创建ADO的数据库连接字符串时总会有产生一个Persist Security Info属性,平时没太注意,因为设置为True或False时对数据库连接没有任何影响。不过心理还是不爽,今天有时间查询了一下资料,总算搞清楚了它 的作用。Persist Security Info属性的意思是表示是否保存安
阅读全文
摘要:在企业中,由于有些流水表每日有几千万条记录,数据仓库保存5年数据的话很容易不堪重负,因此可以使用拉链表的算法来节省存储空间。1.采集当日全量数据存储到 ND(当日) 表中。2.可从历史表中取出昨日全量数据存储到 OD(上日数据)表中。3.用ND-OD为当日新增和变化的数据(即日增量数据)。两个表进行全字段比较,将结果记录到tabel_I表中4.用OD-ND为状态到此结束需要封链的数据。 (需要修改END_DATE)两个表进行全字段比较,将结果记录到tabel_U表中5.历史表(HIS)比ND表和OD表多两个字段(START_DATE,END_DATE)6.将tabel_I表的内容全部inser
阅读全文