创建 SQL Server 自动创建程序集脚本

本文关键字:创建 程序集 脚本 SQL Server | 更新日期: 2023-09-27 18:34:02

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

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

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

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

创建 SQL Server 自动创建程序集脚本

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