小编Han*_*non的帖子

msdb.dbo.sysjobs 和上次运行日期和时间

我知道 last_run_date 和 last_run_time 存储为 Int,但是当转换到 datetime(我有示例)时,是 GMT 时间还是什么?转换后,它与 GUI 日志历史记录显示的时间不匹配。

任何人都可以提供这方面的指导吗?

这是我将值转换为日期时间值的 t-sql 代码:

'last run literal' = dateadd(millisecond, 
    sjs.last_run_time,
    convert(datetime,cast(nullif(sjs.last_run_date,0) as nvarchar(10))))
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server t-sql

4
推荐指数
2
解决办法
7597
查看次数

为什么 Op Stats 都是 0,而 Usage Stats 却显示 29 个搜索

为什么 Op Stats 都是 0,而 Usage Stats 却显示 29 个搜索。这是从 Brent Ozar 的 sp_blitzindex 返回的。

使用统计 操作统计
读取:29(29 次搜索)写入:14 0 次单例查找;0 次扫描/搜索;0 删除;0 次更新;

index-tuning sql-server-2012 sp-blitzindex

4
推荐指数
1
解决办法
856
查看次数

使用只有读取权限的帐户执行存储过程

我创建了一个有一个存储过程TRUNCATE,并INSERT在它的语句,我使用的一个SSRS报告。

我通常只使用作为db_datareaderSSRS 报告成员的帐户,但是此存储过程不会使用只有这些权限的帐户执行。尝试执行存储过程时报如下错误:

找不到对象“table_name”,因为它不存在或您没有权限。

我是否需要使用有db_datawriter成员的帐户来执行此 SP,或者有什么方法可以让我的db_datareader帐户执行它?

sql-server stored-procedures sql-server-2012

4
推荐指数
1
解决办法
1457
查看次数

脚本无法作为 SQL Server 代理作业运行,从 SSMS 运行时成功完成

我有两个 T-SQL 脚本,它们计划每天运行一次。两者都清理不同表中的一些旧数据。两个脚本都以同一用户身份在同一数据库上运行。

脚本 A 将在 SQL Server Management Studio 和作为作业启动时成功执行,但脚本 B 将仅在 SQL Server Management Studio 中成功执行,即使以设置为在 SQL Server 下运行脚本的同一用户登录代理人。

脚本 B 失败并出现以下错误:

以用户 [username] 身份执行。
DELETE 失败,因为以下 SET 选项的设置不正确:“QUOTED_IDENTIFIER”。

验证 SET 选项是否正确用于计算列上的索引视图和/或索引和/或过滤索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作。

[SQLSTATE 42000](错误 1934)。步骤失败。

我在尝试清理的表之一上确实有一个过滤索引,但为什么它会通过 SSMS 工作?

sql-server ssms sql-server-agent sql-server-2014

4
推荐指数
1
解决办法
1344
查看次数

臃肿的事务日志和 .bak 备份大小混淆

我最近继承了一个管理不善的 SQL 服务器。

其中一个数据库处于粗略状态。以下是详细信息:

  1. .mdf 文件只有 369MB。
  2. .ldf 文件是一个膨胀的 29.7GB。
  3. 恢复模式设置为 FULL。
  4. 数据文件每晚备份都没有问题,大小为 365MB。
  5. 事务日志从未被备份。

我已经将夜间备份恢复到同一个 SQL 服务器,并在其中进行了检查以确保数据看起来完好无损。当我恢复每晚的 .bak 备份文件时,它会分别重新创建 369MB 和 29.7GB 的 .mdf 和 .ldf 文件。

对 SQL 很体面,但无论如何我都不会称之为专家,我有一些关于这种情况的后续问题,我希望得到以下反馈:

  1. 369MB .bak 文件如何同时恢复 369MB .mdf 文件和 29.7GB .ldf 文件?
  2. 关于如何处理恢复模型和膨胀的 .ldf 文件的任何建议?我们只关心每晚做一次备份——我们此时不需要做差异备份——但这是我稍后会解决的问题。

sql-server backup sql-server-2008-r2 transaction-log

4
推荐指数
1
解决办法
777
查看次数

sp_BlitzWho 保存到表

