标签: sql-server-2012

Service Broker 和 AlwaysOn 可用性组:奇怪的传输队列行为

我也在我的博客上发布了这个问题:http : //www.sqldiablo.com/2012/04/15/service-broker-alwayson-availability-groups-odd-transmission-queue-behavior/

在过去的几个月里,我一直在从事一个项目,该项目将利用 Service Broker 和 AlwaysOn 可用性组来实现我工作的公司的一些 HA 和 DR 目标(更多信息:)http://www.sqldiablo.com/service-broker-replication/。就在最近,我能够在我的开发实验室中实施完整的解决方案,并将我们网站的一个实例指向它。当我们在我们的数据库和网站中解决一些问题以使两者与我的 Service Broker Replication 项目正常工作时,我开始注意到 Service Broker 与 AlwaysOn Availability Groups 一起使用时的一些奇怪行为,我想在博客中介绍它尝试看看其他人是否已经看到了这个问题,并且可能知道如何解决它。

设置:

我有一台运行 6 个 Windows Server 2008 R2 VM (BTDevSQLVM1-BTDevSQLVM6) 的 Hyper-V 主机。VM 分组为具有节点和文件共享仲裁的 2 节点 WSFC。我已经在每个 VM 上安装了独立的 SQL 2012 Developer Edition 实例,并在每个集群(SBReplDistrib、SBRepl1 和 SBRepl2)上创建了一个带有侦听器的可用性组。

出于本博文的目的,我将重点介绍 SBRepl1 和 SBReplDistrib 之间的通信。下图显示了对话每一方的 Service Broker 对象:

(我是新手,还不能发布图片,所以请在上面的 URL 上查看我的博客以获取图片)

