使用存储过程创建程序集

Posted

技术标签:

【中文标题】使用存储过程创建程序集【英文标题】:Create assembly using stored procedure 【发布时间】:2018-12-10 07:16:18 【问题描述】:

如果特定数据库中不存在程序集,我想在 SQL Server 2008 R2 中创建一个程序集,使用存储过程,将文件路径作为参数。

USE DBName
GO

CREATE PROCEDURE spCreateAssembly
@FilePath varchar(max)

AS

BEGIN

    IF NOT EXISTS (select 1 from sys.assembly_files f 
                full outer join  sys.assemblies a on f.assembly_id=a.assembly_id 
                full outer join  sys.assembly_modules m on a.assembly_id=m.assembly_id
                WHERE a.name = 'Lib1')
    BEGIN

        sp_configure 'show advanced options', 1
        RECONFIGURE
        GO
        sp_configure 'clr enabled', 1
        RECONFIGURE
        GO
        sp_configure 'show advanced options', 0
        RECONFIGURE
        GO

        Create Assembly Lib1 from @FilePath with Permission_set = SAFE

    END 

END

但出现错误:

消息 102,级别 15,状态 1,过程 spCreateAssembly,第 14 行 'sp_configure' 附近的语法不正确。

【问题讨论】:

使用;而是在 sp_configure 之前写 exec。 【参考方案1】:

试试这个:

CREATE PROCEDURE spCreateAssembly
@FilePath varchar(max)

AS

BEGIN

    IF NOT EXISTS (select 1 from sys.assembly_files f 
                full outer join  sys.assemblies a on f.assembly_id=a.assembly_id 
                full outer join  sys.assembly_modules m on a.assembly_id=m.assembly_id
                WHERE a.name = 'Lib1')
    BEGIN

        EXEC sp_configure 'show advanced options', 1
        RECONFIGURE

        EXEC sp_configure 'clr enabled', 1
        RECONFIGURE

        EXEC sp_configure 'show advanced options', 0
        RECONFIGURE


        Create Assembly Lib1 from @FilePath with Permission_set = SAFE

    END 

END

您不能在存储过程中使用GO

【讨论】:

以上是关于使用存储过程创建程序集的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 存储过程,获取使用游标查询的结果集

mysql为四个表创建储存过程或者储存函数

oracle存储过程 中把临时表数据 返回结果集

在MySQL中如何创建一个带输出参数为一个表类型的存储过程

如何使用输入参数创建 PL/SQL 存储过程以返回数据集

求助,sqlserver2005存储过程如何返回这样的结果集