自动创建SQL Server CREATE ASSEMBLY脚本

时间:2012-05-14 13:01:40

标签: c# sql-server sql-server-2008 sql-server-2005

当我使用SSMS创建程序集dll时,它会生成如下脚本:

CREATE ASSEMBLY [SqlFunctions]
AUTHORIZATION [dbo]
FROM 0x4D5A9...
WITH PERMISSION_SET = UNSAFE

要自动生成此脚本,我必须生成FROM 0x4D5A9...部分,它是dll的十六进制转储吗?

是否可以使用SQL函数或是否应该使用c#函数生成此十六进制转储?

1 个答案:

答案 0 :(得分:4)

没有SQL功能。您可以使用某些C#创建它,如下所示:

Assembly clrAssembly = ...;
const string createTemplate = @"CREATE ASSEMBLY [{0}] AUTHORIZATION [dbo] FROM 0x{1};";

var bytes = new StringBuilder();
using (var dll = File.OpenRead(clrAssembly.Location))
{
int @byte;
while ((@byte = dll.ReadByte()) >= 0)
    bytes.AppendFormat("{0:X2}", @byte);
}

var sql = string.Format(createTemplate, clrAssembly.GetName().Name, bytes);
相关问题