Service Broker 端点和路由是根据这篇 MSDN 文章设置的。MSDB 中的 SBRepl_Receive 路由用于本地服务器的服务(SBReplDistrib 上的//SBReplDistrib/SBRepl,SBRepl1 上的//SBRepl1/SBRepl),并指向本地实例。SBRepl1 上的 SBRepl_Send 路由将服务 …

sql-server service-broker sql-server-2012 availability-groups

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

与全新安装相比,使用 SQL 2012 升级的缺点是什么?

我目前有 SQL Server 2008 R2,我想将其升级到 SQL 2012。我可以卸载 SQL 2008 并安装 SQL Server 的新副本或运行升级。升级工作较少,但我想知道是否有缺点。

我已经尝试过一次升级。遇到问题并且很难同时删除 SQL 2008 和 SQL 2012,所以我可以重新开始。升级成功后,我看到在添加/删除程序中,SQL 2008 R2 和 SQL 2012 之后仍然存在。这可能会使未来的升级/卸载变得复杂。

除此之外,与全新安装相比,使用升级还有其他缺点吗?

sql-server installation upgrade sql-server-2012

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

将 SQL Server 2012 降级到较低版本

我有一台安装了 SQL Server 2012 企业版的 Win2008 R2 服务器。因为我的生产服务器将是标准版,有没有办法将企业版降级为标准版?我已经在企业实例中配置了数据库和用户,并安装和配置了分析和本机报告服务。

这种降级是可能的,还是我正在考虑重新安装?除了在卸载之前分离然后附加到标准实例中之外,我需要对我的数据库做些什么特别的事情吗?

sql-server sql-server-2012

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

动态维度安全

我在 SSAS 2012 中有一个大约有 30 个维度的多维数据集,其中一个是Company.

Company维度包含公司列表,多维数据集中有数百家公司。我们的安全模型要求用户只能Company看到分配给他们的那些值。

在我们的SQL Server环境中,我们控制通过一系列的功能,此访问JOIN中编VIEW秒。这些函数返回一个列出所有Company值的表,用于过滤结果。

例如:

CREATE VIEW dbo.FakeView
AS
SELECT d.*
FROM FunctionToGetAccess(SYSTEM_USER) f
INNER JOIN DataTable d
    ON d.CompanyID = f.CompanyID
Run Code Online (Sandbox Code Playgroud)

有没有办法将这个逻辑或类似的逻辑移植到 SSAS 中的维度级别安全性?

一些注意事项:

  • 立方体将在一夜之间重建
  • 安全性不必每小时更新一次,但应在整夜的多维数据集处理过程中重新处理
  • 我强烈希望不必将用户列表和允许的客户端具体化到表或维度中

security sql-server ssas sql-server-2012 dimension

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

CDC 或更改跟踪是否可以针对只读辅助服务器?

我们将部署带有只读辅助服务器的 SQL Server 2012 可用性组,并希望在使用 CDC 或更改跟踪的同时针对辅助服务器执行 SSIS 提取(目前尚未决定使用哪个)。

我希望 CDC 和 CT 的底层实现将允许它们的功能存在并在辅助设备上使用,但尚未能够找到任何以这种方式或另一种方式说明的内容。

有没有人有任何经验(以及更好的官方文档)指出此解决方案的可行性(或不可行)?

我们现在倾向于使用变更跟踪,因为我们对历史数据没有硬性要求,但我希望能够识别任一实施的任何问题/风险。

sql-server sql-server-2012 availability-groups change-tracking change-data-capture

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

去集群 SQL Server 2012

有什么方法可以对使用“新 SQL Server 群集安装”选项安装的 SQL Server 2012 实例“解除群集”?我们在集群服务的故障转移部分遇到了问题,由于我们没有实现集群(实际上没有必要),我们希望将其转换为独立安装。删除 Windows 集群部分只会让 SQL 随之下降。感谢所有帮助和洞察力,谢谢!

sql-server clustering sql-server-2012

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

从 LocalDB 解决方案到 Enterprise 实例的迁移/部署路径是什么?

鉴于现存定义的SQL Server 2012的的LocalDB作为

SqlLocalDB 是 SQL Server 2012(和未来版本)的本地、低开销数据库引擎,它允许开发人员专注于开发而不是实例配置或安全。

我很好奇从 LocalDB 开发到生产实例的路径会是什么样子,尤其是考虑到用户实例(大约 SQL 2005)的问题,并且试图将其中一个实例提升到生产和开发人员会忘记哪个实例他们实际上是在努力推广。对StackOverflow的快速搜索以各种形式暴露了此类问题。在这种情况下,LocalDB 是否改进/简化了部署?

sql-server-2012 sql-server-localdb

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

可用性组的恢复时间影响

我们进行了不同类型的基本测试,并且 AlwaysOn 通过了许多测试。我们终于对 AlwaysOn 进行了大量的写测试,它给出了令人惊讶的结果。

实际的测试详细信息在这里,目标是查看 AlwaysOn 可用性组是否可以容纳高写入负载。

  1. 我有两个虚拟机,每个虚拟机都运行在 8 个内核和 17GB 的 RAM 上,分配给 SQL Server。

  2. 我们编写了一个脚本来生成相当不错的写 I/O(在 20 个线程中)。

  3. 每个线程基本上将 24 MB 的数据插入到一个表中,然后在无限循环中删除。

在测试运行的 15 分钟内,自动故障转移的恢复时间估计达到了 12 分钟,这是非常糟糕的。我们尝试了故障转移来确认是否真的需要 12 分钟,大约需要 5 分钟,这仍然太高了。此外,如果我们继续测试三个小时的恢复时间,ETA 几乎是 3 小时,并且在故障转移时需要几个小时才能恢复(显然,如果是集群故障转移,情况就不应该如此,因为所有事务都是已提交的事务)。

所以有几件事..

很明显,synchronous次要副本无法跟上主要正在生成的负载(即使两台机器的配置相同)。这样做的副作用是主日志将继续增长(即使我们进行日志备份,它也无法截断日志)。

我们知道辅助节点每 4 个 CPU 核心使用一个线程来执行重做,这看起来是一个明显的限制。如果主节点运行 100 个线程来生成负载,那么辅助节点无论如何都不能使用那么多线程。

此外,主要在内存中执行其所有事务,并将实际数据文件写入到检查点。但是,secondary 似乎必须从物理日志驱动器读取所有事务并重做。辅助日志池应该使这个过程更快?但是在这种情况下它做得不好。

最后向 AlwaysOn 专家提问:

  1. 有谁知道这个redo过程究竟是如何发生的?
    • 它被缓存了吗?
    • 是否涉及缓冲池?
  2. 二级是否使用日志池来缓存日志条目以进行重做?

  3. 日志池的大小是多少?它可以增长到最大可用内存吗?

  4. 当重做发生时,重做线程将页面读取到缓冲池并像正常事务一样维护它们?

  5. 如果二级不能跟上怎么来AlwaysOn文章说恢复时间是几秒?

这使得可用性组的高可用性部分存在问题,因为这些恢复时间是不可持续的。


[由提问者编辑]澄清,由于人们似乎认为这已得到回答,因此主服务器上的事务确实得到了确认(即日志已硬化),因为辅助服务器的状态始终是“同步的”。所以日志的硬化不是问题。因此,在故障转移时永远需要重做过程。这意味着对于生成日志 > 重做线程容量的任何负载,AlwaysOn 将始终比没有它需要更长的时间来恢复。

sql-server sql-server-2012 high-availability availability-groups

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

过程缓存(计划缓存)大小

我正在开发一个包含许多复杂的 SQL 查询的应用程序。我想尽可能长时间地将查询计划保留在过程缓存中。为了防止从过程缓存中丢弃查询计划(由于内存压力),我想为过程缓存分配足够的内存。根据这个只有10%在4GB-64GB范围“看得见的目标”存储器被用于过程缓存; 我希望这个比率更高。

有没有办法控制过程缓存的大小?SQL Server 2008 或 2012;也许一些企业版功能?

此外,如果我明确设置了 min. SQL Server 的内存?

(我知道KEEP PLAN / KEEPFIXED PLAN提示;我也知道通过临时查询准备语句的优势,所以请不要推荐这些可能性。我特别想知道控制过程缓存尺寸。)

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

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

sql_slovak_cp1250_ci_as 与 Slovak_CI_AS

有人可以向我解释 collat​​ionsql_slovak_cp1250_ci_as与collat​​ion 之间的区别Slovak_CI_AS吗?

我有一个 db 设置为sql_slovak_cp1250_ci_as并且共享主机仅支持Slovak_CI_AS. 应该不会有问题吧?

非常感谢。

sql-server collation sql-server-2012

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