标签: sql-server-2012

数据库所有者之一已被删除,并在 sql server 中更改了相应的属性

2013 年 12 月,一个名为 user1 的用户在 SQL 2008 上创建了一个数据库。今天,我们将从服务器中删除该用户(/所有者)。那么数据库的所有者属性将显示什么?

sql-server-2005 sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012

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

频繁删除和插入,影响性能

在我的应用程序中,我们的更新很少。大多数数据被删除和插入。

我的问题是,这将如何影响性能?

我们使用的是 SQL Server 2012。

  1. 表统计信息(这些会更快过时吗?)
  2. 碎片化

请发表您的经验。

提前致谢!!

performance sql-server t-sql sql-server-2012

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

从 SQL Server 2005 迁移到 SQL Server 2012 后的 SQL 性能问题

昨天我们将一个 SQL Server 2005 数据库迁移到了 SQL Server 2012。我们做了一个完整备份并在新服务器上恢复了它。

现在的问题是 SQL Server 2012 上的数据库比使用 SQL Server 2005 的 Windows 2003 服务器慢得多。更令人担忧的是,完全相同的维护计划(在 SQL Server 2005 上运行需要 37 分钟)是现在需要 2 个多小时并使用 16GB 内存,并且tempdb正在填满C:驱动器上的空白空间。这是怎么回事?

两者的服务器规格相同:

  • X5650 @ 2.67GHz (4procs)
  • 16 GB 内存

维护计划包括以下步骤:

  • 步骤 1:检查数据库完整性
  • 第 2 步:重新组织索引
  • 第 3 步:重建索引
  • 第 4 步:收缩数据库

sql-server-2005 sql-server sql-server-2012

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

使用 FileStream 复制

我需要在使用 FileStream 的数据库上设置数据库复制(以实现高可用性)。这是在 SQL Server 2012 标准版上,所以永远在线或对等复制不是一个选项。此外,数据库镜像不适用于 FileStream。

我剩下的唯一选择是事务复制或合并复制。我发现当所有机器都打开时,两种复制类型都可以正常工作,但是如果一台机器关闭会发生什么?

这就是我所拥有的(服务器作为虚拟机在 Microsoft Azure 上运行):

  • 服务器 A 是 DC 服务器
  • 服务器 B 是 SQL Server 2012 标准版和应用程序服务器 (IIS)
  • 服务器 C 是 SQL Server 2012 标准版和应用程序服务器 (IIS)

Microsoft 每月至少执行一次维护,每次最多关闭一台服务器。如何在这些机器上设置复制,以便在一台服务器关闭时实现高可用性?

replication sql-server sql-server-2012 filestream high-availability

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

SQL Server PerfMon:编译/秒 > 批处理请求/秒

我一直在查看我们客户的一个 SQL Server 实例上的各种 PerfMon 指标,试图很好地衡量我们的数据库(或服务器)可以在哪里使用改进。

让我感到困惑的一项衡量标准是两个 PerfMon 指标的比率:编译/秒和批处理请求/秒。

根据这篇文章,“一般的经验法则是编译/秒应为总批处理请求数/秒的 10% 或更少”。

我们的应用程序有一个 Windows 服务,它每小时对数据库调用一次预定计算。就像发条一样,在我的 PerfMon CSV 数据中,我可以看到 Compilations/sec 和 Batch Requests/sec 的峰值。我没想到的是编译数/秒超过了批处理请求/秒。

我正在查看来自 PerfMon 的 15 秒样本,这些样本以我们的计算开始的时间为中心:

在此处输入图片说明

这通常表明什么?这甚至有意义吗?为什么我们要编译更多的语句而不是执行?我错过了什么吗?

performance sql-server perfmon sql-server-2012

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

了解 sys.dm_exec_query_stats execution_count vs creation_time

我刚刚下载了 SQL Server 2012 'Performance Dashboard Reports',并且在解释其中一个结果显示的数据并将其链接回 DMV 时遇到了一些问题sys.dm_exec_query_stats

根据 CPU 报告,我执行最差的查询是已运行约 27K 次的插入语句。

当我使用query_hashfor 查询并将其放入下面的查询中时,我得到 62 个结果,每个结果都相同query_hashquery_plan_hash但具有不同的plan_handle值。

SELECT * FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS dest
WHERE query_hash = 0x1561B563078359C1
Run Code Online (Sandbox Code Playgroud)

根据BOLexecution_count显示:

自上次编译计划以来执行的次数。

creation_time显示

编制计划的时间。

我 99.9% 确定查询每 5 分钟运行一次,但结果集中的每个查询都有creation_time今天早上的计划,但每个查询都execution_count显示约 400。

