Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como aumentar o tamanho de anexo permitido ao enviar e-mail no SQL Server (T-SQL)


Ao usar o Database Mail para enviar emails com anexos, você precisará garantir que o tamanho do arquivo de anexo esteja dentro do tamanho permitido do arquivo de anexo.

Se você precisar enviar anexos maiores que o limite de anexos, precisará aumentar esse limite.

Felizmente, aumentar o tamanho do arquivo de anexo permitido pode ser feito com uma única linha de código T-SQL.

O erro


Aqui está o erro que você receberá se tentar enviar um anexo maior do que o tamanho de arquivo de anexo permitido:
Msg 22051, Level 16, State 1, Line 0
File attachment or query results size exceeds allowable value of 1000000 bytes.

Verifique o limite


Se você ainda não recebeu um erro, talvez não saiba qual é o limite. Você pode usar o sysmail_help_configure_sp procedimento armazenado no msdb banco de dados para verificar o limite de tamanho do arquivo de anexo.
EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';

Resultado:
+-------------+--------------+---------------------------+
| paramname   | paramvalue   | description               |
|-------------+--------------+---------------------------|
| MaxFileSize | 1000000      | Default maximum file size |
+-------------+--------------+---------------------------+

Neste exemplo eu passei MaxFileSize como argumento para restringir os resultados apenas à opção de configuração que me interessa. Você também pode usar sysmail_help_configure_sp procedimento sem nenhum argumento para retornar todas as opções de configuração.

Alterar o limite


Você pode alterar o limite de tamanho do arquivo de anexo com o sysmail_configure_sp procedimento armazenado.
EXEC msdb.dbo.sysmail_configure_sp 'MaxFileSize','3000000';

Agora, quando executamos sysmail_help_configure_sp novamente, vemos o novo valor.
EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';

Resultado:
+-------------+--------------+---------------------------+
| paramname   | paramvalue   | description               |
|-------------+--------------+---------------------------|
| MaxFileSize | 3000000      | Default maximum file size |
+-------------+--------------+---------------------------+

Observe que a descrição permaneceu a mesma. Nesse caso, é um pouco enganoso porque 1000000 é o tamanho máximo do arquivo padrão - não 4000000.

Você pode alterar a descrição com o mesmo procedimento. Na verdade, você pode especificar o parâmetro name=value pares também, se você preferir (isso também é verdade para o sysmail_configure_sp procedimento).

Vamos fazer de novo, mas desta vez atualizarei a descrição e usarei o name=value pares.
EXECUTE msdb.dbo.sysmail_configure_sp  
    @parameter_name = 'MaxFileSize', 
    @parameter_value = '4000000',
    @description = 'Current maximum file size';

Agora, quando executamos sysmail_help_configure_sp novamente, vemos o novo valor.
EXEC msdb.dbo.sysmail_help_configure_sp 
    @parameter_name = 'MaxFileSize';

Resultado:
+-------------+--------------+---------------------------+
| paramname   | paramvalue   | description               |
|-------------+--------------+---------------------------|
| MaxFileSize | 4000000      | Current maximum file size |
+-------------+--------------+---------------------------+