我有一个 Sharepoint 服务器。我们的备份工具出现问题,现在我的一些数据库卡在恢复状态!

是否可以停止恢复过程?还有,我怎样才能确保数据库的完整性没有受到损害?
我有一个包含 64m 行的表,在磁盘上占用了 4.3 GB 的数据。
每行大约有 30 个字节的整数列,加上一个NVARCHAR(255)用于文本的变量列。
我添加了一个带有 data-type 的 NULLABLE 列Datetimeoffset(0)。
然后我为每一行更新了这一列,并确保所有新的插入都在这一列中放置了一个值。
一旦没有 NULL 条目,我就运行这个命令来使我的新字段成为强制性的:
ALTER TABLE tblCheckResult
ALTER COLUMN [dtoDateTime] [datetimeoffset](0) NOT NULL
Run Code Online (Sandbox Code Playgroud)
结果是事务日志大小大幅增长——从 6GB 增加到超过 36GB,直到空间用完!
有没有人知道 SQL Server 2008 R2 到底在为这个简单的命令做些什么来导致如此巨大的增长?
null sql-server sql-server-2008-r2 alter-table transaction-log
我的公司正面临为新的数据库服务器购买 SQL Server 2012 Denali 还是 SQL Server 2008 R2 的决定。我正在寻找客观的理由来选择一个。
我们的要求:
目前,我知道以下原因:
SQL Server 2012 德纳利
SQL Server 2008 R2
我似乎找不到很多技术原因来偏爱其中一个。基本上,这归结为选择成功运行的成熟技术与可用的最新和最好的版本。
做出决定的客观原因是什么?
sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012
我想从我的数据库图表导出为 PDF 或图像类型。我怎样才能做到这一点?
我使用 SQL Server 2008 R2。
SQL Server 中数据混淆的最佳实践是什么?
我们想在我们的 UAT 系统中使用屏蔽的生产数据。
如果我们想快速完成,并且混淆程度更高,应该采取什么方法?我正在考虑角色争夺人们的名字和姓氏,但如何?我应该自己创建一个函数还是有任何可用的预定义函数?我不想花时间重新发明轮子:)
日期字段怎么样?例如,是否应该从整个表中随机选择出生日期并分配给记录,或者有更好的方法吗?
根据 MSDN,Getdate()、GetUtcDate() 和 CURRENT_TIMESTAMP 都返回 DATETIME。我进行了一个简短的测试,结果证实:
CREATE TABLE #t(T DATETIME2(7));
GO
DECLARE @i INT ;
SET @i=1;
WHILE @i<10000 BEGIN ;
INSERT #t VALUES(CURRENT_TIMESTAMP) ;
SET @i=@i+1;
END ;
SELECT DISTINCT t
FROM #t
ORDER BY t ;
---
2013-01-28 13:23:19.4930000
2013-01-28 13:23:19.4970000
2013-01-28 13:23:19.5000000
2013-01-28 13:23:19.5030000
2013-01-28 13:23:19.5070000
2013-01-28 13:23:19.5100000
2013-01-28 13:23:19.5130000
Run Code Online (Sandbox Code Playgroud)
(剪辑)
是否有类似的函数返回 DATETIME2(7)?
有人可以让我更好地了解兼容模式功能吗?它的行为与我预期的不同。
据我所知,兼容模式是关于不同版本的 SQL Server 之间某些语言结构的可用性和支持。
它不会影响数据库引擎版本的内部工作。它将尝试阻止使用早期版本中尚不可用的功能和构造。
我刚刚在 SQL Server 2008 R2 中创建了一个兼容级别为 80 的新数据库。创建了一个只有一个 int 列的表,并用几行填充它。
然后用一个row_number()函数执行一个 select 语句。
我的想法是,由于 row_number 函数是在 2005 年才引入的,这会在兼容 80 模式下引发错误。
但令我惊讶的是,这工作得很好。然后,当然,只有在您“保存某些内容”时才会评估兼容规则。所以我为我的 row_number 语句创建了一个存储过程。
存储过程的创建进行得很顺利,我可以完美地执行它并获得结果。
有人可以帮助我更好地了解兼容模式的工作吗?我的理解显然有问题。
我正在从一个批处理文件运行 sqlcmd,我想知道如何让它在备份出现问题时返回 0 以外的 ERRORLEVEL。
我开始学习执行计划,并且对哈希匹配的工作原理以及为什么在简单连接中使用它感到困惑:
select Posts.Title, Users.DisplayName
From Posts JOIN Users on
Posts.OwnerUserId = Users.Id
OPTION (MAXDOP 1)
Run Code Online (Sandbox Code Playgroud)

据我了解,顶部索引扫描的结果变为可散列的,底部索引聚集扫描中的每一行都被查找。我至少在某种程度上了解哈希表是如何工作的,但我对在这样的示例中究竟哪些值进行了哈希处理感到困惑。
我认为它们之间的公共字段,即 id 被散列是有意义的——但如果是这种情况,为什么要散列一个数字?
哪个是获取我刚刚通过插入生成的标识值的最佳选择?这些语句对性能有什么影响?
SCOPE_IDENTITY() MAX()TOP 1IdentityColumn FROM TableNameORDER BY IdentityColumn DESC