Dot-Net

CLR SQL 程序集:獲取字節流?

  • March 4, 2019

我有一個要部署的 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;

引用自:https://stackoverflow.com/questions/2885335