使用高级安装程序添加一个dll程序集到SQL Server

问题描述:

我开发了一个使用C#和SQL Server 2008 R2的Windows应用程序。我的应用程序需要使用一些数据库算法进行一些优化和速度,所以我创建了一个.dll程序集。使用高级安装程序添加一个dll程序集到SQL Server

因此大多数存储过程使用这个程序集来生成它们的T-SQL。

我知道如何将此组件添加到SQL Server这样的:

第一步:

/* enable CLR in SQL Server */ 
EXEC sp_configure 'clr enabled' , '1' 
go 
reconfigure; 

然后第二步:

/* Add ASSEMBLY to SQL Server */ 
CREATE ASSEMBLY SQLFunction 
FROM 'FolderPath\...\SQLFunction.dll' 

现在我要发布我的Windows应用程序使用高级安装程序。挑战在于将第二步添加到高级安装程序SQL查询中,因为可变路径为'FolderPath\...\SQLFunction.dll'

我可以将第一步添加到高级安装程序SQL查询中,但是如何使用SQL查询或其他方式从app directory添加该dll。

请帮忙写下你的想法,因为我认为这是一个共同的挑战。

非常感谢......

所有你应该做的将是在添加文件和文件夹您的DLL从项目视图,然后在SQL脚本查看使用SQL替换选项卡从脚本替换模式与文件和文件夹视图中的DLL路径。这是他们网站上的practical example

+0

我遵循指示,但[APPDIR]没有得到应用程序安装文件夹,并在安装时给我一个错误。 –

一种方法是直接从dll(内容)以十六进制安装dll。

CREATE ASSEMBLY SQLFunction 
FROM 0x0x4D5A90000300000004000000FFFF000[and much much hex more - no spaces and no newlines] 
WITH PERMISSION_SET = SAFE 

有很多十六进制编辑器,它允许你下载你的dll文件的十六进制。还有插件记事本++(十六进制编辑器)

要安装它去插件 - >插件管理器 - >显示插件管理器 找到十六进制编辑器,检查它,并点击安装。可能的消息说应该更新插件管理器。点击“否”。然后十六进制编辑器将被安装并且记事本++应该重新启动。

之后,打开你的dll文件(用记事本++),您将有新图标:

hex-editor icon

点击此图标,你将不得不在十六进制文件。复制粘贴(并删除空格),你就可以了。

+0

你的意思是,如果我抓取我的DLL的十六进制代码,并把它放在0x [这里]我可以组装该DLL没有任何物理路径? –

+0

是的,这是正确的:) – Piotr

+0

你能指导我如何使用记事本++将我的dll转换为十六进制代码? –