Gdy używasz poczty bazy danych do wysyłania wiadomości e-mail z załącznikami, musisz upewnić się, że rozmiar pliku załącznika mieści się w dopuszczalnym rozmiarze pliku załącznika.
Jeśli chcesz wysłać załączniki, które przekraczają limit załączników, musisz zwiększyć ten limit.
Na szczęście zwiększenie dozwolonego rozmiaru pliku załącznika można wykonać za pomocą jednej linii kodu T-SQL.
Błąd
Oto błąd, który otrzymasz, jeśli spróbujesz wysłać załącznik, który jest większy niż dopuszczalny rozmiar pliku załącznika:
Msg 22051, Level 16, State 1, Line 0 File attachment or query results size exceeds allowable value of 1000000 bytes.
Sprawdź limit
Jeśli jeszcze nie otrzymałeś błędu, możesz nie wiedzieć, jaki jest limit. Możesz użyć sysmail_help_configure_sp
procedura składowana w msdb bazy danych, aby sprawdzić limit rozmiaru pliku załącznika.
EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';
Wynik:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 1000000 | Default maximum file size | +-------------+--------------+---------------------------+
W tym przykładzie przekazałem MaxFileSize
jako argument do zawężenia wyników tylko do interesującej mnie opcji konfiguracji. Możesz także użyć sysmail_help_configure_sp
procedura bez żadnych argumentów, aby zwrócić wszystkie opcje konfiguracji.
Zmień limit
Możesz zmienić limit rozmiaru pliku załącznika za pomocą sysmail_configure_sp
procedura składowana.
EXEC msdb.dbo.sysmail_configure_sp 'MaxFileSize','3000000';
Teraz, gdy wykonujemy sysmail_help_configure_sp
ponownie widzimy nową wartość.
EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';
Wynik:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 3000000 | Default maximum file size | +-------------+--------------+---------------------------+
Zwróć uwagę, że opis pozostał ten sam. W tym przypadku jest to trochę mylące, ponieważ 1000000 to domyślny maksymalny rozmiar pliku – nie 4000000.
Opis można zmienić w ten sam sposób. W rzeczywistości możesz określić parametr name=value
również par, jeśli wolisz (dotyczy to również sysmail_configure_sp
procedura).
Zróbmy to jeszcze raz, ale tym razem zaktualizuję opis i użyję name=value
pary.
EXECUTE msdb.dbo.sysmail_configure_sp
@parameter_name = 'MaxFileSize',
@parameter_value = '4000000',
@description = 'Current maximum file size';
Teraz, gdy wykonujemy sysmail_help_configure_sp
ponownie widzimy nową wartość.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = 'MaxFileSize';
Wynik:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 4000000 | Current maximum file size | +-------------+--------------+---------------------------+