长时间阅读器,但第一次在这里发布海报。希望你能帮我解决一些有问题的SQL。我不是专家,所以你可能不得不忍受我:-)运行SELECT查询的SQL作业只返回一行
我试图安排一个SQL作业,以使用sp_send_dbmail向SQL服务器上存在的SQL系统管理员列表发送电子邮件。我遇到的问题是我在一台SQL服务器上工作(用19行电子邮件发送一个CSV附件),但是当我在另外两台服务器上尝试完全相同的工作时,它只从查询(sa帐户)返回1行。如果我将SELECT查询从作业步骤中取出并通过新的查询窗口手动运行它,它将返回正确的行数,但如果作为作业的一部分运行,则只返回1行。
林几乎肯定它必须是一些访问或权限问题,但我可以指出我们的东西。作业历史记录显示作业正在运行并成功完成。
谁能帮助?我真的把我的头发撕掉了!
这是进入作业步骤的T-SQL。
谢谢!
`EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQL DB Alerts',
@recipients = '<EmailAddressHere>',
@subject = 'SQL Sysadmins',
@execute_query_database = 'master',
@query = N'SELECT @@SERVERNAME as SQLServerName,
@@SERVICENAME as SQLInstanceName,
name as LoginName
FROM syslogins
WHERE sysadmin = 1',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'ListofSysAdmins.csv',
@query_result_no_padding = 1,
@append_query_error = 0,
@exclude_query_output = 1,
@query_result_header = 1,
@query_result_separator=' '`
不知道DMV你使用的是什么,你可以使用运行在作业属性选项,使用系统管理员账号 – TheGameiswar
去看一下谁执行作业(查询)的用户。是一个SQL用户?一个域用户? – M84