Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво SqlDbType се съпоставя с varBinary(max)?

SqlDbType.VarBinary с дължина -1 е еквивалент на VARBINARY(MAX), поне на теория. Но проблемът е малко по-сложен, тъй като има и тип (не enum стойност), а именно SqlTypes.SqlBytes които могат да се използват. И има SqlTypes.SqlFileStream който може да се използва и за VARBINARY(MAX) типове, когато имат FILESTREAM атрибут.

Но проблемът е, че нито едно от тези изброявания или типове не покрива истинския проблем с работата с VARBINARY(MAX) колони в ADO.Net:консумация на памет. Всички тези типове, когато се използват „извън кутията“, ще създадат копия на стойността, разпределена като единичен масив в паметта, което в най-добрия случай е неефективно, но с нарастването на съдържанието става невъзможно да се използва, тъй като разпределението е неуспешно . Имам няколко статии, които показват правилния начин за работа с VARBINARY(MAX) стойности в ADO.Net, използвайки семантика за поточно предаване, която избягва създаването на копия в паметта на цялото съдържание:

  • Изтегляне и качване на изображения от SQL Server чрез ASP.Net MVC
  • FILESTREAM MVC:Изтегляне и качване на изображения от SQL Server


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да вмъкна 10 милиона записа за възможно най-кратко време?

  2. Връщане на всички чужди ключове и ПРОВЕРКА на ограничения в база данни на SQL Server (T-SQL примери)

  3. Анатомията на задръстванията на SQL Server и най-добрите начини за избягването им

  4. Как да инсталирате Azure Data Studio на Mac

  5. Как да напиша UPDATE SQL с псевдоним на таблица в SQL Server 2008?