在 SQL Server 2005 中,如何获取没有时间部分的当前日期?我一直在使用,GETDATE()但希望它的时间为 00:00:00.0
当我尝试删除数据库时,出现错误“无法删除数据库“dbname”,因为它当前正在使用中”。但是,当我运行时sp_who2,肯定没有连接到该数据库的会话。我还将数据库设置为single_user mode with rollback immediate.
为什么会这样?
我在这里读到每行将存储一些额外的数据,因此我们可能会看到性能下降,但还有哪些其他风险?
例如。这会影响数据库的恢复吗?我们还需要做些什么来利用这一点吗?
我计划执行这些命令:
ALTER DATABASE DatabaseName SET READ_COMMITTED_SNAPSHOT ON
ALTER DATABASE DatabaseName SET ALLOW_SNAPSHOT_ISOLATION ON
Run Code Online (Sandbox Code Playgroud)
我相信这会让我们更接近 oracle,如果一个事务正在更新其他事务仍然可以读取旧数据。这样对吗?
我正在研究这个,因为我厌倦了 SQL Server 2005 中的锁定问题。我希望这可以减少我们的用户看到的偶尔的死锁,帮助我们的应用程序的整体性能并鼓励我们的开发人员在没有害怕。
我想知道如何识别实际填充 TEMPDB 数据库事务日志的确切查询或存储过程。
sql-server-2005 sql-server-2008 sql-server tempdb transaction-log
查看运行缓慢的查询的执行计划,我注意到有些节点是索引查找,有些是索引扫描。
索引查找和索引扫描有什么区别?
哪个表现更好?
SQL 如何选择一个?
我意识到这是 3 个问题,但我认为回答第一个会解释其他问题。
我有一个由 2000 万只动物组成的动物园,我在 SQL Server 2005 数据库中对其进行跟踪。其中约 1% 是黑色,约 1% 是天鹅。我想获得所有黑天鹅的详细信息,因此不想淹没我所做的结果页面:
select top 10 *
from animal
where colour like 'black'
and species like 'swan'
Run Code Online (Sandbox Code Playgroud)
(是的,不明智的是,这些字段是自由文本,但它们都已编入索引)。事实证明我们没有这样的动物,因为查询在大约 300 毫秒内返回一个空集。如果我使用 '=' 而不是 'like',它的速度会快两倍,但我有一种预感,后者将为我节省一些打字的时间。
原来动物园管理员认为他可能将一些天鹅输入为“黑色”,因此我相应地修改了查询:
select top 10 *
from animal
where colour like 'black%'
and species like 'swan'
Run Code Online (Sandbox Code Playgroud)
结果证明它们都没有(实际上除了“黑色”动物之外没有“黑色%”动物)但查询现在需要大约 30 秒才能返回空。
似乎只是 'top' 和 'like %' 的组合引起了麻烦,因为
select count(*)
from animal
where colour like 'black%'
and species like 'swan'
Run Code Online (Sandbox Code Playgroud)
返回 0 非常快,甚至
select *
from animal
where colour like 'black%'
and species …Run Code Online (Sandbox Code Playgroud) 我的任务是为我们的 Sql Server 2005 数据库制定维护计划。我知道对于备份,我希望每 15 分钟执行一次完整的数据库备份和事务日志备份。我的问题是弄清楚我想做哪些其他任务以及我应该多久做一次。
所以,到目前为止,我已经想到了这一点。如果我的想法有任何缺陷或更好的方法,请纠正我。
我记得前段时间(当我在另一份工作中制定类似计划时)读到其中一些任务不需要每天运行或不应该每天运行。至于哪些,它逃脱了我。我可以使用一些指导来创建更好的维护计划,以减少灾难中的数据丢失,但不会在高峰时段运行时对系统造成负担(并提高性能)。
我有一个带有标识列的表说:
create table with_id (
id int identity(1,1),
val varchar(30)
);
Run Code Online (Sandbox Code Playgroud)
众所周知,这
select * into copy_from_with_id_1 from with_id;
Run Code Online (Sandbox Code Playgroud)
导致 copy_from_with_id_1 在 id 上也带有标识。
以下堆栈溢出问题提到明确列出所有列。
咱们试试吧
select id, val into copy_from_with_id_2 from with_id;
Run Code Online (Sandbox Code Playgroud)
糟糕,即使在这种情况下 id 也是一个标识列。
我想要的是一张像
create table without_id (
id int,
val varchar(30)
);
Run Code Online (Sandbox Code Playgroud) 我们有一个存储过程,用户可以手动运行它来获取全天不断使用的报告的一些更新数字。
我有第二个存储过程应该在第一个存储过程运行后运行,因为它基于从第一个存储过程中获得的数字,但是运行时间更长,并且是一个单独的进程,所以我不想在第二个存储过程运行时让用户等待。
有没有办法让一个存储过程启动第二个存储过程,并立即返回而不等待结果?
我正在使用 SQL Server 2005。
我有一个开发数据库,它在重新启动时进入了恢复模式,并且在过去一个小时左右一直在恢复。
我需要要么停止恢复,要么以某种方式杀死它。
我一点也不关心数据库或任何数据,我有部署脚本。
有任何想法吗?
sql-server-2005 ×10
sql-server ×9
identity ×1
index ×1
jobs ×1
maintenance ×1
performance ×1
tempdb ×1
transaction ×1