Questions tagged «sql-server-2008-r2»

SQL Server 2008 R2(主要版本10.50.xxxx)。请同时用sql-server标记。

3
SQL Server 2008 R2的一般内存要求
我对DBA的工作没有经验,但是我正在尝试为SQL服务器请求更多资源,并希望我可以请一些聪明的人对应该运行的内容进行粗略的估计。我怀疑IT给生产sql服务器的资源分配很低。 硬件软件: 数据库:SQL Server 2008 R2企业数据库 Windows:Windows 2008 r2 Enterprise 64位,可以肯定在VMware上运行。 处理器:Intel(R)Xeon(R)CPU E7-4860 @ 2.27GHz 2.26 GHz(2个处理器) 安装的内存:4GB 数据库文件硬盘:300GB 备份硬盘:150GB 日志硬盘:100GB 应用: 我们有3个主要数据库,它们总共增加了大约170GB的数据,在同一服务器上的Reporting Services数据库(SSRS)可能每天存储10个不同的报告(每个报告平均包含70万条记录)。我们的用户群大约有20个同时用户,其中可能有5个被认为是“资源密集型”的,可以生成数据密集型大型报告。大多数用户通过asp.net网站和报表服务器网站与数据库进行交互。此外,我们的开发人员通过直接远程连接到服务器(最多2个远程连接),在BIDS中广泛使用SSIS。最后,我们有一个相当复杂的数据仓库操作,它可能每天也通过在服务器上运行的SSIS包带来300万条记录。 当前问题: 我们的服务器长期存在超时问题,对网站的响应时间非常糟糕。我怀疑我们拥有的内存量(4GB)可能是一个很大的瓶颈。我们先前对额外内存的请求已被拒绝,我们需要执行更多查询优化来获得共同的响应。虽然我们不是sql专家,也不是(我相信您可以通过我们的设置告诉您)db admin专家,但我想确保的是,如果硬件不是硬件,那么我不会花太多时间试图挤出一点潜在的性能瓶颈。 谢谢大家避免tl!dr!

5
SQL Server中的最大内存设置
我在单个专用服务器上运行SQL Server 2008和基于Web的应用程序,仅提供2Gb内存。 如其他地方所述,SQL Server通常会占用高达98%的物理内存,这似乎减慢了服务器上运行的Web应用程序的速度。 在SSMS的服务器属性中的“内存”下,“最大服务器内存”(以Mb为单位)设置为:2147483647 我的问题是,考虑到我拥有的可用内存量,并且同一台服务器也正在运行Web应用程序,建议在最大服务器内存框中放入的建议数量是多少? 此外,在SQL Server运行时更改此数字是否安全? 感谢您的意见。

1
为什么SQL Server查询不使用超过7MB /秒的磁盘I / O
我有一个固态硬盘,使用IOmeter测试,显示性能超过200MB / s。但是,当我从本地计算机运行任何SQL查询时,Windows资源监视器从不显示高于7MB /秒的磁盘IO。即使对于耗时超过2分钟的查询,这也适用。瓶颈仅来自SSD的7MB /秒是什么? 我在跑: Windows Server 2012标准版 SQL Server 2008 R2 英特尔i7 3820 内存32GB Sandisk SSD

1
SQL Server Snapshot复制是每次完全复制数据还是发出增量?
我正在看两台服务器之间的快照复制。这是我所拥有的: 500GB数据库 每晚约500MB bcp负载 每天约50MB的交易 我正在询问公司中的其他DBA有关使用哪种复制类型的信息。有人告诉我使用快照复制。但是,据我了解并一直在阅读,每晚加载快照后,快照将完全将数据库复制到分发服务器,然后完全覆盖其他服务器。 快照是按增量运行还是每次都完整复制?

2
将已发布的复制数据库的数据库兼容性级别从90更改为100的影响
我有一台SQL Server 2008 R2服务器,其中有一堆已发布的数据库,这些数据库当前在兼容级别90(2005)下运行。 订阅数据库也是SQL Server 2008 R2,但是目标数据库设置为兼容性级别100,并且复制工作正常。 如果更改发布数据库的兼容性级别,它将以任何方式影响复制,还是只是重新初始化所有订阅并重新启动复制的情况? 我怀疑更改已发布的数据库兼容性级别可能会稍微更改复制存储过程的功能,但是我不确定100%。 是这样吗

