DAT328 SQLCLR 与 T-SQL:数据库开发最佳实践

Slides:



Advertisements
Similar presentations
Web Role 的每台虚机运行有 IIS ,用于处理 Web 请求 Worker Role 用于运行后台进程 Cloud Service 是什么? 支持多层架构的应用容器 由多个 Windows 虚拟机集群构成 集群有两种类型: Web 和 Worker Cloud Service 做什么 进行应用的自动化部署.
Advertisements

泛舆情管理平台 ——助力媒体业务创新 新模式 新格局 创新盈利增长点 2/26/2017 1:59 AM 屈伟: 创始人,总裁
中国银行业前置端操作系统移植研究.
借助公有云实现游戏的弹性运营 Shaun Fang (方兴) Azure开发技术顾问
吴峻 软件设计工程师组长 Exchange Server 微软有限公司
王书贵 资深分析师 CCW Research 计世资讯
深市协助执法及证券查询业务介绍 客户服务部 China Securities Depository
顏協邦 慧盟資訊 商業智慧導入服務部 資深經理
Database Architecture, not only DBA
抱怨處理技巧 高雄捷運公司 公共事務處 胡宜萍 安全 ‧ 便捷 ‧舒適 ‧ 可靠
请点击以下链接下载WinHEC的演讲材料
1. 设定愿景,确定业务场景 Microsoft Corporation
金融信息安全人才培养的思考与实践 中央财经大学 朱建明 2012年11月24日.
广东省广州市花都区教育局教研室 汤少冰 优化评估方式, 促进中学英语的教与学 广东省广州市花都区教育局教研室 汤少冰
張書源 Microsoft MVP MCT 趨勢科技 技術經理 網酷科技 資深顧問 集英信誠 資深顧問
Excel VBA视频教程 课程介绍-什么是VBA
Office 2013 全新功能介紹 台灣微軟 Office 大使 楊承恩 Marcus Microsoft Office
——打造科技金融升级版 中国建设银行顺德分行 2015年6月.
2017年9月14日12时3分 DEV349 Visual C 无缝集成,无限潜力 李建忠 微软特约讲师 上海祝成科技
四川省集体林权流转平台 中国西部林权交易网
全国信息技术标准化技术委员会 (SAC/TC28)工作交流
DEV323 .NET架构:全球化思想! 定制各种文化及国际数据
MBL 340 Tablet PC SDK:在您的应用程序中使用数字墨水
Windows Vista 操作系统最新安全特性
BizTalk Server 2004.
解振宇 客户技术经理 客户售前技术部 微软中国有限公司广州办事处
11/17/2018 5:15 PM 病毒,间谍软件最新趋势 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes.
Mobile & Embedded DevCon 2005 朱敏博士 微软有限公司
从UNIX到Windows的 电信软件移植实践
Microsoft Office SharePoint Server 2007 事件追蹤與專案管理
利用最新Hyper-V Replica 功能達成Hyper-V 災難備援機制
BizTalk Server 2004.
MSG 330 Exchange服务器性能调节技巧
服務啟用、導入流程、 郵件移轉步驟簡介 Microsoft Office 12/2/2018
OFC351 利用Office System开发复杂的商务解决方案 架构、模式、场景
MBL 325 开发跨平台的 Windows Mobile应用程序
BizTalk Server 2004.
使徒行傳 21:17-23章「保羅的見證(一)」 引言 預言保羅為主的名受許多的苦難的實現
PaPaPa项目架构 By:Listen 我在这.
2/24/2019 5:40 AM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
教师课堂教学能力提升培训 ---“互联网+教育”考勤小测验 Plickers 洛阳理工学院
SOA – Experiment 2: Query Classification Web Service
SQL Server Mobile 2005 程序开发(三)
第1章 SQL Server 2005概述 教学提示:SQL Server 2005是微软的下一代数据管理和分析解决方案,它给企业级应用数据和分析程序带来更好的安全性、稳定性和可靠性,使得它们更易于创建、部署和管理,从而可以在很大程度上帮助企业根据数据做出更快、更好的决策,提高开发团队的生产力和灵活度,以及在减少总体IT预算的同时,能够扩展IT基础架构以更好地满足多种需求。
OFC316 在SharePoint Portal Server 2003中实现工作流
SQL Server Mobile 2005 程序开发(五)
DEV210 Windows Presentation Framework (代号Avalon) 360度
呂政周 精誠恆逸教育訓練處 資深講師 Windows PowerShell 呂政周 精誠恆逸教育訓練處 資深講師
可愛的鍬形蟲 五年四班2.
VB与Access数据库的连接.
4/30/2019 7:40 AM 約翰福音 15:9;17:20-23 加拉太書 6:1-2 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product.
模式与实践:Windows Mobile 5.0应用程序架构
DEV 343 VS2005超快速开发方案/EEP2006控件包.
5/4/2019 4:42 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
微軟資安稽核解決方案 System Center 2012
耿志刚 应用整合产品技术专家 专业解决方案部 微软中国
Microsoft Visual C# 2005: IDE 技巧与诀窍
Windows 徽标计划工具:综述与发展趋势
5/5/2019 7:06 PM 两跨框架梁截面配筋图的绘制 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may.
SQL Server Mobile 2005 程序开发(二)
MBL302 设计Windows Mobile应用程序的用户界面
DEV 343 VS2005超快速开发方案/EEP2006控件包.
会议编号 Visual Studio 2005与SQL 2005协同工作
蔺华 ISV开发合作经理 平台及开发技术部 微软(中国)有限公司
WEB程序设计技术 数据库操作.
MSG 361 如何从Exchange 5.5迁移 胡义 咨询顾问 上海星移软件有限公司 2019年7月31日8时9分
DEV310 Microsoft Visual Studio 2005托管代码调试
強化 Windows 平台 唐任威 資深講師.
高擴充高穩定高安全 企業級資料管理平台 Report Builder概論 錢曉明 資策會 資深講師 台灣微軟 資深講師.
DEV243 Visual Studio Team System 测试深入探讨
Presentation transcript:

