在sql server中,当我们扩展安全性,扩展登录名时,有登录名列表。
所有这些都存储在主数据库中吗?
如果是这样,那么在迁移到另一台服务器时,如果我们备份这个主数据库并恢复到新服务器,那么登录名是否会迁移到新服务器?
同样,SQL 服务器作业、计划等存储在 msdb 中?这可以备份/恢复以将作业迁移到新服务器吗?
如果没有,那么备份这些系统数据库的目的是什么?
来自文档:确定有效的数据库引擎权限
SQL Server 管理员可以查看有关所有登录名和用户的信息。权限较低的用户通常只能看到有关他们自己身份的信息。
根据上述引用,使用户成为SQL Server 管理员的权限是什么?
没有运行 SQL 备份的维护计划或作业。
但sql日志显示数据库的i/o冻结,数据库的i/o已恢复,数据库已备份,备份数据库已成功处理x页。
在哪里可以找到已配置的备份?
“索引也保存在事务日志中”
这是否意味着当查询有索引的表时,整个索引会被拉入内存并随后记录到 tlog 中?
NOLOCK 导致分配顺序扫描而不是索引顺序扫描。
NOLOCK 不会阻止写入,因为它不在表上获取共享锁。
在NOLOCK扫描期间,由于没有共享锁,并且在扫描当前到达的点之前发生了写入(插入/更新),那么这种情况将导致记录丢失。
类似地,在写入(插入/更新)期间,当读取一行后发生页拆分,并且该行现在是下一页的一部分(由于页拆分),那么这种情况将导致重复记录。
我一直在阅读文章,这些文章似乎表明丢失/重复行问题是由于分配顺序扫描造成的。
如上面的示例所示,丢失/重复记录问题是由于没有锁定和页面拆分造成的。正确的?是否也是分配顺序扫描导致的?
如果分配有序扫描确实会导致丢失行/重复项,那么我想问 - 假设引擎使用了索引顺序扫描(我知道引擎不会这样做,但只是为了这个问题而假设)而不是分配顺序扫描,那么它将如何解决丢失/重复行问题?
我有一个带有 200GB RAM 的生产 SQL 服务器。
其中 150GB 分配给 sql server(通过在 sql server 属性中设置最大内存设置)
其余的由 ssis、操作系统、防病毒、应用程序使用。
我想测试 150GB 内存对于 sql server 是否足够,因为大约有 20 个数据库,数据文件大小从 5GB 到 500GB。如何捕获内存使用信息?
假设表有 name 和 id 列。
ID是唯一的非聚集索引。所以this指向堆表。
如果我将Name设置为聚集索引(非唯一),那么ID非聚集索引将指向什么?
我知道它不会指向堆,因为该表现在是聚集索引。
通常,非聚集索引指向聚集键,但在上述情况下,聚集键不是唯一的。那么ID(非聚集索引)指向什么呢?
ASYNC_NETWORK_IO 等待类型主要是由于客户端应用程序无法足够快地处理从 SQL Server 到达的数据而引起的。
当查询执行时,当结果开始可供使用时,客户端应用程序开始使用结果。假设结果由 4 个线程保存,那么,在结果完全被客户端应用程序消耗之前,保存数据的线程是否保持锁定状态?
sys.dm_exec_requests - 这些是活动请求
sys.dm_exec_sessions - 这些是活动会话
一个会话可以有 1 个或多个请求。
从检测和解决阻塞的角度出发,我正在探索上述dmvs。我观察到 sys.dm_exe_sessions 中存在的 session_id 在 sys.dm_exec_requests 中不存在。
例如 - 在 sys.db_exec_requests 中,有一条记录,等待类型为LCK_M_X,等待资源为KEY: 2......。相应的阻塞会话 ID 未显示在 sys.dm_exec_requests 中。
它在 sys.dm_exec_sessions 中显示,状态为sleeping。这种情况意味着什么 - 即 - 由于休眠会话而导致请求被阻止?