除了使用 SQL Server Profiler 之外,还有什么方法可以跟踪正在使用的存储过程,或者至少是上次执行它们的时间?
假设您有一个默认填充因子为 20 的数据库。每当插入数据时,它是否只创建填充到 20% 的页面?
据我了解,插入数据时,页面中将有大约 20% 的数据。但是,当数据更新时,它会扩展到索引的 20% 以上,直到填充它并生成页面拆分,对吗?
在 SQL Server 2005 中,有没有办法找到在服务器级别不存在的用户(在服务器级别删除但在删除之前未与数据库解除关联的帐户)或未链接的帐户(帐户可能已在服务器级别而不是数据库级别被删除,然后重新读取但数据库级别从未被清理过)。
我有一个非常凌乱的服务器,如果可以运行查询来找到这些,那就太棒了。
我在我的 SQL Server 2008 生产服务器上设置了快照复制,我刚刚注意到快照文件夹中的快照可以追溯到一年前。如何更改这些快照的保留时间?具体来说,我希望将快照保留 5 天。
这是我正在查看的文件夹的屏幕截图:

我正在记录我的数据库,我想在我的数据库中创建一个所有索引的列表。我想这样做的原因是,我可以加班跟踪索引的更改。我目前有一个电子表格,其中包含自我创建该电子表格以来已更改的所有索引,但它没有所有索引。我希望能够生成列表,而不是编写每个索引的脚本。我玩过系统视图,但我无法弄清楚。
如何为每个索引生成索引列表和创建语句?
我在我的一台生产服务器上运行了 Brent Ozar 的 sp_blitz。IT 将 MSDB 数据库中的一些表标记为是用户创建的。它们都遵循 dbo.DTA_* 模式。这些表是随 MSDB 一起提供的,还是由某事/某人添加的?
我有一个 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 的时候在 …
我们的数据库中有一些表的数据类型为 varchar(8000),其中该列中最长的实际值为 75。当我们在该列上放置索引时,我们会收到预期的警告,即最大允许的索引长度为 900 字节.
实际数据类型是否会影响该索引的有效性?也就是说,既然实际数据远低于900字节,那么索引还能用吗?
就其价值而言,我正在尝试修改数据类型,因为这对于列的目的来说是一个荒谬的限制,但我不确定争论的激烈程度。
我有一个任务,它接收输入并在 SQL 服务器上执行一系列任务,其中一些任务取决于服务器的内容和输入。为此,我使用了很多selects 然后基于输入的逻辑然后insertor update。在执行这些任务时,服务器和客户端之间的网络活动很高,因为它们取决于服务器的内容。
如果在 sql 服务器和客户端在同一台机器上时将其移动到存储过程,我会获得任何显着的性能提升或降低吗?
我正在尝试为报告创建一个视图,以便我可以轻松跟踪我在服务器上安排的所有备份。所有这些备份都安排在维护计划的子计划中,因此作业名称都以“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 ×10
fill-factor ×1
identity ×1
index ×1
replication ×1
sp-blitz ×1
statistics ×1
users ×1