3
在MS SQL数据库中记录庞大的相互关联的存储过程Web:什么工具或格式?
我希望这是一个比“阅读一千页的书”更短的答案的问题,但是,如果那是真实的情况,那就来问我。 我不是真正的DBA,我是一名软件开发人员,他意识到我们需要DBA,但我工作的商店的DBA为零。但是,我们的MS SQL数据库设计(包括几个核心存储过程)非常混乱。存储过程很慢,我们怀疑它们存在错误,但是我们甚至不知道它们应该如何工作,因此我们不知道如何修复它们。 首先,我决定将所有工作方式记录下来,然后开始单元测试,并建立一组单元测试,以帮助证明存储过程确实有效。他们执行的逻辑是我们应用程序的关键部分,您可以说,这是公司主要产品的“皇冠上的宝石”,并且其工作方式完全没有记载。 我正在寻找专业的DBA可能期望存在的特定技术文档,或者如果需要的话,可能会写自己理解一些相互调用的庞大的存储过程。 记录大型存储过程的通常格式是什么?每个In参数的期望值的描述(即“先决条件”,“后置条件”,即布尔参数,当您打开或关闭它时会发生什么变化,等等?) 通常如何记录它?仅SQL注释?特定于目的的外部工具?外部“文档”?除了MS SQL Management Studio,我们没有其他SQL工具,但是我们想知道是否有一种工具可以更好地理解,记录和测试我们的环境。也许这是问我问题的更好方法。我需要什么工具来解决我们的困境? 我们的目标是能够: 答:使用我们生成的文档或我们添加到环境中的任何工具来帮助理解这些过程应该如何工作,因此我们可以继续为存储过程创建单元测试范围。 B.向客户端应用程序开发人员展示如何正确调用这些复杂的存储过程。 C.对我们的存储过程进行单元测试。

1
为什么死锁图上有无害条目?
我正在尝试学习如何分析SQL Server 2008的死锁图,并且发现了大量带有空<victim-list>节点的条目。我不明白这些条目代表什么:如果没有受害者,我如何确定导致死锁的waitresource?这些条目是什么意思? 这是我看到的条目的快速示例: <deadlock-list> <deadlock> <victim-list /> <process-list> <process id="processd2b6508" taskpriority="0" logused="10000" waittime="31" schedulerid="63" kpid="9104" status="suspended" spid="69" sbid="0" ecid="184" priority="0" trancount="0" lastbatchstarted="2012-07-30T01:10:45.550" lastbatchcompleted="2012-07-30T01:10:45.550" clientapp=".Net SqlClient Data Provider" hostname="XXXXXXX" hostpid="3648" isolationlevel="read committed (2)" xactid="30461033" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056"> <executionStack> <frame procname="" line="1" sqlhandle="0x020000002340c50225c17d0eec9bf7c51129348edffd1c70" /> <!--About 2 more frame tags... --> …

2
从一个主作业顺序调用多个SQL Server Agent作业的好方法?
我有几个应顺序运行的SQL Server代理作业。为使应执行的作业保持良好的概览,我创建了一个主作业,该主作业通过调用来调用其他作业EXEC msdb.dbo.sp_start_job N'TEST1'。在sp_start_job瞬间完成(作业步骤1),但我想我的主要工作要等到工作TEST1已经调用下一个工作之前完成。 因此,我编写了这个小脚本,该脚本在作业被调用后立即开始执行(作业步骤2),并迫使主作业等待子作业完成: WHILE 1 = 1 BEGIN WAITFOR DELAY '00:05:00.000'; SELECT * INTO #jobs FROM OPENROWSET('SQLNCLI', 'Server=TESTSERVER;Trusted_Connection=yes;', 'EXEC msdb.dbo.sp_help_job @job_name = N''TEST1'', @execution_status = 0, @job_aspect = N''JOB'''); IF NOT (EXISTS (SELECT top 1 * FROM #jobs)) BEGIN BREAK END; DROP TABLE #jobs; END; 这足够好用。但是我觉得WHILE 1 = …


2
有没有一种基于集合的方式来加载/读取带有HierarchyId的树枝
我正在玩HierarchyId,但还没有想出一种基于集合的方法来执行以下操作: 一次插入所有子树 一次检索所有子树 这个问题与我的上一个问题有关,我怀疑用HierarchyId完成这两项任务的唯一方法是一次一个节点或一个级别。如果我使用的是物化路径,则可以通过一个(且不重要的)基于集合的命令轻松地完成这两个动作。 我想念什么? 编辑:我也错过了一种移动子树的方法,但我从Mikael Eriksson的评论中学到了

