2012-05-14 102 views
3

當我使用SSMS創建一個集DLL,它會產生這樣的腳本:創建SQL Server自動CREATE ASSEMBLY腳本

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

要自動生成這個劇本,我必須生成FROM 0x4D5A9...部分,是它的十六進制轉儲的DLL?

是否有可能使用SQL函數,或者我應該使用c#函數生成這個十六進制轉儲?

回答

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

謝謝蒂姆,那就是我一直在尋找的東西。 – psadac