Когато използвате Database Mail за изпращане на имейли с прикачени файлове, ще трябва да се уверите, че размерът на прикачения файл е в рамките на допустимия размер на прикачения файл.
Ако трябва да изпратите прикачени файлове, които са по-големи от ограничението за прикачени файлове, ще трябва да увеличите това ограничение.
За щастие, увеличаването на разрешения размер на прикачения файл може да стане с един ред T-SQL код.
Грешката
Ето грешката, която ще получите, ако се опитате да изпратите прикачен файл, който е по-голям от допустимия размер на прикачения файл:
Msg 22051, Level 16, State 1, Line 0 File attachment or query results size exceeds allowable value of 1000000 bytes.
Проверете лимита
Ако все още не сте получили грешка, може да не знаете какво е ограничението. Можете да използвате sysmail_help_configure_sp
съхранена процедура в msdb база данни, за да проверите ограничението за размера на прикачения файл.
EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';
Резултат:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 1000000 | Default maximum file size | +-------------+--------------+---------------------------+
В този пример предадох MaxFileSize
като аргумент за стесняване на резултатите само до опцията за конфигурация, която ме интересува. Можете също да използвате sysmail_help_configure_sp
процедура без никакви аргументи за връщане на всички опции за конфигурация.
Промяна на лимита
Можете да промените ограничението за размера на прикачения файл с sysmail_configure_sp
съхранена процедура.
EXEC msdb.dbo.sysmail_configure_sp 'MaxFileSize','3000000';
Сега, когато изпълним sysmail_help_configure_sp
отново виждаме новата стойност.
EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';
Резултат:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 3000000 | Default maximum file size | +-------------+--------------+---------------------------+
Имайте предвид, че описанието е останало същото. В този случай е малко подвеждащо, защото 1000000 е максималният размер на файла по подразбиране, а не 4000000.
Можете да промените описанието със същата процедура. Всъщност можете да посочите параметъра name=value
двойки също, ако предпочитате (това важи и за sysmail_configure_sp
процедура).
Нека го направим отново, но този път ще актуализирам описанието и ще използвам name=value
двойки.
EXECUTE msdb.dbo.sysmail_configure_sp
@parameter_name = 'MaxFileSize',
@parameter_value = '4000000',
@description = 'Current maximum file size';
Сега, когато изпълним sysmail_help_configure_sp
отново виждаме новата стойност.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = 'MaxFileSize';
Резултат:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 4000000 | Current maximum file size | +-------------+--------------+---------------------------+