小编Ray*_*and的帖子

备份内部结构 - 当备份作业运行时会发生什么 - 在 SQL Server 中的锁定和性能开销方面?

对于 MySQL,我知道数据库是在 SQL 语句中逐表备份的,这会导致锁定,如果在备份时更新列,则最终可能会出现完整性问题。

据我了解,这不适用于 Microsoft SQL Server,但 SQL Server 是如何处理的?是否有一些内部冻结来保持数据库一致?

我还听说备份是单线程的,这意味着它只使用一个核心,假设您备份到单个文件。还假设您有一台多核机器,例如 16 核,或者至少比 1 多得多。

根据我的个人经验,我在备份时从未遇到过问题,既没有锁定也没有开销问题,但我的经验有限。这就是为什么我总是建议在服务器属性中打开备份压缩。

那么当备份作业正在运行时会发生什么?不同版本是否也有显着差异?例如 2008、2012 和 2014(不是许可证)。

sql-server backup sql-server-2012 sql-server-2014

14
推荐指数
3
解决办法
4717
查看次数

查找访问特定 SQL Server 的所有 IP 或用户

假设我找到了一个 SQL Server,但我不知道哪些应用程序连接到它。也许我找到了一个应用程序,但我不确定它是否是唯一一个使用它的应用程序。

有没有找到所有不同连接的好方法?

sql-server sql-server-2012 troubleshooting connections

11
推荐指数
2
解决办法
4万
查看次数

SQL Server 如何计算(压缩)备份的初始大小?

创建备份时,SQL Server 会猜测(?)初始备份文件的大小。稍后,也许当它附加日志时,大小会被重新调整,有时会多次调整,直到达到最终大小。差异越大,备份所需的时间就越长。(与另一个备份相比,稍后不会调整大小)。示例:Database1(大小为 500GB,使用了 70GB 的日志)通过压缩进行备份。创建的 .bak 文件大小为 85 GB,一段时间后 CPU 使用率上升,我可以看到 .bak 文件重新调整为 136 GB,这种情况再次发生,直到备份的最终大小为 178GB到达。

当这些重新计算发生时,与同一台机器上的其他备份相比,以 MB/s 为单位的平均备份速度会降低。唯一来自附加和清除日志吗?还是因为数据库中使用的数据类型不同?意味着它们以不同的压缩率压缩,或者其他什么?

我来到这个话题,因为我知道我的备份需要大约 30 分钟,但现在即使数据库没有增长到其大小的 300%,也需要 1.5 小时。它仅增长了 30%。

使用等待统计数据,我可以看到除了 BackupIO 之外,我还在某个时候等待 CPU (SOS_SCHEDULER_YIELD)。

