我们使用的是 SQL 2005 Express Edition。我们要从 LDF 文件中读取数据以恢复一些已删除的记录。
我们尝试使用 ApexSQL 的试用版,这对我们有很大帮助。我们不是去寻找第三方软件,而是试图弄清楚如何自己读取日志文件。
我们如何从 LDF 文件中读取和恢复数据?
之间的唯一区别是
ALTER INDEX [index_name] on [object_name] REBUILD with (ONLINE=OFF, FILLFACTOR=90)
Run Code Online (Sandbox Code Playgroud)
和
DBCC DBREINDEX([dbname], 90)
Run Code Online (Sandbox Code Playgroud)
只是 DBCC 命令将重新索引数据库中所有表的所有索引?
我有一个通用日志表,大约 5m 行。
有一个存储事件类型的“强类型”字段,以及一组包含与事件相关的数据的“弱类型”列。也就是说,那些“松散类型”列的含义取决于事件的类型。
这些列定义为:
USER_CHAR1 nvarchar(150) null,
USER_CHAR2 nvarchar(150) null,
USER_CHAR3 nvarchar(150) null,
USER_CHAR4 nvarchar(150) null,
USER_CHAR5 nvarchar(150) null,
USER_INTEGER1 int null,
USER_INTEGER2 int null,
USER_INTEGER3 int null,
USER_INTEGER4 int null,
USER_INTEGER5 int null,
USER_FLAG1 bit null,
USER_FLAG2 bit null,
USER_FLAG3 bit null,
USER_FLAG4 bit null,
USER_FLAG5 bit null,
USER_FLOAT1 float null,
USER_FLOAT2 float null,
USER_FLOAT3 float null,
USER_FLOAT4 float null,
USER_FLOAT5 float null
Run Code Online (Sandbox Code Playgroud)
每种类型中的第 1 列和第 2 列都被大量使用,但从第 3 列开始,很少有事件类型会提供如此多的信息。因此,我决定将每种类型的第 3-5 列标记为SPARSE.
我首先进行了一些分析,发现实际上,每一列中至少 80% 的数据是null …
您能否为中级到高级 SQL 专业人员推荐任何好的资源,以对这些资源进行彻底的研究,如果正确学习,可以更好地导航该领域的所有固有缺陷?
我正在考虑各种资源——教程、博客、手册页、PASS 会话或任何东西。
早些时候,对我来说,关于是否(总是)使用/避免聚集索引的辩论/讨论没有定论。
好吧,我知道它们有时会在适当的+特定目的和上下文中使用。
“SQL Azure 不支持没有聚簇索引的表。一个表必须有一个聚簇索引。如果一个表是在没有聚簇约束的情况下创建的,那么在允许对该表进行插入操作之前必须先创建一个聚簇索引”
不符合先前的结论、理由和解释。
我在前面的解释中遗漏了严格要求无任何例外地普遍存在的聚集索引的基本原理是什么?
我一直在研究 PowerShell,并且我一直(慢慢地)将它融入到我的日常 DBA 任务中。
到目前为止,我已经看到了许多用于许多不同管理活动的断开连接的 PowerShell 脚本。
我想知道的是,是否有官方(或可识别的)PowerShell 脚本集合或存储库,人们通常会使用这些集合或存储库来获取用于常见 DBA 活动的 SQL Server PowerShell 脚本(例如 Ola Hallengren 的 T-SQL 脚本)。
在我们的实时服务器上发生了一些死锁,我知道,这很糟糕。
无论如何,我试图弄清楚如何查看导致锁定(或持有时间过长)的 SQL 代码。
我已经添加了所有的Locks事件(获得、死锁、升级、释放、超时等),但我所看到的只是对获得/释放事件的轰炸,没有太多附加信息。
我很确定我知道导致死锁的“场景”,因为我们在插入/更新/删除后在表上有一个触发器,这做了很多额外的工作,有时高达 8 秒。
但是,在大部分额外工作中,数据从 TableA 中提取并插入到表变量中,大量工作在该表变量的内存中进行(大约 6 秒过去),然后最终插入到 TableB 中。
问题: 即使我只是将某些行选择到表变量中,这实际上会导致整个表的表锁定吗?
我已经添加了“触发跟踪”(插入表 x 值('嗨,我在这里')等),我基本上知道这个过程花费的时间最长(因此必须可能导致锁定?)
但我仍然不确定为什么会发生僵局。
问题: 我可以看到发生了 2 个锁升级,这是否意味着行锁已升级为表锁?
问题: 有人能给我一些关于如何进一步追踪这个僵局的提示吗?
编辑:
这是死锁图
编辑2:
这是 [UpdatePostsCleanedUriUniqueUri] 的代码,这可能会导致表锁定?
ALTER PROC [dbo].[UpdatePostsCleanedUriUniqueUri]
(
@PostIds IdentityType READONLY
)
AS
SET NOCOUNT ON
-- *************************************************************************
-- ******************* Create the Cleaned Uri's, first ********************
-- *************************************************************************
---- "Remove" any existing cleaned uri's, per location
UPDATE a
SET …Run Code Online (Sandbox Code Playgroud) 有没有办法找出表在 SQL Server(2005 及更高版本)中占用了多少内存?
例如,假设我有一个包含 3000 万条记录的表。我想知道当前缓冲区缓存中有多少属于该表的页面,包括索引、数据和文本/图像页面。
我找到了 Pinal Dave 的这个查询,但似乎这个查询只返回由索引分配的页面(无论是集群的还是非集群的)。
有没有一种方法可以通过单击列(类似于 Excel)来获取查询结果集中列的总和,这样我就不必将该列复制并粘贴到 Excel 中以查看总数列中所有值的总和?
我正在运行 SQL Server 2008。
在 SQL Server 中,我在特定数据库中有一个用户,我被要求仅授予他们访问该数据库的所有非系统视图的权限。我相信这可以通过编辑视图类型的安全对象并在每个视图上授予选择来完成,但是有很多很多视图。有没有更有效的方法来实现这一目标?
sql-server ×10
index ×2
backup ×1
cache ×1
concurrency ×1
index-tuning ×1
locking ×1
management ×1
memory ×1
null ×1
powershell ×1
recovery ×1
restore ×1
scripting ×1
security ×1
storage ×1
sum ×1