提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:莫成敏|2020-04-14 15:21:56.083|阅读 275 次
概述:本教程发现了使用SQL Prompt代码段消除重复执行各种任务的乐趣,这些任务从插入注释标头、创建表到执行有用的元数据查询。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
SQL Prompt根据数据库的对象名称、语法和代码片段自动进行检索,为用户提供合适的代码选择。自动脚本设置使代码简单易读--当开发者不大熟悉脚本时尤其有用。SQL Prompt安装即可使用,能大幅提高编码效率。此外,用户还可根据需要进行自定义,使之以预想的方式工作。
本教程发现了使用SQL Prompt代码段消除重复执行各种任务的乐趣,这些任务从插入注释标头、创建表到执行有用的元数据查询。本文为该教程后半部分内容,内容紧接前文!
用于创建对象的代码片段
每当我创建数据库对象时,无论出于何种原因,该任务通常都会包含一些“重复元素”。例如,当我创建一个表时,它几乎总是具有某些共同的特征,或者每次执行任务时(例如,提取最近添加到表中的所有行以进行报告),我经常需要相同的对象集。
一旦我开始思考我经常执行的任务,有关片段的想法就开始堆积起来!
更有用的“创建表格”代码段
当然,我创建的每个新表的名称和总体结构都不同,但是我们创建的每个表都包含以下共同要求:
CREATE TABLE $SchemaName$.$TableName$ ( $TableName$id int NOT NULL CONSTRAINT PK$TableName$ PRIMARY KEY, RowCreatedTime datetime2(0) NOT NULL CONSTRAINT DFLT$TableName$$RowCreatedTime DEFAULT(SYSDATETIME()), RowLastModifiedTime datetime2(0) NOT NULL CONSTRAINT DFLT$TableName$$RowLastModifiedTime DEFAULT(SYSDATETIME()) ) WITH (DATA_COMPRESSION = PAGE);
占位符为$SchemaName$和$TableName$,后者重复多次。调用代码段,输入架构名称,然后开始输入表名称,在这种情况下,我将其称为NewTable:
当您编辑一个占位符实例时,它们全部都会改变!完成输入名称,然后按Enter:
我可能不会按原样使用代理键,但是我肯定会在表上有一个主键,它将根据此代码段中建立的标准进行命名。在我创建的大多数表中,我还将需要RowCreatedTime和RowLastModifiedTime列。在过去的五年中,我以相同的模式手动创建了数百个(即使不是数千次)默认约束。
自然地,创建表的其余大部分并不是公式化的,无法做成一个片段,但是该片段提供的是通用的重复部分的通用框架。我还创建了列摘要,它们将定义必要的DEFAULT,CHECK或FOREIGN KEY约束及其命名约定(通常包括表名,也许还包括列名)。了解产品信息,请咨询
监视表中创建的行的代码段下一个示例来自一个项目,在该项目中,我必须准备关于一组表上发生的新活动的每日报告。对于每个表,这需要几个存储过程来获取并保存在特定日期之后添加到基表中的行,以及一个用于存储结果以供报告的“ UsedRows ”表。
对于代码段而言,这是另一项完美的任务,因为尽管替代键的名称和数据类型可能会发生变化,但我们基本上使用同一组对象来获取每个表的数据。
这是代码段的代码:
请注意,这些代码片段足够聪明,可以处理在对象名称和字符串中使用$字符,这是我个人命名风格的一个功能。 参数名称的名称字符中不得包含空格,但是,如果命名标准要求多个$字符而不包含空格字符,则可能会出现问题。了解产品信息,请咨询
执行实用程序代码的工具
当我开始研究如何使用代码片段时,想到的第一件事就是使用它们来执行我经常执行的代码,这些代码是从源代码控制中保存的文件中执行的,通常用于回答有关实例状态或元数据的问题。我想出了两种方法来做到这一点,并且我都成功地运用了这两种方法。
SQLCMD“剪贴板”代码段
因此,假设您有一整套有用的元数据查询,所有这些查询都可以“按原样”运行,并且每个查询都存储在变更管理系统(GitHub,Dropbox等)中的单独文件中,并且与团队共享。作为一个非常简单的示例,其中一个可能是一个名为CheckLoginSystemCount.sql的文件,该文件报告了SQL Server 的登录计数。
SELECT login_name, COUNT(session_id) AS session_count FROM sys.dm_exec_sessions GROUP BY login_name;
我不需要在每个文件中四处寻找,而是创建了一个片段,该片段实际上只是SQLCMD :r命令的列表,每个都指向包含这些元数据查询之一的文件。
名称:querylist
/****************************************************** Execute queries stored in file system. Use SQLCMD mode to run ******************************************************/ --Use EXIT to make sure you don't accidentally execute everything. EXIT --in SQLCMD mode will stop processing EXIT --Check login count :R E:\Dropbox\Projects\PerformanceTools\CheckLoginSystemCount.sql EXIT --List locks on the instance :R E:\Dropbox\Projects\PerformanceTools\ListInstanceLocks.sql EXIT --Return size of current database files :R E:\Dropbox\Projects\Catalog\ListDatabaseConfigurations.sql EXIT --Other queries... EXIT
现在,当您调用该代码片段时,在设置为SQLCMD模式的SSMS查询窗格中,您将获得文件列表。只需突出显示:R指向您要运行的文件的行,它将执行文件中的内容。这些EXIT行确保您不会意外执行每个脚本。
调查锁活动的代码段
我有几个相当复杂的DMV查询,它们经常运行以调查数据库实例上的当前活动。例如,我有一个查询来查看数据库中当前持有的锁。它取自我和Tim Ford十年多以前写的关于DMV的书(尽管它有一些很好的查询仍然是相关的)。
同样,我曾经在源代码管理中将它存储在一个文件中,并根据需要将其搜索出来。90%的情况下,我可以“按原样”运行它,但是对于其他10%,我需要添加过滤器,选择不同的列,等等。令人恼火的是,当我关闭窗口时,我总是保存对原始文件的更改(该文件适用于90%的用例!)
我认为创建包含查询的代码片段比较容易,也许可以使用代码片段参数来简化某些参数的值,然后再运行它。在我的示例中,我为资源类型和SPID设置了占位符,两者均在代码段中默认设置为返回所有值。
名称:locklist
现在,我可以调用锁定列表代码片段,执行查询,提供过滤器或让它们使用默认值。如果保存查询,则不会覆盖模板,并且在提交代码时,此更改是否重要没有问题。
请注意,将这样的复杂查询提交给源代码管理仍然很有价值。对于除了最简单的代码段以外的所有代码段,代码段管理器都不应该是基础查询的唯一副本。了解产品信息,请咨询
总结
片段是硬核程序员通常不好称呼的那些事情之一,他们主要认为它们太琐碎,不值得花时间。直到我考虑了如何使用它们来自动化一些重复性任务后,我才意识到它们比我最初预期的更有价值。
我已经演示了几个简单但省时的代码片段,这些代码片段可以消除多余的击键或创建对象,或者可以轻松地重用源代码控制文件中存储的代码,从而使编码变得更容易。
相关内容推荐:
SQL语法提示工具SQL Prompt使用教程:使用SQL Prompt代码段执行重复任务(上)
SQL Prompt使用教程>>>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