1) CLR不支持C#类方法重载(Method Overload)

今天打算写个枚举目录的C# CLR存储过程,结果发现原来CLR不支持方法重载.

Msg 6572, Level 16, State 1, Procedure GetFileList, Line 12
More than one method, property or field was found with name 'GetFileList' in class 'StoredProcedures.EnumerateSourceFileDirectory' in assembly 'XXXXXX'. Overloaded methods, properties or fields are not supported.

2) SqlString类型对应的是NVARCHAR而不是VARCHAR

CREATE PROCEDURE GetFileList
(
@SourceFolder NVARCHAR(2000),
@BeginModDate DATETIME,
@EndModDate DATETIME,
@FileExtension NVARCHAR(50),
@FileNamePattern NVARCHAR(2000),
@IsSubfolderScanned SMALLINT
)
AS EXTERNAL NAME XXXX_CLR_Lib.[StoredProcedures.EnumerateSourceFileDirectory].GetFileListByBeginAndEnd;

Msg 6552, Level 16, State 3, Procedure GetFileList, Line 12
CREATE PROCEDURE for "GetFileList" failed because T-SQL and CLR types for parameter "@SourceFolder" do not match.

3) SQL Server中使用CLR的先决条件。 BTW,如果想要操作诸如想文件系统级别的东西,比如枚举文件目录的文件或写日志记录到Windows Event Log中,在创建ASSEMBLY的时候就必须把PERMISSION设为EXTERNAL_ACCESS.

--TRUSTWORTHY is required to be turned on
ALTER DATABASE [XXXXXX] SET TRUSTWORTHY ON
GO --enable clr feature
EXEC sp_configure 'show advanced option', 1
GO RECONFIGURE
GO EXEC sp_configure 'clr enabled', 1
GO RECONFIGURE
GO /*keep user database owner the same as master database, or it will receive an error Msg 33009, Level 16, State 2, Line 2
The database owner SID recorded in the master database differs from the database owner SID recorded in database ''. You should correct this situation by resetting the owner of database '' using the ALTER AUTHORIZATION statement.
**/
DECLARE @Command VARCHAR(MAX) = 'ALTER AUTHORIZATION ON DATABASE::<<DatabaseName>> TO
[<<LoginName>>]' SELECT @Command = REPLACE(REPLACE(@Command
, '<<DatabaseName>>', SD.Name)
, '<<LoginName>>', SL.Name)
FROM master..sysdatabases SD
JOIN master..syslogins SL ON SD.SID = SL.SID
WHERE SD.Name = DB_NAME() --PRINT @Command
EXEC(@Command)

SQL Server ->> CLR编程问题汇总的更多相关文章

  1. SQL Server 后续去除功能汇总

    原文:SQL Server 后续去除功能汇总 功能更新去除汇总 字段类型 在 Microsoft SQL Server 的未来版本中将删除 ntext.text 和 image 数据类型. 请避免在新 ...

  2. SQL Server CLR 使用 C# 自定义存储过程和触发器

    资源来源:https://www.cnblogs.com/Brambling/p/8016060.html SQL Server CLR 使用 C# 自定义存储过程和触发器   这一篇博客接着上一篇博 ...

  3. SQL Server CLR 使用 C# 自定义函数

    一.简介 Microsoft SQL Server 2005之后,实现了对 Microsoft .NET Framework 的公共语言运行时(CLR)的集成.CLR 集成使得现在可以使用 .NET ...

  4. SQL Server CLR全功略之一---CLR介绍和配置

    Microsoft SQL Server 现在具备与 Microsoft Windows .NET Framework 的公共语言运行时 (CLR) 组件集成的功能.CLR 为托管代码提供服务,例如跨 ...

  5. SQL SERVER CLR Trigger功能

    通过在 Microsoft SQL Server 中托管 CLR(称为 CLR 集成),开发人员可以在托管代码中编写存储过程.触发器.用户定义函数.用户定义类型和用户定义聚合函数, 改变了以前只能通过 ...

  6. sql server存储过程编程

    存储过程是一组完成特定功能的SQL 语句集合,经编译后存储在数据库中.   存储过程作为一个单元进行处理并以一个名称来标识.它能向用户返回数据.向数据库表中写入或修改数据等操作. 用户通过指定存储过程 ...

  7. 【转】SQL SERVER CLR存储过程实现

    最近做一个项目,需要做一个SQL SERVER 2005的CLR的存储过程,研究了一下CLR的实现.为方便以后再使用,在这里总结一下我的实现流程,也供对CLR感兴趣但又不知道如何实现的朋友们做一下参考 ...

  8. SQL Server 数据库编程技巧

    Ø  简介 本文主要介绍 SQL Server 数据库在平常的开发中,可能会涉及到的编程技巧,主要包含以下内容: 1.   解决 SQL Server 不支持 127.0.0.1 登录 2.   查询 ...

  9. sql server CLR

    1. 配置sql server 启用CLR 在SQL Server2005/2008里面,CLR默认是关闭的.可以使用如下SQL语句开启CLR. sp_configure 'show advanced ...

随机推荐

  1. React笔记:ref注意事项

    [一]使用ref必须用在[类型式的组件]才起作用,用在[函数式的组件]是无效的. 下面这个例子用在了[函数式的组件]上,所以是无效的: function MyFunctionalComponent() ...

  2. ASP.NET 设计模式分为三种类型

    设计模式分为三种类型,共23类.  一.创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式.      二.结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代 ...

  3. Axure8.0

    1.Axure的一行三列的基本布局. 2.自适应页面设置,页面设置? 3.自动生成HTML的工具栏使用.生产的目录文件夹的内容. 4.元件的交互(样式修改,显示隐藏) 5.全局变量,钢笔工具的使用

  4. 宽度优先搜索(BFS)— 20180909 - 20180917

    BFS几类题: 1.图的遍历:a.层级遍历 b.由点及面 c.拓扑排序 2.简单图最短路径: 简单图:1.无向图 2.边权重一致 图的时间复杂度: N个点,M条边,M最大是N^2,时间复杂度O(N+M ...

  5. linux对于zombie的处理

    @(Linux基础)[僵尸进程处理] 今天在服务器上推送项目的时候,突然发现很卡.就用top查看了一下,果然此事不简单啊. top - 10:39:16 up 20 days, 23:11, 2 us ...

  6. PV和UV代表什么(转)

    PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标.  高手对pv的解释是,一个访问者在24小时(0点到24点)内到底看了你网站几个页面.这 ...

  7. Developing crm service based on apache cxf

    1 数据库环境搭建 创建数据库boscrm 执行脚本: 脚本内容: /* Navicat MySQL Data Transfer Source Server : root Source Server ...

  8. Rabbitmq~对Vhost的配置

    rabbitmq里有一些概念我们要清楚,如vhost,channel,exchange,queue等,而前段时间在部署rabbitmq环境时启用了虚拟主机vhost,感觉他主要是起到了消息隔离的作用, ...

  9. PHP SECURITY CALENDAR 2017 学习总结-更新中

    这篇文章主要以审计代码为主来分析每道题目中所存在的漏洞点,记录一下自己的学习: 1.Day 1 - Wish List class Challenge { const UPLOAD_DIRECTORY ...

  10. mysql中时间日期函数

    转自:mysql 中 时间和日期函数 一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +- ...