扩展事件在Denali CTP3里的新UI(二)

在前面一篇博文里我们介绍了如何使用扩展事件(XEvent)在Denali CTP3里的新UI创建和修改XEvent session,本文我们将介绍如何用新UI来显示和分析数据,我们将试图找到一个workload中平均开销最大的query。 在Object Explorer里右键点击前文创建的blogtest session,选择Watch Live Data,如图1所示,这将在SSMS里打开一个新的Live Data窗口,这时我们可以执行我们的workload,workload可以是应用程序的运行,也可以是一段SQL的执行,或者重播Profiler记录的SQL Trace,这里我们在SSMS的另一个窗口执行创建Northwind数据库的instnwnd.sql来模拟一个workload。 图1 启动Live Data窗口 当instnwnd.sql执行完毕后,先前打开的Live Data窗口会出现很多行数据,这些就是blogtest session所记录的sql_statement_starting和sql_statement_completed事件,这时可以点击工具栏上的Stop Data Feed按钮(工具栏第二个按钮),这样可以避免和workload无关的事件继续被Live Data窗口显示,如图2 所示。 图2 Live Data窗口 你的Live Data窗口可能只有2个列,name和timestamp,这是仅有的2个所有扩展事件共有的列,你可以选择工具栏上的Choose Columns…按钮添加/删除需要显示的列,我增加了3个列database_name,duration和statement,如图3所示。 图3 选择列 我们要找到Northwind数据库里平均执行时间最长的query,首先我们可以过滤不必要的事件,前文曾提到过Predicate可以在SQL Server端避免不需要的事件被产生,我们同时也支持客户端的过滤器,这可以帮助你做各种分析。点击工具栏上的Filters…按钮,这将打开Filters对话框,这里我们设置两个条件name=sql_statement_completed And database_name=Northwind,如图4所示。为了避免输入错误,你可以从事件列表里拷贝粘帖,你还可以右键点击某个Cell然后选择Filter by this Value,这将自动为你添加一个子句并And到原有条件上。 图4 Filter对话框 过滤掉不必要的事件后我们按照statement来做分组,点击工具栏上的Grouping…按钮,把statement移动到右边,点击OK,如图5所示。 图5 Grouping对话框 分组的目的是为了计算每个分组上duration的平均值,下面可以点击工具栏上的Aggregation…按钮,我们在duration上选择AVG,然后选择在duration(AVG)上按降序排序,如图6所示。 图6 Aggregation对话框 这样duration平均值最大的分组将被显示在第一行,我执行instnwnd.sql的workload里duration最大的分组是INSERT “Order Details” VALUES(10444,17,31.2,10,0),它的duration是134206微秒,如图7所示。这样我们就找到了平均开销最大的query。 图7 开销最大的query 前文在创建blogtest session时增加了event_file的target,如果你打开SQL Server所在机器的Log目录(比如C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log),你会发现一堆blogtest*.xel,你可以双击任何一个文件在SSMS里打开和Live…

1

扩展事件在Denali CTP3里的新UI(一)

