自动生成 SQL Server CREATE ASSEMBLY 脚本

3
当我使用SSMS创建程序集dll时,它会生成以下脚本:
CREATE ASSEMBLY [SqlFunctions]
AUTHORIZATION [dbo]
FROM 0x4D5A9...
WITH PERMISSION_SET = UNSAFE

生成这个脚本需要自动生成FROM 0x4D5A9...部分,这是dll的十六进制转储吗?
是否可以使用SQL函数实现,还是应该使用C#函数生成此十六进制转储?
1个回答

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接