如何将结果保存sp_BlitzWho到表中?与其他 proc 相比,保存到表的选项不存在sp_Blitz

sql-server sp-blitzfirst

4
推荐指数
2
解决办法
1017
查看次数

执行Sql语句并将结果发送到电子邮件

我必须每天执行 SQL 语句并将结果通过电子邮件发送给 dba。我配置了数据库电子邮件。

下面是查询:

 SELECT
        account.accountID,
        account.name
    FROM
        account
        LEFT OUTER JOIN accountfeaturesetting afs 
            ON afs.accountid = account.accountid 
                and afs.featureid = 'Schedules' 
                and afs.settingid = 'EditReasons'
    WHERE
        ISNULL(afs.Value, '0') = '1'
        AND NOT EXISTS
 (SELECT 1 FROM program 
WHERE program.AccountID = account.AccountID
 AND program.Active = 1 AND 
(program.ScheduleEditReasonFlags <> 0 OR
 program.ScheduleEditReasonFields <> 0))
        AND account.IsMaster = 0
Run Code Online (Sandbox Code Playgroud)

为此,我创建了具有 2 个步骤的 Sql 作业:

  1. 执行选择语句
  2. 发送结果:

    Use MSDB
        EXEC msdb.dbo.sp_send_dbmail
            @profile_name = 'abc',
            @recipients = 'recipients@company.com',
            @subject = 'queryresultset',
            @body='testmail', …
    Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-agent database-mail

4
推荐指数
2
解决办法
7万
查看次数

SSRS 2008 报告在不同字段值的图像之间切换

在 SSRS 报告上切换图像的最佳方式是什么?

在我创建的报告中,有很多问题的答案是“是”或“否”,根据我对问题的价值,我想显示正确的图像。

例如我们有性别:


此报告仅用于输出,不会用于执行数据输入。

对于每条记录,无论该人是男性还是女性,我都在“性别”列中具有值。我想在正确的性别旁边显示一个带有刻度线的正方形,同时保持另一个选项框为空(一个空的正方形图像)。这应该像一个单选按钮一样起作用。

因此,如果记录有gender = 'Female',我应该在女性文本框旁边显示一个勾号图像,在男性文本框旁边显示一个空方块,反之亦然,如果gender = 'Male'在记录中。

有什么建议?

reporting ssrs-2008

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

SQL Server - 从子查询/派生表中删除

有没有办法可以把下面的SELECT语句变成一个DELETE

I would like to delete the corresponding returned records from the [ETL].[Stage_Claims] table.

Since I used derived tables I can't reference the Stage_Claims table.

To summarize, the 2 physical tables used in the below query have identical structures. Only difference is DUPS_Claims is a subset of Stage_Claims.

DUPS_Claims contains duplicate records found in Stage_Claims. If a record exists 3 times in Stage_Claims, we will have that record 3 times in DUPS_Claims as …

sql-server

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

根据 15 分钟的间隔获取计数

我有一个包含通话记录的表:

tbl_calls

cl_Id
cl_StartDate
cl_endDate
Run Code Online (Sandbox Code Playgroud)

我传递两个参数@StartDate@EndDate给我的存储过程。

我的要求是在每 15 分钟的持续时间内获取通话记录的数量。

例如,如果:

@StartDate = '2015-11-16 00:00:00.000', 
@EndDate = '2015-11-16 23:59:00.000'
Run Code Online (Sandbox Code Playgroud)

输出应该是:

Date                        Count
2015-11-16 00:00:00.000      10(Count of startDate between '2015-11-16 00:00:00.000' AND '2015-11-16 00:15:00.000')
2015-11-16 00:15:00.000       7(Count of startDate between '2015-11-16 00:15:00.000' AND '2015-11-16 00:30:00.000')
2015-11-16 00:30:00.000      50(Count of startDate between '2015-11-16 00:30:00.000' AND '2015-11-16 00:45:00.000')

upto @EndDate
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下查询,但它不能正常工作。有一个更好的方法吗?

DECLARE @StartDate DATETIME = DATEADD(DAY,-1,GETUTCDATE()),
        @EndDate DATETIME = GETUTCDATE()

SELECT New 
FROM
    (SELECT 
         (CASE 
             WHEN cl_StartTime BETWEEN @StartDate AND …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2 count date

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