Подтвердить что ты не робот

Сборка CLR SQL: получить Bytestream?

У меня есть SQL CLR dll, которую я хочу развернуть, но обнаружил, что вы можете вставлять бит байтового потока /varbinary _literal/varbinary_expression/assembly в текстовый файл, чтобы обойти грязную проблему упаковки DLL и убедиться, что она доступна для команда CREATE ASSEMBLY.

Но мне еще предстоит найти, как получить значение байтового потока /varbinary _literal/varbinary_expression/assembly bits. Я не нашел какой-либо последовательной терминологии и что я продолжаю находить при использовании Load().

Справка

4b9b3361

Ответ 1

Это просто шестнадцатеричное представление 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;

Ответ 2

Нашел здесь, varbinary может быть сгенерирован без специального кода для его создания, только с помощью Sql Server Management Studio (SSMS) и локальный экземпляр SQL Server.

  • create или alter вашу сборку в вашей базе данных, используя ее локальный путь на локальном SQL Server.

    use yourBase
    go
    create assembly YourAssemblySqlName from N'YourLocalPath\YourAssemblyFile.dll'
    go
    
  • Перейдите к своей сборке в Обозревателе объектов.

    Просмотр в сборку

  • Script его создание.

    Сценарий сборки

И SSMS дает вам varbinary.