随笔分类 -  javascript

实际工作中遇到的问题,开发环境问题,软件版本问题,软件兼容问题,代码规范问题,设计工具的使用
摘要:一直想找一些关于SQL语句性能调试的权威参考,但是有参考未必就能够做好调试的工作。我深信实践中得到的经验是最珍贵的,书本知识只是一个引导。本篇来源于《Inside Microsoft SQL Server 2008》,有经验的高手尽管拍砖把。这个部分将讲解一些性能分析工具,这些性能分许主要关注在执行计划。缓存执行计划SQL Server 2008提供了一些服务器对象来分析执行计划Sys.dm_ex... 阅读全文
posted @ 2011-11-17 19:53 nd 阅读(26252) 评论(27) 推荐(24) 编辑
摘要:今天发一个不相干的随笔,如何使用ONES。这个东西只是个工具,没有用过的话肯定会浪费一两张cd盘。这里强烈建议:没有刻录过东西的童鞋最好使用可擦写的DVD盘。今天从最简单的开始,如何从一张已知的操作系统盘刻录到一张空白的盘中。1.提取光盘镜像点击ONES程序,界面如下图1图1要往光盘里面刻录的东西不是一般程序或文件,而是镜像,镜像是个什么玩意,不解释。所以要首先从已知光盘中抓起镜像,如下图2,双击抓取镜像图2双击后弹出对话框如图3图3在光盘镜像那里选择镜像文件要存放的地方,并给它起一个名字。点击提取然后可以去喝一杯水了。上图关盘后面显示:“未准备继续”,如果光驱中插入盘这里会显示这个盘的信息。 阅读全文
posted @ 2011-10-11 00:22 nd 阅读(8580) 评论(1) 推荐(0) 编辑
摘要:它山之石可以攻玉,这一篇是读别人的博客后写下的,不是原原本本的转载,加入了自己的分析过程和演练。sql语句可以解决很多的复杂业务,避免过多的项目代码,下面几个语句很值得玩味。 1. 已经知道原表year salary2000 10002001 20002002 30002003 4000怎么查询的到下面的结果,就是累积工资year salary2000 10002001 30002002 60002003 10000思路:这个需要两个表交叉查询得到当前年的所有过往年,然后再对过往年进行聚合。代码如下:create table #salary(years int ,salary int )in. 阅读全文
posted @ 2011-10-10 17:35 nd 阅读(4398) 评论(10) 推荐(5) 编辑
摘要:1. 用一条SQL语句查询出每门课都大于80分的学生姓名 name kechengfenshu 张三 语文81张三 数学75李四 语文76李四 数学90王五 语文81王五 数学100王五 英语90思路:这里不能直接用分数>80这样的比较条件来查询的到结果,因为要求没门成绩都大于80。我们可以反过来思考,如果有一门成绩小于80,那么就不符合要求。先找出成绩表中成绩80还有一种方法类似于第一种select distinct a.姓名 from #成绩 a where not exists (select 1 from #成绩 where 分数b.自动编号 where a.学号=b.学号 an 阅读全文
posted @ 2011-10-07 13:13 nd 阅读(8716) 评论(31) 推荐(13) 编辑
摘要:控制流可以被设计成并行执行,线性执行或者二者结合。控制流任务本身是线性执行的,这意味着一个任务在切换到另外一个任务之前必须先执行完毕。虽然在一个package中可以设计出相互之间没有依赖性的控制流任务,这些任务在包中仍然是线性执行的,换一种说法就是,当一个任务正在执行的时候,它不会跳到下一个任务中。SSIS执行线程会仍然停留在当前任务,知道成功执行完毕或者失败。注意:控制流同步执行和数据流的异步执行没有冲突。二者之间有一些差别。在数据流任务中主要关注的是如何处理数据,而不是控制流程。在集成服务中还允许设置最大允许的同步执行的任务的个数,通过属性MaxConcurrentExecutables可 阅读全文
posted @ 2011-09-30 17:54 nd 阅读(927) 评论(0) 推荐(0) 编辑
摘要:理解控制流和数据流的一个入口是看他们如何运行的。一个控制流任务是一个最小的执行单位,它的运行结果有成功,失败,和完成,在运行它的下一个任务之前必须得到这些结果。在数据流任务中,转换时最基本的元素。一个转换任务和控制任务是有很大的区别的。转换任务之间是可以并行执行的,不必等待上一个转换任务执行完毕。 控制流和数据流之间的比较控制流和数据流之间看上去很相似,但是他们有天壤之别。控制流不会处理组件之间的数据,它负责协调单独的组件单元之间的工作。这里有一些概念: 工作流协调 处理导向 顺序的或平行的任务的执行 异步处理控制流任务可以顺序的执行,大多数时候他们会同时以这两种方式来执行。... 阅读全文
posted @ 2011-09-29 18:18 nd 阅读(3717) 评论(0) 推荐(2) 编辑
摘要:简介在这一章节中我们可以深入了解SSIS的引擎结构和组成,包含下面的话题。控制流和数据流的对比数据流的类型控制流中的高级话题数据流中的缓冲器和执行树监控数据流的执行这个章节中的内容有些抽象,我们将从一些高级话题开始一步一步地理解SSIS的内部机制。 集成服务引擎:一个比喻在了解缓存器,异步组件和执行树之前,先了解一个现象:假设在一个大城市中开着车的时候你会不会想了解整个城市的交通现状?还有整个城市的红绿灯时怎么协调的。可能你坐出租车从一个闹市区到另外一个临近的闹市区可能要花很长的时间,部分原因是红绿灯是按照一定的时限来变换的。任何一个人都可能在十字路口遇到指示灯变红,称之为锁箱。这. 阅读全文
posted @ 2011-09-28 17:18 nd 阅读(1261) 评论(0) 推荐(0) 编辑
摘要:你可能对扩展性这个概念非常的熟悉,当然在SSIS中也有这个概念。这里有几个很有特色的属性,这一个小节的内容中将介绍如何在SSIS中使用可扩展性特性。 扩展内存在设计SSIS之初,数据传输的操作都发生在内存中,这样会使数据传输和转换更加的快,一个设计目标是数据传输只有一条路径。这样消除了多次读取或者写入数据造成的时间消耗。这样有一个缺点是你需要大量的数据和复杂的数据转换要吃掉大量的内存,所以需要合适的对内存使用进行调优。默认情况下32位的操作系统的虚拟内存是2GB。当然我们可以修改boot.ini文件把它修改成3GB,不过这样做会导致内存不够的现象。在执行单个的package的时候经常会出现这. 阅读全文
posted @ 2011-09-27 17:06 nd 阅读(1786) 评论(4) 推荐(1) 编辑
摘要:错误输出可以用来提高可靠性,但是它还有一个目的是改善可扩展性。可靠性方面,他们可以用来拷贝出错误数据。通过合适的配置可以将错误的数据从主要数据流中分离出来输出到下游系统中。这些数据将会特别处理或者是被清洗然后返回到主数据流中。他们可以被显示地合并,例如使用Union转换,或者是隐式地合并数据很少被丢弃,很多时候他们被记入日志中或者在后续步骤中处理。如果一些数据在析取的时候丢失,但是最终还是需要这些数据,错误输出可以用来解决这个问题。如果可以在其他的数据源中获得这些错误数据,可以使用LookUp转换找到这些数据。如果不能再其他的地方获得这些,可以使用默认值选项配置。在另外一些场景中,数据可能超出 阅读全文
posted @ 2011-09-26 18:53 nd 阅读(2482) 评论(0) 推荐(0) 编辑
摘要:在这一个随笔中将介绍在package中如何使用事务来保证数据的完整性和一致性。在SSIS中有两种事务: 分布式事务处理事务(Distributed Transaction Coordinator Transactions):在task,package中使用单独一个或者多个事务处理 本地事务(Native Transaction):SQL Server引擎级别的事务,在一个连接中使用T-SQL中的事务注意:在SQL Server联机丛书中MSDTC是这样定义的:Microsoft 分布式事务处理协调器 (MS DTC) 允许应用程序跨两个或多个 SQL Server 实例扩展事务。此外,该协.. 阅读全文
posted @ 2011-09-23 19:29 nd 阅读(4439) 评论(1) 推荐(3) 编辑
摘要:可靠性和扩展性是所有系统的最终目标之一,他们两个看起来有些对立,不过通常来讲他们又有相互的联系。错误和造成错误的条件是可靠性最明显的威胁。SSIS提供了解决这些情况的优雅的方法。这个章节中要关注的特性是错误输出和检验点,使用他们来实现可靠性,他们也可以保证包的执行性能和扩展性。 重新启动一种经常遇到的情况,一个需要整夜执行的包执行失败了,需要重新执行它。如果其中一个步骤非常的耗费资源和时间,重新执行它是一件痛苦的事情。在DTS中没有类似“断点续传”的功能。重新执行一个失败的包是很容易再次出错的。由不同的策略在解决这些问问题,但是需要清楚DTS模型的工作原理,大多数DBA都没有这样的工作经验。. 阅读全文
posted @ 2011-09-21 17:02 nd 阅读(2483) 评论(0) 推荐(1) 编辑
摘要:脚本组件提供另外一种在SSIS中使用脚本的方法,它只能在Data Flow中使用,不能在Control Flow中使用,它用来提供数据,接收数据,转换数据。下面是三种类型: 数据源类型:用来提供数据源,可以定义输出类型,使用脚本填充数据。了个典型的例子是使用脚本来读取复杂的文件,XML,或者更加过时的COBOL等等不能产生平面文件的文件 数据目的类型:用来将数据填充到Excel,或者平面文件,或者将文件批处理到大型机上 转换型:用来接收数据,产生新的转换数据,当SSIS提供的组件不能满足需求的时候使用 使用脚本组件这里我们举例说明如何创建和使用脚本组建,我们处理一个文件,按照需求清洗文件中的. 阅读全文
posted @ 2011-09-20 15:34 nd 阅读(6679) 评论(2) 推荐(0) 编辑
摘要:COM和他的后继.NET有一个特点是可以重复使用其他语言编写的程序集。SQL Server 2005版本中的脚本任务中只能使用VB.NET来实现,在这里我们可以使用任何.NET语言编写的程序集。使用程序集可以重复使用已经写好的代码,可能在你的程序中写好了数据验证的方法,现在可以在package中重用这些代码。再次写已经测试过的正在使用的代码是没有意义的。要在自己的代码中使用程序集,需要首选引用它。我们先要把程序集放在一个可以获得的路径中,并保证所在的机器中安装了.NET Framework。在Visual Studio编辑环境中添加程序集。在项目菜单中选择添加引用,如图1。图1 从列表中选择. 阅读全文
posted @ 2011-09-19 18:44 nd 阅读(1286) 评论(0) 推荐(0) 编辑
摘要:脚本任务主要用来控制数据流,当现有的控制流 任务不能满足复杂的设计要求的时候,就应该考虑使用脚本任务。这里我们创建第一个脚本任务,和其他的教学例子一样,我们也将创建一个简单的HelloWord程序。新建一个package 命名为ScriptTaskExample在Control Flow内拖放一个Script,如图1图1 双击打开编辑界面如图2图2 点击左边Script标签,打开界面如图3图3 这里有几个属性标签下面做一些说明a. ScriptLanguage:在这里可以设置要使用的语言。SSIS2005版本中只支持Visual Basic.NET,后续版本中添加了C#b. Precom... 阅读全文
posted @ 2011-09-16 18:32 nd 阅读(10368) 评论(0) 推荐(2) 编辑
摘要:表达式是使用一些元素组合起来产生一个唯一的值。这些元素包括变量,字面值,函数,存储过程和运算符。一个简答的表达式是1<2,它的结果是true。虽然表达式是从C语言中衍生出来,但是他们大小写不明感。SSIS中很多的任务都支持表达式。所有的任务都支持使用表达式来配置属性。例如For Loop和Foreach Loop中可以使用表达式来设置循环条件,Derived Column任务可以使用表达式来定义输出。 动态属性SSIS中通过表达式可以动态的执行转换任务。右击任务选择编辑,打开编辑界面。在左方有一些归类标签,点击这些标签可以打开一类相关的属性。每一种任务都会有一个表达式标签,如图1图1 在 阅读全文
posted @ 2011-09-15 21:41 nd 阅读(4002) 评论(0) 推荐(1) 编辑
摘要:数据转换服务中有执行客户SQL脚本的转换,在SSIS中这个特性得到加强。在SSIS中可以使用VB.NET这种语言。这个系列中将介绍这些脚本任务,例如控制执行流程,实现自定义转换,并举例说明。在SSIS中有下面几种脚本任务。ActiveX Script Task:这种任务允许执行ActiveX语言脚本,例如VBScript。这种任务是为了和以前版本兼容,在SQL Server 2008版本中已经被去掉,这里我们不会详细介绍。Script Task:这种任务是用来代替ActiveX script Task的,用它来控制包的执行。它允许执行VB.NET语言,很不幸只能使用这一种语言。但是还有一个选择 阅读全文
posted @ 2011-09-14 16:00 nd 阅读(3238) 评论(0) 推荐(0) 编辑
摘要:在T-SQL中没有除法运算,但是在T-SQL中可以实现类似除法的操作Divide。一般除法操作的结果一个列来自于被除关系表,剩下的来自除关系表。这里举一个例子来说明。假设如下有三个表:客户Customers,销售人员Employees,订单Orders,查询返回一些客户,要求这些客户和所有美国雇员都至少有一次交易记录。来看下面一个语句:select custid from Sales.Customers as Cwhere not exists(select * from HR.Employees as Ewhere country='USA'and not exists(se 阅读全文
posted @ 2011-09-02 14:13 nd 阅读(7994) 评论(3) 推荐(1) 编辑
摘要:SQL语句是一种集合操作,就是批量操作,它的速度要比其他的语言快,所以在设计的时候很多的逻辑都会放在sql语句或者存储过程中来实现,这个是一种设计思想。但是今天我们来讨论另外一个话题。Sql页提供了丰富的函数供我们使用,还有很多操作有意想不到的结果,今天这个随笔来看看一些不常见到的sql语句。这些语句不像普通的增删查那样平白,它的奇妙之处有时候让人另眼相看。 1. 假设我想把Person.Contact表中所有人的名字用逗号连接起来,串成一个字符串,可能会想到使用游标把FirstName查出来然后逐行赋值给一个字符串变量,可是使用游标的代价是很大的。看看下面的代码:declare @name. 阅读全文
posted @ 2011-08-01 16:55 nd 阅读(3664) 评论(22) 推荐(4) 编辑
摘要:渐变维度(SCD)转换提供了一种维护渐变维度或渐变表的方法,渐变维度的分析处理是一个很大的话题。一般一个维度表通常包含一些描述其他信息的离散值,例如,价格,重量,销售地区。问题是如果随着时间的推移这些信息改变我们将如何维护这个表,特别是在数据转移的过程中。例如我们查看AdventureWorks中的product表,如图1图1 通常在联机事务处理(OLTP)数据库中,我们会用一行的数据来保存产品信息。如果产品的售价从10美元上涨到15美元,我们直接更新StandardCost字段为15,这样做完成了任务:现在的售价是多少?但是丢失了历史数据,我们不知道涨价之前的价格是多少?价格上涨了多少?解决 阅读全文
posted @ 2011-07-17 17:42 nd 阅读(5915) 评论(4) 推荐(4) 编辑
摘要:提到排名函数我们首先可能想到的是order by,这个是排序,不是排名,排名需要在前面加个名次序号的,order by是没有这个功能的。还可能会想到identity(1,1),它也给了一个序号,但是不能保证给出的序号是连续升序的。除非能够保证所有的Insert语句都能够正确成功地完成,并且没有删除操作,实际的使用中大多数的表都不能保证这样。好在SQL Server中提供了一些排名函数来辅助实现这些功能。排名函数按照需要的顺序对数据进行排名,并提供一个值对数据。下面来了解一下这些排序函数功能。 ROW_NUMBERROW_NUMBER函数允许以上升,连续的顺序给每一行数据一个序号,注意ROW_N 阅读全文
posted @ 2011-07-08 19:22 nd 阅读(4999) 评论(16) 推荐(10) 编辑