sql >> Database teknologi >  >> RDS >> Sqlserver

Hvilken SqlDbType knytter til varBinary(max)?

SqlDbType.VarBinary med længden -1 svarer til VARBINARY(MAX), i det mindste i teorien. Men problemet er lidt mere komplekst, da der også er en type (ikke en enum-værdi), nemlig SqlTypes.SqlBytes som kan bruges. Og der er SqlTypes.SqlFileStream som også kan bruges til VARBINARY(MAX) typer, når de har FILESTREAM attribut.

Men problemet er, at ingen af ​​disse opregninger eller typer dækker det egentlige problem med at arbejde med VARBINARY(MAX) kolonner i ADO.Net:hukommelsesforbrug. Alle disse typer vil, når de bruges 'out-of-the-box', skabe kopier af den værdi, der er allokeret som et enkelt array i hukommelsen, hvilket i bedste fald ikke er ydeevne, men efterhånden som indholdet bliver større, bliver det helt umuligt at bruge, fordi allokeringsfejl . Jeg har et par artikler, der viser den korrekte måde at håndtere VARBINARY(MAX) på værdier i ADO.Net ved hjælp af streaming semantik, der undgår oprettelse af in-memory kopier af hele indholdet:

  • Download og upload billeder fra SQL Server via ASP.Net MVC
  • FILESTREAM MVC:Download og upload billeder fra SQL Server


  1. MySQL datoformat DD/MM/ÅÅÅÅ vælge forespørgsel?

  2. Postgres datatype cast

  3. Husk dette, når du formaterer en TIME-datatype i SQL Server (T-SQL)

  4. Tilslutning af Delphi til Salesforce.com