Sql CLR创建一个简单的表值函数
1.创建面目:
2. 添加函数代码:
- using System;
- using System.Data.Sql;
- using Microsoft.SqlServer.Server;
- using System.Collections;
- using System.Data.SqlTypes;
- using System.Diagnostics;
- public class TabularEventLog
- {
- [SqlFunction(TableDefinition =
- @"logTime datetime
- ,Message nvarchar(4000)
- ,Category nvarchar(4000)
- ,InstanceId bigint",
- Name = "ReadEventLog", FillRowMethodName = "FillRow")]
- public static IEnumerable InitMethod(String logname)
- {
- return new EventLog(logname, Environment.MachineName).Entries;
- }
- public static void FillRow(Object obj, out SqlDateTime timeWritten,
- out SqlChars message, out SqlChars category,
- out long instanceId)
- {
- EventLogEntry eventLogEntry = (EventLogEntry)obj;
- timeWritten = new SqlDateTime(eventLogEntry.TimeWritten);
- message = new SqlChars(eventLogEntry.Message);
- category = new SqlChars(eventLogEntry.Category);
- instanceId = eventLogEntry.InstanceId;
- }
- }
3. 脚本:
- USE MASTER
- GO
- sp_configure 'show advanced options',1;
- GO
- RECONFIGURE;
- GO
- sp_configure 'clr enabled', 1;
- GO
- RECONFIGURE;
- GO
- --表值函数放在 db_study 库上
- USE db_study
- GO
- --删除函数
- IF OBJECT_ID('[dbo].[ReadEventLog]') IS NOT NULL
- DROP FUNCTION [dbo].ReadEventLog
- GO
- --删除程序集
- IF EXISTS(SELECT * FROM SYS.ASSEMBLIES WHERE NAME='tvfEventLog')
- DROP ASSEMBLY tvfEventLog
- GO
- --创建程序集, 设置为实际路径, 注意应设置为: UNSAFE
- CREATE ASSEMBLY tvfEventLog FROM'D:\Project\StudySimple\SqlServerProject1\bin\Debug\SqlServerProject1.dll' WITH PERMISSION_SET = UNSAFE
- GO
- --创建表值函数
- CREATE FUNCTION dbo.ReadEventLog(@logname nvarchar(100))
- RETURNS TABLE (
- logTime DATETIME
- ,Message nvarchar(4000)
- ,Category nvarchar(4000)
- ,InstanceId BIGINT
- )
- AS
- EXTERNAL NAME tvfEventLog.TabularEventLog.InitMethod
- GO
- --查询
- SELECT TOP 10 T.logTime, T.Message, T.InstanceId
- FROM dbo.ReadEventLog(N'Security') as T
- ORDER BY logTime DESC
Sql CLR创建一个简单的表值函数的更多相关文章
- SQL点滴3—一个简单的字符串分割函数
原文:SQL点滴3-一个简单的字符串分割函数 偶然在电脑里看到以前保存的这个函数,是将一个单独字符串切分成一组字符串,这里分隔符是英文逗号“,” 遇到其他情况只要稍加修改就好了 CREATE FUN ...
- 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型
第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...
- 如何创建一个简单的C++同步锁框架(译)
翻译自codeproject上面的一篇文章,题目是:如何创建一个简单的c++同步锁框架 目录 介绍 背景 临界区 & 互斥 & 信号 临界区 互斥 信号 更多信息 建立锁框架的目的 B ...
- 使用 CodeIgniter 创建一个简单的 Web 站点
原文:使用 CodeIgniter 创建一个简单的 Web 站点 参考源自: http://www.ibm.com/developerworks/cn/web/wa-codeigniter/index ...
- Python框架学习之用Flask创建一个简单项目
在前面一篇讲了如何创建一个虚拟环境,今天这一篇就来说说如何创建一个简单的Flask项目.关于Flask的具体介绍就不详细叙述了,我们只要知道它非常简洁.灵活和扩展性强就够了.它不像Django那样集成 ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(三)(错误整理篇)
使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二) 以上两篇已经把流 ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)
这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)
梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...
- django创建一个简单的web站点
一.新建project 使用Pycharm,File->New Project…,选择Django,给project命名 (project不能用test命名) 新建的project目录如下: ...
随机推荐
- BZOJ 1477: 青蛙的约会
二次联通门 : BZOJ 1477: 青蛙的约会 /* BZOJ 1477: 青蛙的约会 扩展欧几里得 列出方程, 判断一下 */ #include <iostream> #include ...
- 特征缩放(Feature Scaling)
特征缩放的几种方法: (1)最大最小值归一化(min-max normalization):将数值范围缩放到 [0, 1] 区间里 (2)均值归一化(mean normalization):将数值范围 ...
- c博客作业01——顺序 分支结构
本章学习总结 1.1 学习内容总结 ·学习switch分支的使用,switch后加括号(),括号内填一个变量或字符 如 switch (a) { case 2: case 3: default: } ...
- hive 整合ranger
一.安装hive插件 1.解压安装 # tar zxvf ranger-2.0.0-SNAPSHOT-hive-plugin.tar.gz -C /data1/hadoop/ 2.修改install ...
- 将对象转化为数组,并且适用select下拉
当你做element-ui的select下拉的时候数据是从后台请求,但是怎么才能将obj转成数组呢.并且后台返回的key和value中的key是要传的参数 var obj = { name: 'gab ...
- ICEM-空心圆柱体
原视频下载地址:https://pan.baidu.com/s/1boG49MB 密码: 4iq6
- 2019_软工实践_Beta(1/5)
队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 检测网站不合理的地方,给组员定下相应时间进度的安排 展示GitHub当 ...
- Ubuntu18.04 Server安装Nginx+Git服务和独立的svn服务
安装Nginx+Git 需要安装的包有 nginx, fcgiwrap, git. 其中git在Ubuntu18.04 Server安装时已经默认安装了. 需要安装的是前两个 而fcgiwrap是在 ...
- Web.Config配置文件中customErrors元素的使用方法
在Web.Config配置文件中,customErrors元素提供有关ASP.NET 应用程序自定义错误消息的信息. 先看一下配置结构的示例: <configuration> < ...
- excel打开csv 出现乱码
现在做舆情分析的相关项目,在数据处理的时候,发现了一个问题.将数据写入到csv文件,用excel打开(默认)就会出现乱码,如果将数据写入到.xlsx文件就不会出现乱码,因为csv是通用格式,所以我猜想 ...