去年年底时我曾经写过一篇介绍扩展事件(XEvent)在Denali CTP1里新功能的博文,在CTP1中我们提供了一个Object Model和一个简单的UI,在不久前发布的Denali CTP3里我们对XEvent的UI做了更好的支持,本文将进行介绍。 首先我们提供了一个功能强大的对话框用于创建/修改SQL Server里的XEvent Session,你可以在Object Explorer里右键点击Extended Events下的Sessions节点选择New Session…来新建一个Session,如图1所示。这将打开新建Session对话框,这个对话框有4个页面,分别是General、Events、Data Storage (Targets)、Advanced页面,下面我们一一介绍。   图1 新建Session 第一个General页面里你可以输入Session的名字,选择一些选项,比如Session是否和SQL Server一起启动,Session创建成功后是否立即启动该Session等等。我们支持与Profiler里模板类似的概念,只要选择一个模板,Event(包括Action和Predicate)和Target以及某些选项就自动选择好了,但是在CTP3里只有一个Standard模板,这个模板所选择的事件和Profiler里的Standard模板相对应。你也可以把自己创建的Session作为模板保存起来以备后用,保存模板只需要右键点击某个Session然后选择Export Session…即可。这里我们输入blogtest,并选择”Start the event session immediately after session creation”让blogtest在创建成功后立即启动,如图2所示。 图2 General页面 点击左边的Select a page列表里的Events切换到Events页面,这个页面是最复杂的,也是UI能够给你提供最大帮助的地方。你首先看到它分为左右两部分,左边是事件库,所有在SQL Server里注册的扩展事件都列在这里,右边是你选择的事件。在事件的选择上我们做了很多工作来帮助您:1. 你可以点击抬头排序,默认是按事件名排序;2. 可以输入关键字进行过滤,比如图3中我们输入sql_,所有名字含有sql_字样的事件都被列了出来并且高亮显示,过滤可以作用在事件名称上,也可以在事件的名称和描述上,或者事件所含的Fields上,你可以点击事件库右上方的ComboBox切换,所有的过滤都有高亮显示;3. 在Category和Channel上我们实现了和Excel类似的过滤过能,你可以点击Channel右边的下拉箭头选择只看Analytic channel的事件。 找到你需要的事件后,双击它或者点击两部分中间的>按钮加入选择,在这里我们选择了sql_statement_starting和sql_statement_completed事件。你可能注意到了有两个小图标(闪电和漏斗)显示在已选择事件的列表中,下面会介绍。 图3 在Events页面里选择事件 点击Events页面右上方的Configure按钮,页面将会滑动,事件库被隐藏,而配置事件的页面将出现,如图4所示,当然你点击Select可以回到刚才的页面。你会看到闪电和漏斗图标分别出现在了右边配置页面的Actions标签和Filter标签上,闪电代表的是该事件上有多少Global Fields(Actions)关联,漏斗代表该事件有没有Filter(Predicate)关联。 Action是指在发生事件的时刻可以读取的环境数据,比如event_sequence可以为所有事件排序,Profiler里每个事件都含有EventSequence列,而在XEvent里则被作为Action来实现了。 Predicate可以减少不必要的事件收集,比如我可以配置sql_statement_starting事件的Predicate为database_name=’Northwind’,那么发生在其他数据库的sql_statement_starting事件就不会被该Session所收集,Profiler可以为所有事件设置一个Column Filter,而XEvent支持为每个Event设置各自独立不同的Predicate,有兴趣可以参考MSDN里扩展事件对Action和Predicate的介绍。Event Fields标签列出所有该Event的列,某些Event会把一些开销比较大的列作为可选的列,你可以点击前面的CheckBox选择是否收集该列数据,比如sql_statement_starting的statement列就可以被取消选择。 你可以同时选择多个Event并选择/取消Action或配置Filter,在这里我们为sql_statement_starting和sql_statement_completed事件选择database_name action,不添加Filter并保持Event Fields默认值。 图4 在Events页面里配置事件 第三个页面是Data Storage页面,在这个页面里可以选择为Session添加不同的Target,这里我们选择event_file target并保持默认配置。 图5 Data Storage页面…

0

利用Contained Database和DAC来开发基于SQL Server "Denali"和SQL Azure之上的应用程序

大家好! 在刚刚结束的Microsoft TechEd China 2011中,我们在分会的一个小时里为大家讲解并演示了如何利用Contained Database和DAC来开发基于SQL Server “Denali”和SQL Azure之上的应用程序。为了能够和更多的开发人员和DBA介绍和分享CDB及DAC,并提供相关资源和工具下载的链接,我们特撰文如下,希望有所帮助。 背景 让应用程序的数据层可以在本地SQL Server服务器、私有云、共有云之间方便的部署、移动、升级和管理,正在迅速成为当前云时代的关键技术之一。SQL Server “Denali” 的新增功能——包含的数据库Contained Database (CDB) 和数据层应用DAC正是为了满足这一需求而研发并推出的。这两项技术在一起所提供的功能,将SQL Server应用程序的开发、部署、和不同环境之间的移动完全流程化了,让开发人员和DBA能够淋漓发挥,游刃有余。 进展 亮点简述 包含的数据库Contained Database (CDB):排序规则和安全认证已经可以内置在CDB中; 数据层应用DAC:BACPAC既包含数据库的元信息,也包含数据;原地升级;可以防止篡改; 代码名为“Juneau”的SQL Server开发工具:基于Visual Studio 2010,可以从现有数据库中提取信息新建项目;智能感知(IntelliSense);可深层验证;版本化build;可声明目标平台,定义服务器选择策略;界面友好直观; 导出导入工具:广泛支持SQL Server 2000(仅支持导出)、2005、2008、2008 R2、SQL Server Denali及SQL Azure。 相关资源及下载: 微软MSDN 英文介绍 “包含的数据库” SQL数据库导入导出工具 微软技术白皮书 英文《SQL Server 2008 R2 中的数据层应用程序》 SQL Server开发工具”Juneau” 微软MSDN 中文 SQL Server论坛 最后,为了让更多的开发人员和DBA了解CDB及DAC,我们会在10月24日进行一个同样内容的网络直播,详细信息和注册请参考http://technet.microsoft.com/zh-cn/hh506399 。…

