Dot-Net
CLR SQL 程序集:獲取字節流?
我有一個要部署的 SQL CLR dll,但發現您可以將字節流/varbinary_literal/varbinary_expression/assembly 位嵌入到文本文件中,以解決打包 DLL 的麻煩,並確保CREATE ASSEMBLY可以訪問它命令。
但我還沒有找到的是如何獲得該字節流/varbinary_literal/varbinary_expression/assembly bits 值。我沒有找到任何一致的術語,以及我在使用
Load().
它只是 dll 的十六進製表示。這一點應該可以解決問題:
static string GetHexString(string assemblyPath) { if (!Path.IsPathRooted(assemblyPath)) assemblyPath = Path.Combine(Environment.CurrentDirectory, assemblyPath); StringBuilder builder = new StringBuilder(); builder.Append("0x"); using (FileStream stream = new FileStream(assemblyPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { int currentByte = stream.ReadByte(); while (currentByte > -1) { builder.Append(currentByte.ToString("X2", CultureInfo.InvariantCulture)); currentByte = stream.ReadByte(); } } return builder.ToString(); }您應該像這樣使用生成的字元串:
string hexString = GetHexString(assemblyPath); string sql = "CREATE ASSEMBLY [" + assemblyName + "] FROM " + hexString + " WITH PERMISSION_SET = " + somePermissionSet;