小编Joa*_*loo的帖子

sp_send_dbmail 使用最佳实践

我想弄清楚 sp_send_dbmail 的最佳使用实践,但我在网上找不到任何答案。

我们的开发人员喜欢使用 sp_send_dbmail 从应用程序内部发送与应用程序相关的电子邮件。假设例如用户忘记了他们的密码,他们将通过执行 sp_send_dbmail 发送用户请求的密码重置电子邮件。这只是他们使用此存储过程发送的多种电子邮件类型之一。这是一个好习惯吗?对我来说,这感觉像是一个肮脏的解决方案,因为有许多 API 可以处理您的应用程序中的电子邮件发送,而作为 DBA,我不喜欢在生产服务器上启用这些选项。我只是别无选择。也许有足够的动机和证据证明这是不好的做法和/或由于各种原因有潜在危险,我可以动摇他们改变它。

sql-server database-mail

6
推荐指数
1
解决办法
1504
查看次数

在登录触发器中获取 SQL 查询

我需要登录触发器。我需要从 Excel Pivot 文件中捕获进入 SQL Server 的 SQL 查询。

目前我正在使用以下代码:

CREATE TRIGGER [MyLogonTrigger] ON ALL SERVER FOR LOGON
AS 
BEGIN
    IF PROGRAM_NAME() <> 'Microsoft%'

    DECLARE @sqltext VARBINARY(128)
    SELECT @sqltext = sql_handle
    FROM sys.sysprocesses
    WHERE spid = @@spid

    DECLARE @SQLQuery varchar(MAX)
    set @SQLQuery = (select TEXT
    FROM sys.dm_exec_sql_text(@sqltext))

    INSERT INTO TestDatabase.dbo.LogonAudit 
             (
                    ... audit columns ...
             ) 
       Select
                    SUSER_SNAME()
                    ,GETDATE()
                    ,@@SPID
                    ,PROGRAM_NAME()
                    ,ORIGINAL_DB_NAME()
                    ,HOST_NAME()
                    ,client_net_address
                    ,@SQLQuery
   FROM sys.dm_exec_connections 
   WHERE session_id = @@SPID
END;
Run Code Online (Sandbox Code Playgroud)

我面临的问题是@SQLQuery每次都是创建触发器定义代码,而不是刷新数据透视表时从 Excel 文件传递​​给 SQL 的实际查询。

我认为这与登录和实际选择查询执行发生在两个不同的事务(SPID)上有关。 …

sql-server t-sql

4
推荐指数
3
解决办法
2043
查看次数

使用 TSQL 获取所有作业和作业步骤的作业步骤运行

我想知道是否有一种简单的方法可以使用 TSQL 代码检查每个作业步骤的“运行方式”值,而不是打开服务器上的每个作业和每个单独的步骤?我不知道从哪里获取这些数据,我已经在 MSDB 中搜索过,但在 sysjobs 和相关表中找不到任何内容?SQL 必须将该值存储在某处。问题是在哪里?

sql-server jobs

3
推荐指数
1
解决办法
5021
查看次数

标签 统计

sql-server ×3

database-mail ×1

jobs ×1

t-sql ×1