我正在尝试为我们计划的数据仓库升级编写数据仓库服务器的规范。
当我们在 VMWare 主机上运行虚拟服务器时,我们能够根据需要添加或删除资源。过去,我们根据需要逐步添加 RAM 和 CPU。随着我们需求的增加,我们已经游说获得更多资源。(主要是磁盘和 RAM)。
我们要求更多。他们给我们尽可能少。
然而,最近每当我们谈论资源时,我们都会因为没有首先正确指定机器而受到批评,现在我被告知开发主机已用完,没有更多可用的 RAM。
我们是一个小型的地方政府组织,拥有约 50 名 DW 的常规用户。在正常的日常使用中,它运行良好。我们获得了良好的 mdx 查询性能,并且我们的报告和仪表板速度很快。用户很高兴。
然而,我们的 ETL 过程整夜运行,当同时处理数据集市时,我们开始看到内存压力的迹象。昨晚 SSIS 因“内存不足错误”的警告而失败。
我们现有的 DW 服务器是 Win 2008 R2,带有 4 个 CPU 和 16Gb 的 RAM,运行 SQL 2012 Std。我将最大服务器内存设置为 12GB,为操作系统和服务等留出 4GB。我们现有的 DW 有 3 个数据集市/OLAP 多维数据集,我们正在开发另外 2 个。
+----------+----------+---------------+-----------+---------------+
| Datamart | Files GB | Fact (Rows) | Fact (Mb) | ETL & Process |
| OLAP cube| | | | Time (hours) |
+----------+----------+---------------+-----------+---------------+
| PBI | …Run Code Online (Sandbox Code Playgroud) 背景我最近一直在研究一些相当高的 CXPacket 等待时间,这让我使用 SQL Sentry 非常密切地监视处理器活动。
结果我注意到的一件事是我们在上下文切换中出现了巨大的峰值。下面是一个 5 分钟的示例,但这种模式在一天中非常普遍。
正如你所看到的,它非常有规律地飙升。现在我对此的理解将使我相信这将是 CPU 压力的结果。然而在那段时间里几乎没有超过 60%。
经过一些研究,这让我相信这是超线程的结果。我知道我之前已经阅读过超线程的一些危险。然而,那是很久以前写的。
使长话短说。超线程可能是上下文切换峰值的罪魁祸首吗?上下文切换是否可能对我的并行查询产生负面影响?我应该在我的环境中禁用超线程吗?
更新虽然我的环境中正在发生这种特定的事情,但其核心问题更为普遍。高级上下文切换对并行查询的影响有多大?超线程会导致此类问题吗?
最终,我在互联网上发现的大部分内容都表明超线程和 SQL Server 不是好朋友,但大多数信息都非常过时。
我的系统有很多配置问题,所以我将在这里解决这些问题,以便可以排除它们。我们在操作系统和生物级别都有性能的电源设置。我们的 Maxdop 设置为 8,并行的成本阈值为 25。我们有 32 个逻辑内核和 16 个物理内核。这也是大部分数据仓库加载场景。
我们的管理员使用 Visual Studio 2015 设置了一个全新的 Windows 2012 R2 服务器。当我尝试从 Visual Studio 连接到现有的 sql server 2008 数据库(在 Windows 2008 r2 服务器上运行)时,使用Tools-> Connect to database...,我可以输入所有信息,对话框检索数据库列表,Test Connection工作,但当我点击ok我得到:
必须信任计算机进行委派,并且必须将当前用户帐户配置为允许委派
两台服务器都在同一个域(开发)下,我是它们的本地管理员。我的帐户虽然位于可以访问开发域的不同域上。
有想法该怎么解决这个吗?他们是指消息中的 windows 2012 服务器还是数据库服务器?
顺便提一下,我可以使用相同的 Windows 帐户从另一个 Windows 2008 r2 服务器成功连接。
更新:失败的连接使用 Windows 身份验证。
今天早上发现在 Win2012 上运行的 SQL Server 2012 服务已经关闭。当我以服务器管理员身份登录并尝试访问 SSMS 时,在输入我的凭据后,我收到了“传输”错误。在检查 Windows 服务时,SQL Server 和代理均已停止。我试图启动它们,但出现超时错误。
SQL 事件日志包含以下条目:
服务器无法加载启动 SSL 连接所需的证书。它返回以下错误:0x8009030d。检查证书以确保它们有效。
Windows 事件日志包含以下条目:
日志名称:应用程序
来源:MSSQLSERVER
日期:14/03/2013 09:01:40
说明:无法加载用户指定的证书 [Cert Hash(sha1) "A1CF6EE1C352B7A185950EB400013269759C24BD"]。服务器将不接受连接。您应该验证证书是否已正确安装。请参阅联机丛书中的“配置 SSL 使用的证书”。
说明:TDSSNIClient 初始化失败,错误为 0x80092004,状态代码为 0x80。原因:无法初始化 SSL 支持。找不到对象或属性。
说明:TDSSNIClient 初始化失败,错误为 0x80092004,状态代码为 0x1。原因:初始化因基础结构错误而失败。检查以前的错误。找不到对象或属性。
描述:由于网络库中的内部错误,无法启动网络库。要确定原因,请查看错误日志中紧接此错误之前的错误。
说明:SQL Server 无法生成 FRunCommunicationsManager 线程。检查 SQL Server 错误日志和 Windows 事件日志以获取有关可能的相关问题的信息。
以下过程解决了该问题:
以上仅解决了问题,直到下次重新启动,再次发生。显然,SSL 证书需要 SQL2012 读取的权限,但我不敢一直重启,直到这个问题得到解决,所以我现在通过 RDC 而不是通过 …
我正在为我公司的一个客户寻找一些关于我正在寻找的问题的额外帮助。基本上,关于在每个实例上2-node active/active cluster托管一个实例,我有两个相关的问题2008 R2。
通常在节点#2 上的实例之一位于 RTM。当故障转移到节点 #1 时,SQL Server 服务会超时,但是一旦超时,呃,“超时”,服务实际上可以手动上线。并查看日志有表单错误
'登录失败......原因:服务器处于脚本升级模式......'。
起初我认为这是安装 SP1 失败的结果,但现在我不太确定了。SP1 肯定已安装在两个节点上,而另一个实例(通常在节点 #1 上)位于 SP1。我认为这是遵循在“非活动”节点上安装服务包的建议,进行故障转移并重复该过程。但是,我很难解释安装日志以查看是否只更新了一个实例或两者都更新,其中一个失败。所以我希望有人可以帮助我解决我应该查看的日志文件。
另外,可能是什么意思'script upgrade mode' errors?这确实听起来像是 SP1 升级失败还是另有原因?奇怪的是,问题只发生在一个方向 - 从节点 #2 到节点 #1。当故障恢复到节点 #2 时,SQL Server 服务重新上线,无需任何手动干预。
在我的一台服务器(Win 2012 R2)上,SQL Server 2012 不断受到攻击,SA 帐户每秒被攻击 10 次,使用不同的密码。我没有 SA 帐户,但我仍然想停止这种探测,因为它可能会消耗资源。我一直在手动检查日志并在防火墙级别阻止有问题的 IP,但我仍然想要一个更好的解决方案。SQL Server 使用 IIS 在本地运行以为其网站提供服务,我只需要远程连接到 SQL Server 以使用 SSMS 进行数据库开发,所以起初我想设置一个 VPN,但不确定这是否会与 SSMS 和其他服务一起使用像 FTP。作为临时解决方案,我可以通过禁用端口 1433 来阻止 SQL Server 在防火墙处对外界可见,或其他地方?然后我可以在开发时启用/禁用它,也许只是为了我的 IP。谢谢。
我在 Windows Server 2016 Core 上安装了 SQL Server 2016。在本地,它似乎有效。我可以连接使用SQLCMD.exe并做一些基本的选择,什么不是。
从远程,我无法连接。使用SQLCMD.exe远程计算机上:
sqlcmd -S boldiq_db3
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Named Pipes
Provider: Could not open a connection to SQL Server [53]. .
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login timeout
expired.
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : A network-related
or instance-specific error has occurred while establishing a connection
to SQL Server. Server is not found or not …Run Code Online (Sandbox Code Playgroud) 创建备份时,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)
当然,我为运行备份的用户启用了即时文件初始化。
当 SQL Server 服务启动时,我需要在我的服务器上的 IIS 中回收一个 AppPool。
我采取的路线是有一个启动存储过程,它运行具有 Powershell 作业步骤的代理作业。
我已经从互联网上创建/抓取了一个 Powershell 脚本来回收应用程序池:
# Load IIS module:
Import-Module WebAdministration
# Set a name of the site we want to recycle the pool for:
$site = "Default Web Site"
# Get pool name by the site name:
$pool = (Get-Item "IIS:\Sites\$site"| Select-Object applicationPool).applicationPool
# Recycle the application pool:
Restart-WebAppPool $pool
Run Code Online (Sandbox Code Playgroud)
这适用于操作系统级别,但仅当 Powershell 以管理员身份运行时才有效(即使我在 Admin 组中登录到 Windows 的帐户也是如此)
果然,如果我使用包含上述代码的 Powershell 步骤在代理中创建作业,则在执行时会出现错误
作业步骤在 PowerShell 脚本的第 6 行收到错误。对应的行是'$pool = (Get-Item "IIS:\Sites\$site"| Select-Object applicationPool).applicationPool'。更正脚本并重新安排作业。PowerShell 返回的错误信息是:'无法检索 …
我正在尝试在 Windows 2012 Server 上安装 SQL Server 2012 Express 以进行测试。这台机器是我们公司域的一部分。
在安装过程中,我尝试将域帐户之一用于 SQL Server 数据库引擎服务,但由于以下错误而失败,
“SQL Server 服务帐户登录名或密码无效。请使用 SQL Server 配置管理器更新服务帐户。”
我已经验证了域用户和密码。并且此帐户已启用“作为服务登录”权限。我也已将此用户添加到本地管理员组,但仍然无法进行。
任何建议表示赞赏。
windows-server ×10
sql-server ×6
backup ×1
clustering ×1
compression ×1
failover ×1
performance ×1
powershell ×1
security ×1