3

SSMS を使用してアセンブリ dll を作成すると、次のようなスクリプトが生成されます。

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

このスクリプトを自動的に生成するには、FROM 0x4D5A9...パーツを生成する必要があります。それは dll の 16 進ダンプですか?

SQL 関数を使用することは可能ですか、それとも ac# function でこの 16 進ダンプを生成する必要がありますか?

4

1 に答える 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);
于 2012-05-14T13:23:32.227 に答える