sql >> Databasteknik >  >> RDS >> Sqlserver

Vilken SqlDbType mappar till varBinary(max)?

SqlDbType.VarBinary med längden -1 är ekvivalenten med VARBINARY(MAX), åtminstone i teorin. Men problemet är lite mer komplext, eftersom det också finns en typ (inte ett enumvärde), nämligen SqlTypes.SqlBytes som kan användas. Och det finns SqlTypes.SqlFileStream som även kan användas för VARBINARY(MAX) typer, när de har FILESTREAM attribut.

Men problemet är att ingen av dessa uppräkningar eller typer täcker det verkliga problemet med att arbeta med VARBINARY(MAX) kolumner i ADO.Net:minnesförbrukning. Alla dessa typer kommer, när de används "out-of-the-box", att skapa kopior av värdet som tilldelats som en enda array i minnet, vilket i bästa fall inte fungerar, men när innehållet blir större blir det helt omöjligt att använda eftersom allokeringsfel . Jag har ett par artiklar som visar det korrekta sättet att hantera VARBINARY(MAX) värden i ADO.Net med strömmande semantik som undviker att det skapas kopior i minnet av hela innehållet:

  • Ladda ner och ladda upp bilder från SQL Server via ASP.Net MVC
  • FILESTREAM MVC:Ladda ner och ladda upp bilder från SQL Server


  1. Hur man skapar en totalrad i Access

  2. Hur frågar jag efter alla datum som är större än ett visst datum i SQL Server?

  3. Aktivera TLS i Oracle Apps R12.2

  4. Låsning och prestanda