我正在尝试编写一个查询来获取表中状态的持续时间。此查询需要在 SQL Server 2008 中工作。
假设我有下表:
Key Value RecordDate
1 1 2012-01-01
2 1 2012-01-02
3 1 2012-01-03
4 5 2012-01-05
5 5 2012-01-05 12:00:00
6 12 2012-01-06
7 1 2012-01-07
8 1 2012-01-08
Run Code Online (Sandbox Code Playgroud)
我想得到以下结果
Value StartDate EndDate Duration
1 2012-01-01 2012-01-05 4 days
5 2012-01-05 2012-01-06 1 days
12 2012-01-06 2012-01-07 1 days
1 2012-01-07 NULL NULL
Run Code Online (Sandbox Code Playgroud)
基本上我想在它改变之前获取值的持续时间。
我正在接近某个地方,但仍然无法弄清楚:
SELECT [Key], [Value],
MIN(RecordDate) OVER(PARTITION BY [Value]) as 'StarDate',
MAX(RecordDate) OVER(PARTITION BY [Value]) as 'EndDate',
DATEDIFF(day, (MIN(RecordDate) OVER(PARTITION BY [Value])), …Run Code Online (Sandbox Code Playgroud) 几天前,我正在使用 SQL Server 2008 中的维护计划测试一些东西。
我创建了一个来重建索引并每周进行一次完整备份。(我知道,我今天发现了坏事)。
问题是,由于事务日志增长了很多(大约 80gb,db 是 60gb),备份没有运行。现在我一整天都在谷歌上搜索,看看是否有办法将事务日志缩小到以前的大小,比如 200mb。
更新
这是在我们的生产服务器上,维护计划如下:
重建索引
成功备份完整数据库
成功时 删除超过两周的备份。
这还没有完成,它在某个时候坏了,所以我想重建索引花了太长时间。所以备份没有发生。
我们还每小时备份一次交易日志。
这可能吗?为什么会发生这种情况?我知道在重建时它会在事务日志或类似的东西中创建索引的副本,但是有可能摆脱这个副本吗?
这就是我在 Job History 上的内容,所以看起来由于某种原因它在创建索引时失败了,并且由于计划成功进行备份,它停在那里。
信息 :
以用户身份执行:SHOCKLOGIC\DB1$。...ress: 2013-08-05 03:01:03.43 Source: Rebuild Index Task Executing query "ALTER INDEX [PK_ActivitiesPerGroup] ON [dbo].[Acti...".: 12% Complete End Progress Progress: 2013- 08-05 03:01:03.43 来源:重建索引任务执行查询“USE [Eventlogic]”。:完成 12% 结束进度进度:2013-08-05 03:01:03.52 来源:重建索引任务执行查询“ALTER INDEX [PK_ActivitiesPerHotelCat] ON [dbo].[A...".: 12% complete End Progress Progress: 2013-08-05 03:01:03.52 Source: Rebuild Index Task Executing query "USE [Eventlogic] ".: 12% complete End Progress Progress: 2013-08-05 …
我最近进入了 SSIS,但无法在网络上的任何地方找到我想要实现的目标。
我试图将一些行作为输入,然后用其他内容替换一个特定列的值,然后返回带有修改过的列的行作为输出。
问题是我不知道要使用哪个任务。
我受到 SQL Server 2008 的限制。
我该如何开始?
当我尝试在 SQL Server 2008 R2 中创建新数据库时,它已完全创建,但它不是一个空白的空数据库,有许多表来自另一个数据库。我还尝试为其.mdf和.ldf文件指定不同的名称,但没有任何改变!
你能帮我知道问题出在哪里吗?
另外,是否有任何命令可以将我的数据库重置为空白数据库?
在适当排序的索引覆盖的单个范围内执行 MIN() 或 MAX() 时,SQL Server 执行 TOP() 并因此在仅获取一行后返回值。当搜索条件包含多个范围时,SQL Server 会从两个范围中获取所有索引值并进行流聚合,这比对每个子值执行 TOP() 慢得多。
例如,假设每个客户有大量订单,如下所示:
CREATE TABLE orders
(
customer_id int,
quantity int
)
Run Code Online (Sandbox Code Playgroud)
运行此查询:
SELECT MAX(quantity)
FROM orders
WHERE customer_id IN (1,2)
Run Code Online (Sandbox Code Playgroud)
将导致查询所需的时间是仅指定一个客户 ID 时的数倍。
执行上述查询的最有效方法是什么?相关地,如果需要单独的结果(即 GROUP BY customer_id),最好的方法是什么?
SQL小提琴:http ://sqlfiddle.com/#!3/ef0c6/1
sys.database_files并sys.sysfiles报告大小,但这只是文件的当前大小。有没有办法找出 tempdb 数据文件在系统重新启动期间重新创建后的初始大小?
我正在使用 SQL Server 2008。当我从备份文件恢复数据库时,我收到了错误。
服务器“WIN-TUT3YRM1MMN\SQLEXPRESS”的还原失败。(Microsoft.SqlServer.SmoExtended)
System.Data.SqlClient.SqlError:RESTORE 在从备份集中读取的数据库“KBCLDBNEW”中的页面 (44262:41495) 上检测到错误。(Microsoft.SqlServer.Smo)
我尝试在新数据库中恢复,但仍然出现错误。我找不到问题所在。谢谢你帮助我。
我有一个数据库服务器,上面有几个数据库。我如何才能看到任何资源压力可能来自哪里?
我想得到一张表:
我试图在我的实验室中设置几个虚拟机来测试 SQL Server 2008 和 Windows Server 2008 上的故障转移群集。
我拥有的其中一台主机无法运行 64 位虚拟机,但另一台主机却可以。果然,我先安装了 64 位机器(主机 A),却没有意识到主机 B 不能运行 64 位虚拟机。
我可以使用 x64 上的一个节点和 x86 上的另一个节点运行故障转移群集吗?还是我必须在主机 A 上重新安装操作系统才能成为 32 位?
sql-server-2008 sql-server clustering virtualisation windows-server
我只是在探索UPDLOCKSQL-Server 2008 中的提示,我发现它在避免某些死锁场景方面非常有用。使用这些类型的锁定提示时总会有一些副作用,但我找不到任何与此相关的副作用。
那么如果我在所有update查询中都使用它会发生什么?我不是在谈论select,只是update。它将如何对我产生负面影响?
sql-server-2008 ×10
sql-server ×9
performance ×2
backup ×1
clustering ×1
deadlock ×1
etl ×1
maintenance ×1
ssis ×1