1

SQL Server Migration Assistant简介(二)

在前一篇博文里我们介绍了使用SSMA for Oracle 5.0做Oracle数据库迁移之前的评估,本文中我们将介绍如何做Schema迁移和数据迁移。 首先我们需要连接目标数据库,点击工具条上的Connect to SQL Server,输入Server name,在Database里输入HR,如图1所示。如果你的SQL Server里不存在HR数据库,点击Connect后SSMA会提示错误,问你是否创建HR数据库,选择Yes。HR数据库创建后SSMA可能会提示SQL Server Agent未运行,这仅在使用服务器端数据迁移时才会用到,默认情况下我们使用的是客户端数据迁移,所以可以点击Continue忽略。  图1 连接到SQL Server服务器 连接上SQL Server服务器后我们就可以迁移Schema了,这里的Schema指数据以外的数据库定义,比如表结构、视图定义、存储过程等等。右键单击Oracle Metadata Explorer里的HR数据库,选择Convert Schema,如图2所示。SSMA运行一段时间后会在最下方的Output栏里显示转换是否有错误、警告或信息。这时你可以展开SQL Server Metadata Explorer里HR数据库的dbo schema,在Procedures文件夹下会发现ADD_JOB_HISTORY等存储过程,Tables文件夹下会发现COUNTRIES等表,说明Schema的迁移已经成功。 图2 转换Schema 如果这时你使用SQL Server客户端工具SQL Server Management Studio或者Visual Studio的Server Explorer查看SQL Server上的HR数据库,你会发现找不到前面所说的存储过程、表或者视图。这是因为Convert Schema菜单项只是在SSMA的Project里进行了转换,并未转换到数据库。这么设计为了让你可以在同步到SQL Server之前再做些其他修改,比如REGIONS表里的REGION_ID列在Oracle里是NUMBER类型,它被SSMA转换成了最安全的float(53)类型,如果你知道REGION_ID就是个整形,你可以把它修改为int类型,当然你最好对COUNTRIES表的REGION列也做同样的修改。 在确认Schema迁移没有问题后,你可以同步到SQL Server数据库了,在SQL Server Metadata Explorer里右键点击HR数据库,选择Synchronize with Database,如图3所示。 图3 同步HR数据库到SQL Server 这时可能会再次弹出SQL Server连接对话框和SQL Server Agent未运行的警告,确认后会显示Synchronize with the Database对话框,如图4所示。对话框里列出了SQL Server数据库和SSMA的树结构的差别,可以选择Hide Equal…

2

SQL Server Migration Assistant简介(一)

SQL Server Migration Assistant(简称SSMA)是由微软发布的帮助客户更容易地从Oracle/Sybase/MySQL/Access迁移到SQL Server以及SQL Azure的一个工具集,几周前我们刚刚发布了SSMA 5.0版本,该版本支持了最新的代号为Denali的SQL Server的CTP版本,并且增加了对SQL Azure迁移的支持。下表说明了SSMA 5.0所支持的迁移矩阵: Migrating From Using SSMA Tool To SQL Server (2005, 2008, 2008 R2, “Denali”) To SQL Azure Sybase SSMA for Sybase √ √ (New in SSMA 5.0) Oracle SSMA for Oracle √ MySQL SSMA for MySQL √ √ Access SSMA for Access √ √ 这里我们选择SSMA for…

4

StreamInsight手札(五)——使用EventFlowDebugger调试事件流

