SQL 修改邮件作业失败
SQL Email Job Failing after amending it
我目前有一个 SQL 作业,它执行特定软件的所有用户列表。
不过,我现在想把名字和姓氏加起来组成一个完整的名字。我创建了简单的 SQL 来处理此类请求,但是当我尝试将其包含到 SQL JOB 中时,它失败了:
失败原因:
[SQLSTATE 42000] (Error 102). The step failed.
SQL 失败的作业:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'test=email',
@recipients = 'test@hotmail.co.uk',
@subject = 'Users Report',
@body = '<b> Please follow the correct procedure (see other email)
@body_format = 'HTML',
@query = 'SELECT [testDB].[dbo].[base_user].buser_userid AS [N4 User ID]
, [testDB].[dbo].[base_user].buser_firstName + ' ' +
[testDB].[dbo].[base_user].buser_lastName as [Users Name]
,[testDB].[dbo].[sec_role].role_name as [Role]
,[testDB].[dbo].[sec_role].role_description as [Description]
,[testDB].[dbo].[base_user].buser_active AS [Active?]
FROM [testDB].[dbo].base_user
INNER JOIN [testDB].[dbo].[sec_user_role_map] ON testDB.dbo.base_user.[buser_gkey] = testDB.dbo.[sec_user_role_map].[usrrolm_user_gkey]
INNER JOIN [testDB].[dbo].[sec_role] ON testDB.dbo.[sec_user_role_map].[usrrolm_role_gkey] = testDB.[dbo].[sec_role].role_gkey
',
@attach_query_result_as_file = 1;
您需要在 CONCAT
上转义单引号
你还错过了行尾的一个@body
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'test=email',
@recipients = 'test@hotmail.co.uk',
@subject = 'Users Report',
@body = '<b> Please follow the correct procedure (see other email)',
@body_format = 'HTML',
@query = 'SELECT [testDB].[dbo].[base_user].buser_userid AS [N4 User ID]
, [testDB].[dbo].[base_user].buser_firstName + '' '' +
[testDB].[dbo].[base_user].buser_lastName as [Users Name]
,[testDB].[dbo].[sec_role].role_name as [Role]
,[testDB].[dbo].[sec_role].role_description as [Description]
,[testDB].[dbo].[base_user].buser_active AS [Active?]
FROM [testDB].[dbo].base_user
INNER JOIN [testDB].[dbo].[sec_user_role_map] ON testDB.dbo.base_user.[buser_gkey] = testDB.dbo.[sec_user_role_map].[usrrolm_user_gkey]
INNER JOIN [testDB].[dbo].[sec_role] ON testDB.dbo.[sec_user_role_map].[usrrolm_role_gkey] = testDB.[dbo].[sec_role].role_gkey
',
@attach_query_result_as_file = 1;
我目前有一个 SQL 作业,它执行特定软件的所有用户列表。
不过,我现在想把名字和姓氏加起来组成一个完整的名字。我创建了简单的 SQL 来处理此类请求,但是当我尝试将其包含到 SQL JOB 中时,它失败了:
失败原因:
[SQLSTATE 42000] (Error 102). The step failed.
SQL 失败的作业:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'test=email',
@recipients = 'test@hotmail.co.uk',
@subject = 'Users Report',
@body = '<b> Please follow the correct procedure (see other email)
@body_format = 'HTML',
@query = 'SELECT [testDB].[dbo].[base_user].buser_userid AS [N4 User ID]
, [testDB].[dbo].[base_user].buser_firstName + ' ' +
[testDB].[dbo].[base_user].buser_lastName as [Users Name]
,[testDB].[dbo].[sec_role].role_name as [Role]
,[testDB].[dbo].[sec_role].role_description as [Description]
,[testDB].[dbo].[base_user].buser_active AS [Active?]
FROM [testDB].[dbo].base_user
INNER JOIN [testDB].[dbo].[sec_user_role_map] ON testDB.dbo.base_user.[buser_gkey] = testDB.dbo.[sec_user_role_map].[usrrolm_user_gkey]
INNER JOIN [testDB].[dbo].[sec_role] ON testDB.dbo.[sec_user_role_map].[usrrolm_role_gkey] = testDB.[dbo].[sec_role].role_gkey
',
@attach_query_result_as_file = 1;
您需要在 CONCAT
上转义单引号你还错过了行尾的一个@body
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'test=email',
@recipients = 'test@hotmail.co.uk',
@subject = 'Users Report',
@body = '<b> Please follow the correct procedure (see other email)',
@body_format = 'HTML',
@query = 'SELECT [testDB].[dbo].[base_user].buser_userid AS [N4 User ID]
, [testDB].[dbo].[base_user].buser_firstName + '' '' +
[testDB].[dbo].[base_user].buser_lastName as [Users Name]
,[testDB].[dbo].[sec_role].role_name as [Role]
,[testDB].[dbo].[sec_role].role_description as [Description]
,[testDB].[dbo].[base_user].buser_active AS [Active?]
FROM [testDB].[dbo].base_user
INNER JOIN [testDB].[dbo].[sec_user_role_map] ON testDB.dbo.base_user.[buser_gkey] = testDB.dbo.[sec_user_role_map].[usrrolm_user_gkey]
INNER JOIN [testDB].[dbo].[sec_role] ON testDB.dbo.[sec_user_role_map].[usrrolm_role_gkey] = testDB.[dbo].[sec_role].role_gkey
',
@attach_query_result_as_file = 1;