Machine Details:
VMWare 6.0 
32 GB of Memory (Max memory 28GB given to SQL Server)
2 logical CPU
Max Degree of Parallelism (1, it's a Sharepoint 2013)   
SQL Server 2014
Windows Server 2012 R2
running on an SSD Raid (5)
Run Code Online (Sandbox Code Playgroud)

当然,我为运行备份的用户启用了即时文件初始化。

performance sql-server backup compression windows-server

7
推荐指数
1
解决办法
1425
查看次数

在 SQL Server 中保留默认的最大内存 2147483647 MB​​ 值,这是一种不好的做法吗?

基于该 msdn 页面: 服务器内存设置,最好保留 SQL-Servers min 和 max memory 的默认值以使其保持动态...

根据我通过教程学到的知识,您应该始终定义一个最大值,关于最小值,我没有听说过太多。我正在使用简单的旧 perfmon 监视我的页面文件,我意识到很少发生磁盘交换,一旦它几乎导致服务器崩溃。

这可能与 SQL Server 中的默认最大内存设置有关吗?数据库大约为 150 GB,内存为 48 GB,该机器上没有其他应用程序在运行。

另外,为什么你应该有一个最小值?我知道太低的值会阻止 SQL-Server 启动,我知道 SQL-Server 将内容保存在内存中,因此不会尝试释放它的缓存。

我正在使用 SQL-Server 2012,在此先感谢您!

performance sql-server memory sql-server-2012

6
推荐指数
1
解决办法
2万
查看次数

SQL Server 2012 Standard Edition 使用超过 64GB 的内存,为什么以及如何?

我将 SQL Server 2012 Standard 放在一个虚拟机 (VMWare) 上,该虚拟机具有大约 98GB 的​​内存。

现在我检查了下面的查询 SQL Server 占用了多少内存。

Microsoft SQL Server 2012 - 11.0.5058.0 (X64) 
Run Code Online (Sandbox Code Playgroud)

并且看到他已经吃掉了 81GB 的内存,并且最大内存设置为 ~90GB。

使用:

select (physical_memory_in_use_kb/1024)Memory_usedby_Sqlserver_MB,      
(locked_page_allocations_kb/1024 )Locked_pages_used_Sqlserver_MB, 
(total_virtual_address_space_kb/1024 ) VAS from sys. dm_os_process_memory
Run Code Online (Sandbox Code Playgroud)

SQL Server 2012 Standard 应仅支持 64GB 内存。

为什么我的 SQL Server 吃的比他能吃的多?还是信息不正确?

任何的想法?这与使用虚拟内存的虚拟机有关吗?

我不知道 VM 主机上是否激活了气球驱动程序...

如果您需要更多信息,我会添加它。

memory sql-server-2012

5
推荐指数
1
解决办法
9301
查看次数

仅镜像/复制数据库的 1 个表

我需要一种很好的方法来在不同服务器和不同数据库之间复制 SQL Server 2012 中的单个表。我试过复制品,它工作得很好,但可能有更好/更简单的方法,我现在看不到。

也许有一种方法可以使用任务将数据作为作业导入。数据不需要一直同步。每隔 5-10 分钟,第二个数据库 [B] 就可以使用数据库 [A] 中的数据进行更新。

是否可以只为一张表设置镜像?

当然,我检查了网络,这给了我编写导入任务脚本的想法。

还有什么可能以及如何?

sql-server database-recommendation sql-server-2012

5
推荐指数
1
解决办法
1万
查看次数

为什么推荐最大并行度 1 并将其用于 SQL Server 中的 Sharepoint?

我是 Sharepoint 的新手,但我曾经经常使用 SQL Server。我意识到 Sharepoint 将一些 SQL Server 设置更改为非默认值。一个是最大并行度,为什么sharepoint不像并行计划执行那样?另外我为什么要关闭“自动更新统计信息?我找不到这两个问题的答案。我在 Sharepoint 2013 上

sql-server sharepoint configuration sql-server-2014

5
推荐指数
1
解决办法
1106
查看次数

在一个 select 语句中进行划分、舍入和替换 - SQL Server 中从字节到 GB 的转换

我有一个数据库,其中包含一个值、一个以字节为单位的共享大小和一个共享名。这非常准确,但对我的最终用户没有用。因此我将值转换为 GB。通过使用简单的划分效果很好。

让我们假设我的数据库由两列组成。共享名和共享大小。

Sharename | Sharesize
Run Code Online (Sandbox Code Playgroud)
Share 1   |71685107549

Now I run this:
SELECT TOP (1000) 
      [Sharename]
      ,[ShareSize]
      ,(ShareSize / 1e+9) SharesizeGB
  FROM [mydb].[dbo].[myshares]
Run Code Online (Sandbox Code Playgroud)

输出是:

ShareSize   SharesizeGB
71685107549 71,685107549
Run Code Online (Sandbox Code Playgroud)

现在我需要用“点”替换“,”并将结果四舍五入到点后只有两位数字。

是否可以仅使用 select 语句?

对于我的示例,不需要除以 1024。

sql-server select sql-server-2014

3
推荐指数
1
解决办法
245
查看次数

何时更喜欢截断而不是批量删除?

当我浏览 DBA-Reactions 时,我几乎理解了所有的 .gif,但是使用这个我遇到了麻烦:

https://twitter.com/DBAReactions/status/613840893322338304

我的意思是 truncate 显然不会像批量删除那样创建事务日志,但仍然存在您非常确定可以简单地截断完整表的情况。除此之外还有其他的顾虑吗?所以基本上我很想了解完全不同。

sql-server truncate sql-server-2012

2
推荐指数
1
解决办法
566
查看次数