(原)SQL Server 系统提供功能的三个疑惑
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了(原)SQL Server 系统提供功能的三个疑惑,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4737字,纯文字阅读大概需要7分钟。
内容图文
![(原)SQL Server 系统提供功能的三个疑惑](/upload/InfoBanner/zyjiaocheng/475/62cbc282705a4b59a1d0062547103e0b.jpg)
6、参考清单列表 正文: 1、SQL Server系统提供的部分疑惑概述 近来工作之余一直在系统地学习和研究SQL Server 数据库引擎这一整块,发现了一些原来没有太注意的东西,感觉SQL Server 光数据库引擎这块就有很多要学习和研究的。我个人觉得SQL Server提供的功能除了bug(可以通过service pack打补丁修复)外,应该还是很值得信赖的。以下发现了如下SQL Server 系统提供功能的三个疑惑:系统函数调用时DEFAULT代替可选参数使用不一致、队列字段列message_enqueue_time记录的是UTC时间和@@Pack_Received系统函数提示信息有错误,以下针对每一个疑惑具体演示和讲解。
2、系统函数调用时DEFAULT代替可选参数使用不统一 DEFAULT关键字即可以在DDL语句中定义DEFAULT默认约束,也可以用来代替可选参数来使用。在DEFAULT代替可选参数使用这一点上,在功能上和NULL具有相同的效果。 在SQL Server系统提供的动态管理对象中,尤其动态管理函数的调用时,将可选参数代替为NULL或DEFAULT效果一样的。如下T-SQL代码:
SELECT * FROM [sys].[dm_db_index_physical_stats](NULL, NULL, NULL, NULL, NULL); GO SELECT * FROM [sys].[dm_db_index_physical_stats](DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT); GO
针对以上T-SQL的测试结果如下截图:
![(原)SQL Server 系统提供功能的三个疑惑 - 文章图片](/upload/getfiles/0001/2021/4/24/20210424063153777.jpg)
DECLARE @nvcDefaultTraceFilePath AS NVARCHAR(4000); SET @nvcDefaultTraceFilePath = N‘‘; SELECT @nvcDefaultTraceFilePath = [path] FROM [sys].[traces] WHERE [id] = 1; SELECT * FROM ::fn_trace_gettable(@nvcDefaultTraceFilePath, NULL); SELECT * FROM ::fn_trace_gettable(@nvcDefaultTraceFilePath, DEFAULT); GO
针对以上T-SQL的测试结果如下截图:
![(原)SQL Server 系统提供功能的三个疑惑 - 文章图片](/upload/getfiles/0001/2021/4/24/20210424063154029.jpg)
SELECT * FROM ::fn_virtualfilestats(1, NULL); SELECT * FROM ::fn_virtualfilestats(1, DEFAULT);
针对以上T-SQL测试的结果如下截图:
![(原)SQL Server 系统提供功能的三个疑惑 - 文章图片](/upload/getfiles/0001/2021/4/24/20210424063154187.jpg)
USE [tempdb]; GO -- 创建队列 IF OBJECT_ID(N‘[dbo].[NotifyQueue]‘, ‘SQ‘) IS NULL BEGIN CREATE QUEUE [dbo].[NotifyQueue] WITH STATUS = ON ,RETENTION = OFF END GO -- 创建服务 IF NOT EXISTS (SELECT 1 FROM [sys].[services] WHERE [name] = N‘EventNotifyService‘) BEGIN CREATE SERVICE [EventNotifyService] ON QUEUE [dbo].[NotifyQueue] ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]); END GO -- 创建路由 IF NOT EXISTS (SELECT 1 FROM [sys].[routes] WHERE [name] = N‘NotifyRoute‘) BEGIN CREATE ROUTE [NotifyRoute] WITH SERVICE_NAME = N‘EventNotifyService‘ ,ADDRESS = N‘LOCAL‘; END GO -- 创建事件通知 IF NOT EXISTS (SELECT 1 FROM [sys].[event_notifications] WHERE [name] = N‘CreateTableNotification‘) BEGIN CREATE EVENT NOTIFICATION [CreateTableNotification] ON DATABASE FOR CREATE_TABLE TO SERVICE ‘EventNotifyService‘, ‘current database‘; END GO
创建表的 T-SQL脚本如下:
IF OBJECT_ID(N‘[dbo].[TableCreate]‘, ‘U‘) IS NULL BEGIN CREATE TABLE [dbo].TableCreate ( Col1 INT ,Col2 VARCHAR(100) ,Col3 XML ) ON [PRIMARY] END GO
从刚才创建的服务队列中获取列表的T-SQL代码如下:
SELECT CAST([message_body] AS XML) ,message_enqueue_time ,* FROM [dbo].NotifyQueue GO
针对以上T-SQL测试的如下图:
![(原)SQL Server 系统提供功能的三个疑惑 - 文章图片](/upload/getfiles/0001/2021/4/24/20210424063154360.jpg)
![(原)SQL Server 系统提供功能的三个疑惑 - 文章图片](/upload/getfiles/0001/2021/4/24/20210424063154606.jpg)
![(原)SQL Server 系统提供功能的三个疑惑 - 文章图片](/upload/getfiles/0001/2021/4/24/20210424063154678.jpg)
5、总结语 近来整体概要地了解和学习了SQL Server 数据库引擎这块的知识,感觉还是要继续深入学习 和研究。在深入过程中发现了以上SQL Server系统提供功能的3个疑惑。针对系统函数调用时DEFAULT代替可选参数不统一的疑惑尽量使用NULL,少用DEFAULT。针对服务队列中字段列message_enqueue_time为何保存UTC日期时间目前依然不明白,研究了很多sql server系统数据库、示例数据库很少使用UTC日期时间值的,也请知道的同仁告知,万分感谢。 很久很久没有更新博文了,主要原因还是太懒,读、写和说都是必备的基本技能的,写和说这两个基本技能继续提升加强。今晚正好元宵节,也祝福各位元宵节快乐,阖家欢乐。新的一年从今天开始,继续踏上征程:撸起袖子加油干。
6、参考清单列表 1、SQL Server 2012 管理高级教程(第2版)中第12章12.4.4事件通知小节中的程序清单 12-3 CreateQueue.sql。
(原)SQL Server 系统提供功能的三个疑惑
标签:files logs .sql res 地方 microsoft 语句 primary rtu
本文系统来源:http://www.cnblogs.com/dzy863/p/6389469.html
内容总结
以上是互联网集市为您收集整理的(原)SQL Server 系统提供功能的三个疑惑全部内容,希望文章能够帮你解决(原)SQL Server 系统提供功能的三个疑惑所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。