StreamInsight提供了EventFlowDebugger以方便用户进行事件流调试。这一工具拥有直观的图形化界面,支持即时调试和日志调试,支持跟踪和回溯。 本文将介绍EventFlowDebugger基本使用方法。 EventFlowDebugger分为在线模式和离线模式两种使用方法。在线模式下,用户连接到StreamInsight服务器,在线进行调试,或者录制某一段时间的事件流供离线模式使用。离线模式下,用户通过加载Trace文件对事件流进行调试。 下面对其主要功能进行介绍。 连接到服务器(在线) 在线模式需要用户连接到一个正在运行的StreamInsight服务器。 StreamInsight服务器有两种,嵌入服务器和远程服务器: 嵌入服务器(Embedded Server):var cepServerEmbedded = Server.Create(); 远程服务器(Remote Server):var cepServerRemote = Server.Connect(“http://servername/StreamInsight”); 如果使用远程服务器,则用户可以直接连接远程服务器的地址。如果程序使用嵌入服务器,则需要在程序中添加如下代码:  ServiceHost _dvHost = null;IManagementService _service = null;IManagementService proxy = server.CreateManagementService();_service = proxy;_dvHost = new ServiceHost(proxy); WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message);binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;binding.MaxReceivedMessageSize = 4655360;_dvHost.AddServiceEndpoint(typeof(IManagementService), binding, “http://localhost:8080“);_dvHost.Open(); 同时需要添加引用Microsoft.ComplexEventProcessing.ManagementService.dll,输入加亮部分地址就可以连接嵌入服务器了。 连接到服务器的几种常见错误 错误1 HTTP could not register URL http://+:8001/. Your process…

0

StreamInsight手札(四)——使用IEnumerable接口创建StreamInsight程序

本文将介绍如何利用IEnumerable接口创建StreamInsight应用程序。 IEnumerable与IObservable最大的区别在于IEnumerable是采用Pull模式获取数据,而IObservable则是用Push模式推送数据。 用户首先通过IEnumerable.GetEnumerator来获得数据源的Enumerator,然后通过调用IEnumerator.MoveNext和IEnumerator.Current来获取数据。StreamInsight的输入输出通过一个数据队列连接。输入适配器获得数据,并调用Enqueue将数据放入队列,输出适配器循环检测队列是否为空,如果不是空队列,则调用Dequeue将数据取出。 在HelloInsight程序基础上,可以通过如下修改来实现IEnumerable接口。 1、获取输入数据源的Enumerator(HelloPointInput.cs): public HelloPointInput(HelloInputConfig config) {     _config = config;       var streamReader = new StreamReader(config.fileName);     strings = new List<string>();                 while (!streamReader.EndOfStream)     {         strings.Add(streamReader.ReadLine());     }     stringEnumerator = strings.GetEnumerator();                 streamReader.Close(); } 2、读取Enumerator中的数据,并放入队列。注意判断队满的情况(HelloPointInput.cs): private void ProduceEvents() {     while (AdapterState != AdapterState.Stopping)     {…

0

StreamInsight手札(三)——使用IObservable接口创建StreamInsight程序

本文将介绍如何利用IObservable接口创建StreamInsight应用程序。 Observer是.net Framework 4中引入的开发模式。IObserver<T>和IObservable<T>接口为基于推送的通知提供通用机制,也称为观察者设计模式。IObservable<T> 接口表示发送通知(提供程序)的类;IObserver<T> 接口表示接收通知(观察器)的类。 在下列应用场景下,适合采用Observable模式: 历史数据查询。对有限长的大数据集进行临时的查询。 Ad hoc查询。对数据进行一系列交互的ad hoc查询。 内嵌于用户程序。StreamInsight内嵌于用户应用程序之中。 使用这种开发模型,开发者只需要: 实现IObservable接口 实现IObserver接口 绑定到查询 下面将用示例代码来说明.。 1、安装Reactive Extension for .Net 4:  2、新建一个工程,注意选择.net framework 4.0。 3、添加如下引用。System.CoreEx和System.Reactive在C:\Program Files\Microsoft Cloud Programmability\Reactive Extensions\v1.0.2856.0\Net4\目录下。 定义事件Payload: namespace HelloInsightObservable {     public class HelloPayload     {         public int value { get; set; }     } } 5、定义InputObservable类实现Iobservable接口 public class InputObservable…

0

利用SQL Server 2008迁移助手完成从Oracle到SQL Server的迁移——视频教学

讲师: 资深项目经理  王清越 你有Oracle数据库要迁移到SQL Server吗?微软提供了一个免费的工具来帮你做数据库迁移。我们会讨论迁移到 SQL Server的好处,和如何用SQL Server迁移助理(SSMA)来自动做数据库迁移。我们会演示如何用SQL Server迁移助理来迁移数据库模式和PL/SQL程序等。我们一起探讨SQL Server迁移助理(SSMA)如何为你节省数据库迁移的时间和成本。 [View:http://wm.microsoft.com/ms/china/technet/howtovideo/sqlserver2008/20110317_SSMAforOracle.wmv] 如果有什么问题,请直接通过评论提出。

1

利用SQL Server 2008 R2升级顾问进行升级前的准备和评估——视频教学

讲师:项目经理 林默 这个视频教学讲介绍如何利用Microsoft SQL Server 2008 R2升级顾问对SQL Server 2005的实例进行分析,以为升级到 SQL Server 2008 做准备。 [View:http://wm.microsoft.com/ms/china/technet/howtovideo/sqlserver2008/20110308_SQLServer_Upgrade_Advisor.wmv] 如果有什么问题,请直接通过评论提出。

2