DAT328 SQLCLR 与 T-SQL:数据库开发最佳实践 2019年7月17日11时52分 DAT328 SQLCLR 与 T-SQL:数据库开发最佳实践 孙巍 技术总监 北京中达金桥技术服务有限公司 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

基本概念 SQL:关系型数据库的查询语言 T-SQL:Microsoft SQL Server在SQL上的扩展程序语言 XP_SP:复杂过程的代码 通常使用C++开发 sp_OA:OLE自动过程 通过T-SQL调用COM对象 SQLCLR:SQL Server使用Microsoft.NET

XPs 和 OLE Automation XP_SP使用ODS OLE automation 托管代码 最初是为了满足软件集成商的需求 今后将不再推荐 OLE automation 使用XP_SP做为包装 迁移到SQLCLR 今后我们可以使用SQL\T-SQL\SQLCLR

使用SQL 对于集合操作SQL是最佳选择 最快速的集合查询 在任何语言中游标访问速度都不快 通过统计信息优化 快速执行 硬编码的执行计划 额外的存储开销 而外的数据获取开销

选择什么语言 解释型的T-SQL 变异型的SQLCLR 对于大量的程序代码没有做优化 字符串处理没有优化 对于数据中心应用程序有很好的函数库 处理代码可以有数量级的性能提升 对于过程代码- 代码越多,可以获得更快的性能 .NET BCL are “built-ins”

过程示例 假设你想编写 正则表达式 XSLT SQLCLR是最佳选择 SQL查询优化器没有帮助 处理速度有数量级的提升

2019年7月17日11时52分 正则表达式 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

CLR和UDFs 对于UDFs首选CLR 因为T-SQL所以UDF性能慢 UDF通常是用于计算 如果没有数据,没有数据访问开销 2019年7月17日11时52分 CLR和UDFs 对于UDFs首选CLR UDF通常是用于计算 如果没有数据,没有数据访问开销 DataAccessKind SystemDataAccessKind 因为T-SQL所以UDF性能慢 因为解释型所以慢 SQL Server 2005中的T-SQL UDF比SQL Server 2000中的快 但是还是比SQLCLR UDF慢 DataAccess=DataAccessKind.None (不需要数据访问功能) DataAccess=DataAccessKind.Read SystemDataAccess=SystemDataAccessKind.None(不需要访问系统数据) SystemDataAccess=SystemDataAccessKind.Read © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

表值函数 SQLCLR可以对产生的结果数据进行流式处理 Better for multi-statement TVFs 2019年7月17日11时52分 表值函数 SQLCLR可以对产生的结果数据进行流式处理 Better for multi-statement TVFs T-SQL表值函数将临时结果存储在工作表中 容易创建 IEnumerator or IEnumerable © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

2019年7月17日11时52分 表值函数 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

外部资源 对于访问外部资源SQLCLR是最佳选择 外部资源包括 对于非托管存储过程,SQLCLR是首选 文件系统 事件日志 Web Service客户端 注册表

2019年7月17日11时52分 访问外部资源 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

T-SQL和数据访问 T-SQL调用SQL更加有效 SQLCLR添加额外的层次 和SQL共享缓存 本机代码到托管代码的转换开销 使用SqlContext封装数据访问

参数指向 T-SQL支持 输入参数 OUT参数 SQLCLR支持 ByVal=T-SQL输入参数 ByRef=T-SQL OUT参数

SQLCLR和数据类型 本地.NET类型-没有数据库中的null .NET无法表现的数据类型 Int,string等等,除了null Use “RETURNS NULL on NULL INPUT” UDF only 使用System.Data.SqlTypes 注意SQL DECIMAL vs. .NET Decimal .NET无法表现的数据类型 Varchar TIMESTAMP

2019年7月17日11时52分 SqlTypes © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

SQLCLR 结果的传递途径 SQL在完成后才能显示SQL结果 非SQL不是这种工作方式 SQLCLR SqlPipe已经优化过 直到查询完成才能显示第一行结果 非SQL不是这种工作方式 立即构造结果集 传递结果 SQLCLR SqlPipe已经优化过 SendResultsStart SendResultRow SendResultEnd 对于SQL查询没有优化作用

SQLCLR 数据访问 SQLCLR使用ADO.NET 通过SqlClient共享类库 服务器特殊的类 Microsoft.SqlServer.Server SqlContext SqlPipe WindowsIdentity SqlTriggerContext

使客户端代码吗? SQLCLR代码使用数据库资源 如果是数据库在本地 在服务器上 大量数据 远程客户端 使用数据库资源

规则 使用SQL 使用T-SQL 使用SQLCLR 所有基于数据集的操作 包装SQL操作 用户自定义函数 计算敏感型存储过程 访问SQL Server 外部资源 T-SQL没有提供的功能

资源 http://www.microsoft.com/china/msdn/library/data/sqlserver/sqlclrguidance.mspx

Question SQLCLR的如何向客户端返回结果集? 在SQLCLR如何返回标值函数? 那些操作不适合使用T-SQL实现,举3个例子?