Nếu bạn gặp lỗi "tên hồ sơ không hợp lệ" khi cập nhật hồ sơ Thư cơ sở dữ liệu trong SQL Server, có thể bạn đã quên cung cấp ID hồ sơ.
Khi bạn cập nhật cấu hình Thư cơ sở dữ liệu với sysmail_update_profile_sp
thủ tục được lưu trữ, bạn cần bao gồm ID hồ sơ nếu bạn muốn cập nhật tên hồ sơ.
Ví dụ
Hãy tưởng tượng chúng ta chạy đoạn mã sau để trả về tất cả các cấu hình Thư cơ sở dữ liệu:
EXEC msdb.dbo.sysmail_help_profile_sp;
Kết quả:
+--------------+------------------+---------------------------+ | profile_id | name | description | |--------------+------------------+---------------------------| | 1 | DB Admin Profile | Profile for admin emails. | +--------------+------------------+---------------------------+
Và vì vậy, chúng tôi quyết định cập nhật tên của hồ sơ này từ “Hồ sơ quản trị viên DB” thành “Hồ sơ quản trị viên DB mới”.
Dưới đây là một ví dụ về cách không để làm điều đó (tức là cách tạo ra lỗi).
EXECUTE msdb.dbo.sysmail_update_profile_sp
@profile_name = 'New DB Admin Profile',
@description = 'Profile for admin emails.';
Trong trường hợp này, tôi cung cấp tên mới và mô tả hiện có. Nhưng điều đó sẽ không cắt đứt được.
Chạy sẽ tạo ra lỗi sau:
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42 profile name is not valid
Để thực hiện chính xác, bạn cần cung cấp ID hồ sơ:
EXECUTE msdb.dbo.sysmail_update_profile_sp
@profile_id = 1,
@profile_name = 'New DB Admin Profile',
@description = 'Profile for admin emails.';
Kết quả:
Commands completed successfully.
Bây giờ khi tôi kiểm tra danh sách hồ sơ của mình, tôi thấy tên hồ sơ đã cập nhật.
EXEC msdb.dbo.sysmail_help_profile_sp;
Kết quả:
+--------------+----------------------+---------------------------+ | profile_id | name | description | |--------------+----------------------+---------------------------| | 1 | New DB Admin Profile | Profile for admin emails. | +--------------+----------------------+---------------------------+
Lưu ý rằng bạn không cần cung cấp ID hồ sơ nếu bạn chỉ cập nhật mô tả (miễn là bạn cung cấp tên hồ sơ chính xác).