2013 年 12 月,一个名为 user1 的用户在 SQL 2008 上创建了一个数据库。今天,我们将从服务器中删除该用户(/所有者)。那么数据库的所有者属性将显示什么?
sql-server-2005 sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012
在我的应用程序中,我们的更新很少。大多数数据被删除和插入。
我的问题是,这将如何影响性能?
我们使用的是 SQL Server 2012。
请发表您的经验。
提前致谢!!
昨天我们将一个 SQL Server 2005 数据库迁移到了 SQL Server 2012。我们做了一个完整备份并在新服务器上恢复了它。
现在的问题是 SQL Server 2012 上的数据库比使用 SQL Server 2005 的 Windows 2003 服务器慢得多。更令人担忧的是,完全相同的维护计划(在 SQL Server 2005 上运行需要 37 分钟)是现在需要 2 个多小时并使用 16GB 内存,并且tempdb正在填满C:驱动器上的空白空间。这是怎么回事?
两者的服务器规格相同:
维护计划包括以下步骤:
我需要在使用 FileStream 的数据库上设置数据库复制(以实现高可用性)。这是在 SQL Server 2012 标准版上,所以永远在线或对等复制不是一个选项。此外,数据库镜像不适用于 FileStream。
我剩下的唯一选择是事务复制或合并复制。我发现当所有机器都打开时,两种复制类型都可以正常工作,但是如果一台机器关闭会发生什么?
这就是我所拥有的(服务器作为虚拟机在 Microsoft Azure 上运行):
Microsoft 每月至少执行一次维护,每次最多关闭一台服务器。如何在这些机器上设置复制,以便在一台服务器关闭时实现高可用性?
replication sql-server sql-server-2012 filestream high-availability
我一直在查看我们客户的一个 SQL Server 实例上的各种 PerfMon 指标,试图很好地衡量我们的数据库(或服务器)可以在哪里使用改进。
让我感到困惑的一项衡量标准是两个 PerfMon 指标的比率:编译/秒和批处理请求/秒。
根据这篇文章,“一般的经验法则是编译/秒应为总批处理请求数/秒的 10% 或更少”。
我们的应用程序有一个 Windows 服务,它每小时对数据库调用一次预定计算。就像发条一样,在我的 PerfMon CSV 数据中,我可以看到 Compilations/sec 和 Batch Requests/sec 的峰值。我没想到的是编译数/秒超过了批处理请求/秒。
我正在查看来自 PerfMon 的 15 秒样本,这些样本以我们的计算开始的时间为中心:

这通常表明什么?这甚至有意义吗?为什么我们要编译更多的语句而不是执行?我错过了什么吗?
我刚刚下载了 SQL Server 2012 'Performance Dashboard Reports',并且在解释其中一个结果显示的数据并将其链接回 DMV 时遇到了一些问题sys.dm_exec_query_stats。
根据 CPU 报告,我执行最差的查询是已运行约 27K 次的插入语句。
当我使用query_hashfor 查询并将其放入下面的查询中时,我得到 62 个结果,每个结果都相同query_hash,query_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)
根据BOL,execution_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
我们有一个 2012 标准版实例,它每 15 分钟将 2 个相关数据库的日志传送到辅助 2012 标准版实例以用于 DR 目的。尽管它提供只读访问权限,但在还原作业运行时,用户每 15 分钟就会自动断开连接(完成还原最多需要 2 分钟)。
在不干扰该过程的情况下,我们希望为报告和开发人员故障排除目的设置一个辅助实例,该实例也将至少每 15 分钟更新一次(报告需要接近实时的数据),但不会涉及定期断开连接,启用与主要不同的安全性(以便开发人员可以从辅助读取但不能从主要读取),并且最好允许创建在主要上不存在的索引(以提高报告性能)。
1)我们怎样才能做到这一点?2) 如何在不升级到企业版的情况下实现这一点?
我有一个过程可以在中央服务器上恢复我的所有备份以进行测试。我最近将此服务器升级到 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) 我正在为一个保存大量日志的系统设计一个表。我们正在查看每秒大约 200 个条目。
我们使用的是 SQL-Server 2012 企业版。
我有一个关于将一Datetime列分成两列的问题,Date并且Time.
我在问题背后的想法。我会说一旦数据存储在数据库中,大多数搜索将基于每天,给我今天/1 月 10 日的所有结果。
现在我仍然需要存储时间。因此,如果我将其存储为datetime,则在执行此查询时,sql 将不得不加载整个datetime字段,然后只查看一半的数据。
因此,通过可能将日期存储在其自己的字段中,它可以只查看它需要的内容。
但另一方面,如果您确实在查询中指定了时间,则它现在必须检查两列的值。
因此,我希望 SQL Gurus 提供关于哪个选项对大型数据库的查询具有更好的性能的输入。
据我所知datetime,可以高度优化并且是比分解更好的解决方案。
所以我两天来一直在努力解决这个问题,但我找不到解决方案。我正在运行一个脚本来暂存大量数据。这个脚本需要大约 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-2012 ×10
sql-server ×9
performance ×3
replication ×2
t-sql ×2
date ×1
datetime ×1
dmv ×1
filestream ×1
locking ×1
memory ×1
perfmon ×1
restore ×1