Khi bạn sử dụng Thư cơ sở dữ liệu để gửi email có tệp đính kèm, bạn cần đảm bảo rằng kích thước tệp đính kèm nằm trong kích thước tệp đính kèm cho phép.
Nếu bạn cần gửi tệp đính kèm lớn hơn giới hạn tệp đính kèm, bạn sẽ cần tăng giới hạn đó.
May mắn thay, việc tăng kích thước tệp đính kèm được phép có thể được thực hiện bằng một dòng mã T-SQL.
Lỗi
Đây là lỗi bạn sẽ gặp phải nếu cố gửi một tệp đính kèm lớn hơn kích thước tệp đính kèm cho phép:
Msg 22051, Level 16, State 1, Line 0 File attachment or query results size exceeds allowable value of 1000000 bytes.
Kiểm tra giới hạn
Nếu bạn vẫn chưa nhận được lỗi, bạn có thể không biết giới hạn là gì. Bạn có thể sử dụng sysmail_help_configure_sp
thủ tục được lưu trữ trong msdb cơ sở dữ liệu để kiểm tra giới hạn kích thước tệp đính kèm.
EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';
Kết quả:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 1000000 | Default maximum file size | +-------------+--------------+---------------------------+
Trong ví dụ này, tôi đã chuyển MaxFileSize
như một đối số để thu hẹp kết quả thành chỉ tùy chọn cấu hình mà tôi quan tâm. Bạn cũng có thể sử dụng sysmail_help_configure_sp
thủ tục không có bất kỳ đối số nào để trả về tất cả các tùy chọn cấu hình.
Thay đổi giới hạn
Bạn có thể thay đổi giới hạn kích thước tệp đính kèm bằng sysmail_configure_sp
thủ tục được lưu trữ.
EXEC msdb.dbo.sysmail_configure_sp 'MaxFileSize','3000000';
Bây giờ khi chúng ta thực thi sysmail_help_configure_sp
một lần nữa, chúng tôi thấy giá trị mới.
EXEC msdb.dbo.sysmail_help_configure_sp 'MaxFileSize';
Kết quả:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 3000000 | Default maximum file size | +-------------+--------------+---------------------------+
Lưu ý rằng mô tả đã được giữ nguyên. Trong trường hợp này, nó hơi gây hiểu lầm vì 1000000 là kích thước tệp tối đa mặc định - không phải 4000000.
Bạn có thể thay đổi mô tả với quy trình tương tự. Trên thực tế, bạn có thể chỉ định tham số name=value
các cặp, nếu bạn thích (điều này cũng đúng với sysmail_configure_sp
thủ tục).
Hãy làm lại lần nữa, nhưng lần này tôi sẽ cập nhật mô tả và tôi sẽ sử dụng name=value
các cặp.
EXECUTE msdb.dbo.sysmail_configure_sp
@parameter_name = 'MaxFileSize',
@parameter_value = '4000000',
@description = 'Current maximum file size';
Bây giờ khi chúng ta thực thi sysmail_help_configure_sp
một lần nữa, chúng tôi thấy giá trị mới.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = 'MaxFileSize';
Kết quả:
+-------------+--------------+---------------------------+ | paramname | paramvalue | description | |-------------+--------------+---------------------------| | MaxFileSize | 4000000 | Current maximum file size | +-------------+--------------+---------------------------+