Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co SqlDbType mapuje na varBinary(max)?

SqlDbType.VarBinary o długości -1 jest odpowiednikiem VARBINARY(MAX), przynajmniej w teorii. Ale problem jest nieco bardziej złożony, ponieważ istnieje również typ (nie wartość wyliczenia), a mianowicie SqlTypes.SqlBytes które można wykorzystać. I jest SqlTypes.SqlFileStream które mogą być używane również dla VARBINARY(MAX) typy, gdy mają FILESTREAM atrybut.

Ale problem polega na tym, że żadne z tych wyliczeń ani typów nie obejmuje prawdziwego problemu z pracą z VARBINARY(MAX) kolumny w ADO.Net:zużycie pamięci. Wszystkie te typy, gdy są używane „po wyjęciu z pudełka”, utworzą kopie wartości przydzielonej jako pojedyncza tablica w pamięci, co jest w najlepszym razie nieefektywne, ale gdy zawartość staje się większa, staje się niemożliwa do użycia z powodu błędów alokacji . Mam kilka artykułów, które pokazują właściwy sposób obsługi VARBINARY(MAX) wartości w ADO.Net przy użyciu semantyki strumieniowej, która pozwala uniknąć tworzenia kopii całej zawartości w pamięci:

  • Pobieraj i przesyłaj obrazy z SQL Server za pośrednictwem ASP.Net MVC
  • FILESTREAM MVC:Pobieranie i przesyłanie obrazów z serwera SQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak określić całkowitą liczbę otwartych/aktywnych połączeń w serwerze ms sql 2005

  2. Jak dodać nową kolumnę do istniejącej tabeli w SQL Server (T-SQL)

  3. Najlepsze sposoby użycia instrukcji SQL DELETE w tabeli SQL

  4. Jak COUNT() działa w SQL Server

  5. 3 najważniejsze powody, dla których ludzie przechodzą na SaaS