小编DFo*_*k42的帖子

跟踪存储过程的使用

除了使用 SQL Server Profiler 之外,还有什么方法可以跟踪正在使用的存储过程,或者至少是上次执行它们的时间?

sql-server-2008 sql-server statistics

21
推荐指数
2
解决办法
5万
查看次数

基于填充因子的索引中数据的行为

假设您有一个默认填充因子为 20 的数据库。每当插入数据时,它是否只创建填充到 20% 的页面?

据我了解,插入数据时,页面中将有大约 20% 的数据。但是,当数据更新时,它会扩展到索引的 20% 以上,直到填充它并生成页面拆分,对吗?

index sql-server sql-server-2008-r2 fill-factor

14
推荐指数
1
解决办法
1526
查看次数

查找孤立用户

在 SQL Server 2005 中,有没有办法找到在服务器级别不存在的用户(在服务器级别删除但在删除之前未与数据库解除关联的帐户)或未链接的帐户(帐户可能已在服务器级别而不是数据库级别被删除,然后重新读取但数据库级别从未被清理过)。

我有一个非常凌乱的服务器,如果可以运行查询来找到这些,那就太棒了。

sql-server-2005 sql-server users

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

快照复制保留

我在我的 SQL Server 2008 生产服务器上设置了快照复制,我刚刚注意到快照文件夹中的快照可以追溯到一年前。如何更改这些快照的保留时间?具体来说,我希望将快照保留 5 天。

这是我正在查看的文件夹的屏幕截图: 复制文件夹

replication sql-server-2008 sql-server

13
推荐指数
1
解决办法
4578
查看次数

为所有索引生成创建脚本

我正在记录我的数据库,我想在我的数据库中创建一个所有索引的列表。我想这样做的原因是,我可以加班跟踪索引的更改。我目前有一个电子表格,其中包含自我创建该电子表格以来已更改的所有索引,但它没有所有索引。我希望能够生成列表,而不是编写每个索引的脚本。我玩过系统视图,但我无法弄清楚。

如何为每个索引生成索引列表和创建语句?

sql-server-2008 sql-server

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

MSDB 中的 dbo.DTA_* 表

我在我的一台生产服务器上运行了 Brent Ozar 的 sp_blitz。IT 将 MSDB 数据库中的一些表标记为是用户创建的。它们都遵循 dbo.DTA_* 模式。这些表是随 MSDB 一起提供的,还是由某事/某人添加的?

sql-server-2008 sql-server sp-blitz

8
推荐指数
1
解决办法
3093
查看次数

什么可能导致插入错误的 ID?

我有一个 SQL Server 2008 服务器(版本 10.0.5500)。本周早些时候,我在一个已经有数据的表上运行了这个:

delete from dbo.table
go    
dbcc checkident('dbo.table',reseed,0)
Run Code Online (Sandbox Code Playgroud)

当用户稍后创建新记录时,不知何故将 ID 0 插入到 ID 列中,而不是 SQL Server 通常放入的 1,如果为 ID 配置了 identity(1,1)。

这导致了一些奇怪的问题,但正如预期的那样,清除数据并运行重新种子会导致插入 1。我无法复制这个问题。

作为参考,这里是我们的保存 sp 的一般格式:

alter procedure dbo._TableSave
    @pk_id int,
    @field varchar(50)
as
    if (@pk_id is null)
    begin
        set nocount on;

        insert into dbo.Table
        (
            Field
        )
        values
        (
            @field
        );
        select scope_identity();
    end
    else
    begin
        update dbo.Table
        set Field=@field
        where PK_ID=@pk_id

        select @pk_id
    end
Run Code Online (Sandbox Code Playgroud)

有谁知道什么会导致 SQL Server 在 ID 应该是 1 的时候在 …

sql-server-2008 sql-server identity

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

大型 varchar 数据类型对索引有什么影响?

我们的数据库中有一些表的数据类型为 varchar(8000),其中该列中最长的实际值为 75。当我们在该列上放置索引时,我们会收到预期的警告,即最大允许的索引长度为 900 字节.

实际数据类型是否会影响该索引的有效性?也就是说,既然实际数据远低于900字节,那么索引还能用吗?

就其价值而言,我正在尝试修改数据类型,因为这对于列的目的来说是一个荒谬的限制,但我不确定争论的激烈程度。

sql-server-2008 sql-server

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

使用存储过程

我有一个任务,它接收输入并在 SQL 服务器上执行一系列任务,其中一些任务取决于服务器的内容和输入。为此,我使用了很多selects 然后基于输入的逻辑然后insertor update。在执行这些任务时,服务器和客户端之间的网络活动很高,因为它们取决于服务器的内容。

如果在 sql 服务器和客户端在同一台机器上时将其移动到存储过程,我会获得任何显着的性能提升或降低吗?

sql-server stored-procedures

5
推荐指数
1
解决办法
83
查看次数

作业计划视图

我正在尝试为报告创建一个视图,以便我可以轻松跟踪我在服务器上安排的所有备份。所有这些备份都安排在维护计划的子计划中,因此作业名称都以“Backup.”开头。

我遇到的问题是,我希望能够轻松查看作业计划再次运行的时间以及计划的频率。sysschedules 表具有字段 freq_type 和 freq_interval。可以在此处找到它们的值的定义。正如您所看到的,由于缺乏更好的描述方式,这些字段是累积的。我不知道如何在基于集合的解决方案中进行设置,以便我可以看到当天的名称。

我希望能够看到诸如“每 3 天执行一次”或“每周一、二、五执行”之类的内容。

我怎样才能写这个,这样我就不会使用多层 case 语句来得到我想要的东西?

到目前为止,这是我的代码:

select 
    j.job_id,
    j.name,
    s.next_run_date,
    s.next_run_time,
    ss.*
from msdb.dbo.sysjobs j
    left outer join msdb.dbo.sysjobschedules s
        on j.job_id=s.job_id
    left outer join msdb.dbo.sysschedules ss
        on s.schedule_id=ss.schedule_id
where j.name like 'backup.%'
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server

5
推荐指数
1
解决办法
5285
查看次数