2
将bak文件还原为较小的mdf和ldf数据库文件
我有一个遗留下来的数据库,该数据库的设计缺乏噩梦,在这里我将不再赘述,但是服务器上的文件(相对)巨大。我有: MyDatabase.mdf:24.8GB MyDatabase.ldf:114.6GB 每天晚上,该数据库都会备份到.bak文件中,并运送到我们的报告服务器上,并在其中进行还原。.bak文件要小得多,只有1.8GB。 但是,当我尝试在报告服务器上还原它时,由于空间不足,它失败了。服务器上大约有100GB的可用空间,它正试图吞噬原始服务器上所用文件的全部139.4GB。除非我对压缩的认识完全错误,否则我非常有信心1.8GB文件实际上不会扩展7400%。 我的问题:有什么方法可以告诉SQL Server还原此备份文件而无需预先保留该空间?我不在乎任何日志;我只需要那里的数据。我从开发和架构的角度理解数据库,但是我绝不是任何类型的DBA。 这是在SQL Server 2008 R2上。感谢您的帮助或建议。

5
如何恢复SQL Server 2008 R2性能计数器?
我正在Windows 7 x64上运行SQL Server 2008 R2 Developer,作为默认实例。由于某种原因,SQL Server的性能计数器似乎已消失。SELECT * FROM sys.dm_os_performance_counters返回零行。 我试过跑步lodctr /T:perf-MSSQLSERVERsqlctr.ini。尽管它顺利完成,但是即使重新启动Remote Registry服务之后,它也无法解决任何问题。实际上,perfmon现在缺少这些计数器。unlodctr MSSQLSERVER仍然说没有安装计数器,但是lodctr /Q:MSSQLSERVER说它们已经存在并启用了。常规Windows和.NET计数器工作正常。 在Windows错误日志中,我看到错误8317: 无法查询与注册表项“ HKLM \ SYSTEM \ CurrentControlSet \ Services \ MSSQLSERVER \ Performance”关联的值“ First Counter”。SQL Server性能计数器被禁用。 我怀疑问题可能是由安装失败的SQL 2012 RC0触发的。除了重新安装SQL Server 2008 R2以外,如何恢复的任何建议?

2
如何创建在镜像状态更改时运行作业/过程的事件通知
我按此顺序问这个问题。是否可以使用T-SQL通过TCP发送字符串? 雷木斯·鲁萨努(Remus Rusanu)暴露了似乎是解决我问题的最佳解决方案,但是...我还不成熟,无法理解和理解他所说的一切。 到目前为止,我认为我需要为DATABASE_MIRRORING_STATE_CHANGE创建通知事件,对吗? 我如何创建此事件通知,使其触发时在表中插入一行,该行存储时间戳和来自通知的ID。 到目前为止,我为每个ID设置了一个警报,每个警报都运行这样的工作(此示例的ID为1): DECLARE @state AS varchar(50); SELECT @state = mirroring_state_desc FROM SYS.database_mirroring WHERE mirroring_guid IS NOT NULL; IF (@state IS null) SET @state = ' '; INSERT INTO MirroringAlerts (DateTime, alertID, alertDesc, Sync, alertCreator) values (SYSDATETIME(), 1, 'Principal synchronized with W ', @state, @@SERVERNAME) 基本上,我在此数据库中创建一个内部日志: CREATE …

3
在SSMS中保存连接?
是否可以在SSMS(2008 r2)中保存某种会话或配置文件,以便在打开SSMS时打开与已保存的数据库服务器列表的连接? 因此,例如,我经常打开SSMS,然后连接到SQL Server NY-DB01,NY-DB02等。我是否可以使用某种快捷方式来一次性打开所有这些?

2
为了最大程度地提高数据库性能,应在通过SSIS将大量数据加载到SQL Server 2008之后运行哪些命令
我写了一个SSIS包,将测试数据加载到一个空数据库中。一些表非常大(约7亿行)。SSIS软件包完成后,是否应该运行任何命令(作为学徒DBA!)以最大化数据库的性能? 例如,我执行了EXEC sp_updatestats但是它报告没有索引需要更新。 一旦加载了大量数据,是否有一系列事情要做?或者SQL Server 2008会为您完成所有这些工作吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.