使用存储过程创建程序集
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
。
【讨论】:
以上是关于使用存储过程创建程序集的主要内容,如果未能解决你的问题,请参考以下文章