SQL Server 如何确定这个数字?这些数字是通过某种方式联系起来的plan_hash还是每个人都是独一无二的plan_handle

performance sql-server dmv sql-server-2012 performance-tuning

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

如何创建延迟小于 15 分钟的辅助只读报告数据库

我们有一个 2012 标准版实例,它每 15 分钟将 2 个相关数据库的日志传送到辅助 2012 标准版实例以用于 DR 目的。尽管它提供只读访问权限,但在还原作业运行时,用户每 15 分钟就会自动断开连接(完成还原最多需要 2 分钟)。

在不干扰该过程的情况下,我们希望为报告和开发人员故障排除目的设置一个辅助实例,该实例也将至少每 15 分钟更新一次(报告需要接近实时的数据),但不会涉及定期断开连接,启用与主要不同的安全性(以便开发人员可以从辅助读取但不能从主要读取),并且最好允许创建在主要上不存在的索引(以提高报告性能)。

1)我们怎样才能做到这一点?2) 如何在不升级到企业版的情况下实现这一点?

replication sql-server sql-server-2012

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

在 SQL Server 2012 上从 SQL Server 2008 R2 还原 master 数据库

我有一个过程可以在中央服务器上恢复我的所有备份以进行测试。我最近将此服务器升级到 SQL Server 2012,现在从 SQL Server 2008 R2 恢复主服务器时出现错误。从 SQL Server 2012 和 SQL Server 2005 还原工作正常。尝试恢复到 SQL 2014 时,我也得到了相同的结果。

这是我的恢复声明:

RESTORE DATABASE masttest 
FROM DISK = 'c:\temp\master.bak' 
WITH MOVE 'master' TO 'c:\temp\masttest.mdf', 
MOVE 'mastlog' TO 'c:\temp\masttest.ldf';
Run Code Online (Sandbox Code Playgroud)

这就是结果。数据库最终处于恢复挂起状态。

Processed 400 pages for database 'masttest', file 'master' on file 1.
Processed 3 pages for database 'masttest', file 'mastlog' on file 1.
Converting database 'masttest' from version 661 to the current version 706.
Database 'masttest' running the upgrade step from version 661 …
Run Code Online (Sandbox Code Playgroud)

restore sql-server-2012

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

日期时间列与日期 + 时间列

我正在为一个保存大量日志的系统设计一个表。我们正在查看每秒大约 200 个条目。

我们使用的是 SQL-Server 2012 企业版。

我有一个关于将一Datetime列分成两列的问题,Date并且Time.

我在问题背后的想法。我会说一旦数据存储在数据库中,大多数搜索将基于每天,给我今天/1 月 10 日的所有结果。

现在我仍然需要存储时间。因此,如果我将其存储为datetime,则在执行此查询时,sql 将不得不加载整个datetime字段,然后只查看一半的数据。

因此,通过可能将日期存储在其自己的字段中,它可以只查看它需要的内容。

但另一方面,如果您确实在查询中指定了时间,则它现在必须检查两列的值。

因此,我希望 SQL Gurus 提供关于哪个选项对大型数据库的查询具有更好的性能的输入。

据我所知datetime,可以高度优化并且是比分解更好的解决方案。

sql-server t-sql sql-server-2012 datetime date

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

SQL Server 2012 无法使用定义数量的锁

所以我两天来一直在努力解决这个问题,但我找不到解决方案。我正在运行一个脚本来暂存大量数据。这个脚本需要大约 3500 万个锁才能完成;这意味着需要 3.36GB 的内存可用于锁定。我在配置的值中将锁的数量设置为 3700 万,但是在重新启动后,运行值只允许 16,695,296 个锁。

这相当于大约 14% 的可用内存。由于 SQL Server 2012 可以将 40% 的可用内存用于锁定,我应该有足够的空间,但我没有。我的问题是:为什么 SQL Server 不能利用额外的 26% 的可用锁内存?我读过的一切都说它应该能够。

此外,我确实尝试在动态上运行锁,但由于相同的原因和相同的错误代码也失败了:错误 1204,实例无法获得锁资源。我知道这是服务器配置而不是脚本,因为我运行了完全相同的脚本,在旧服务器(SQL Server 2008)上使用完全相同的数据集没有问题。

向数据库管理员求助;帮助我哦伟大的人!

编辑:这是故障转移群集上的 VM,该 VM 分配了 16 GB 内存。我为 SQL Server 提供了 12GB 的空间,并为主机操作系统留下了 4GB 的空间。

sql-server memory sql-server-2012 locking

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