在过去的几年中,我一直在我的IIS安装的同一台机器上运行我的SQL Server 2008数据库。 我现在已经确信将它们分开,并将有一个专用的SQL框。 (1)我打算使用SSMS上下文菜单中的“Copy Database …”function复制数据库。 我认为这是最好的方法? (2)一旦我有了新的机器,我的旧机器上的IIS应用程序连接到新的服务器,最好的方法(在安全性和速度方面)是什么? 即,我的连接string应该是什么样子? 我应该如何validation我的IIS框上的Web用户访问新的SQL服务器? 使用Windows或SQL身份validation? (3)是否有任何重要的configuration选项需要在我的新服务器上设置,以优化SQL Server 2008的性能,现在它将在专用的盒子上运行? 任何意见,将不胜感激。
我有一个3节点的集群。 所有节点都是Cluster01的一部分,应该是A / A / P模式。 通常,SQL Server的instanceA和instanceB将分别驻留在NodeA和NodeB上。 Windows群集资源将驻留在NodeA上,而NodeC将成为被动节点。 目前,我们的configuration如下: NodeA具有包含Quorum,Windows Cluster IP和HostName以及MSDTC的群集资源组 NodeB具有SQL Server的instanceA,拥有自己的IP和HostName NodeC拥有自己的IP和HostName的SQL Server实例B. 我的问题是,虽然我知道通常故障转移会导致一些宕机,因为我们的SQL Server实例有自己的IP和HostName和用户连接到这些,将仲裁Quorum,Windows IP /主机和MSDTC中断SQL服务以任何方式? 我已经检查过没有Windows集群的依赖关系,但有点像说我拔出插件将Windows仍然运行? 提前致谢!
根据Mark Russinovich的Windows Internals 5th Edition,Windows在x86和x64体系结构上使用(小)4 KB大小的页面来pipe理内存。 即使我找不到原因,直觉上我会认为SQL Server将使用相同的大小为自己的页面,而是它使用8 KB的页面大小。 我已经通过文档和博客文章进行了研究,但是我无法find这种行为的解释。 我所能find的就是这样。 我绝对不是认为这是好是坏(我无论如何也没有这样做),我只是好奇,想学习最终决定的动机。 为SQL Serverselect8 KB页面大小的技术原因是什么? 为什么它是一个很好的页面大小? 或者,也许这只是它的Sybase系列的inheritance? 这个决定如何影响SQL Server的性能(意味着它如何与系统内存和磁盘内部交互)? 我的第二个想法是与存储子系统有关,但我仍然不确定。 (NTFS的默认簇大小为4KB)
我们已经安装了带有IDP的新Juniper SRX防火墙,因此防火墙正在检查可疑活动的stream量。 我遇到了3个“误报”的SQL注入攻击报告,这些报告只是真正的用法: 使用mDaemon的webmail,试图转发消息被认为是SQL注入尝试 在一个.NET的Web应用程序中,input一个文本到文本区的负载,点击提交触发SQL注入。 这句话似乎是一句话 – 关于从南威尔士一路前往贝辛斯托克的工程师。 删除那句话,它工作得很好。 在一个经典的ASP应用程序中,试图保存一个报表(在幕后页面读取所有选中的checkbox并将其插入到数据库表中)。 导致错误警报的关键字是“Goodmans” 有了上面的第二个问题,如果我把文本内容粘贴到一个不同的web应用程序中(我只是简单地将这些内容复制到一个不同的,不相关的经典asp窗体与不同的对象),根本没有问题。 有了第三个问题,应用程序就可以正常工作了 – 这就是我们发现的一组特定的选项,导致防火墙放弃连接。 我能解决mDaemon问题的唯一方法就是将服务器带出IDP策略。 我将向瞻博networking提交支持请求以帮助find解决方法,但是其他人如何处理误报? 还有什么可以做的吗? 我担心还有其他的条件会触发更多,这将是一个无休止的演习。 除非我们可能不知道许多误报,因为用户认为网站已经closures,只是放弃(或者不报告他们做了什么/不能再次复制)。 其他信息在第三个问题的情况下,造成这个问题的不仅仅是“goodmans” – 它更为普遍!
根据@esh关于在EC2内部使用外部弹性IP DNS名称的优秀文章 ,我正在更改我的Web服务器的连接string,以通过弹性IP DNS名称连接到数据库服务器(MSSQL实例)比弹性IP地址本身。 我发现的问题是,我可以使用弹性IP地址连接到SQL实例,但是当我使用弹性IP DNS名称连接时,出现以下连接错误: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open […]
我正在运行MSSQL Server 2012 RC 0。 我正在使用pipe理工作室来创build数据库的备份,然后在SAME服务器上恢复它,但使用不同的数据库名称。 我可以创build备份正常,但是当我去恢复备份时,我input了我希望创build的数据库的新名称(不存在)。 然后我得到一个错误说: “恢复数据库”newdatabasename“失败…….由于数据库正在使用,无法获得独占访问权限。 我知道互联网上有很多关于这个的东西,但它更适合于通过同一个数据库进行恢复。 它指的是哪个数据库? 旧的? 我不明白为什么它会引用旧的数据库,因为我从完整的备份文件恢复。 新的数据库甚至还没有创build,所以我也不明白为什么它会指那一个。 任何帮助感激!
安装Server 2012之后,需要安装Microsoft SQL Server吗? 我一直在做一些清理,并注意到我有一个SQL Server安装的完整列表。 当我安装服务器2012年,我点击升级选项,但以前的版本仍然存在。 我猜他们是需要的,但我想确定。
我们正在Server 2008 R2上运行PHP 5.4应用程序。 我们希望使用Windows身份validation连接到单独的服务器上的SQL Server 2008数据库(必须是Windows身份validation – 数据库pipe理员不会让我们连接任何其他方式)。 我已经下载了PHP的SQL Server驱动程序并安装了它们。 IISconfiguration为Windows身份validation,并且匿名身份validation已被禁用。 $ _SERVER ['AUTH_USER']报告我们当前login的Windows帐户。 在php.ini中,我们设置了fastcgi.impersonate = 1。 当我们使用Microsoft的以下代码设置连接时: $serverName = "sqlserver\sqlserver"; $connectionInfo = array( "Database"=>"some_db"); /* Connect using Windows Authentication. */ $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn === false ) { echo "Unable to connect.</br>"; die( print_r( sqlsrv_errors(), true)); } 我们遇到以下错误消息: Unable to […]
我在我的PHP脚本中有一些疯狂的SQL查询,这很需要一些优化。 然而,问题不在于如何优化它们。 这些查询有很多“连接”和一些奇怪的“按顺序排列”,并且针对具有几万条logging的表进行。 lots_of_joins + crazy_order_by事物使他们需要“复制到tmp表”步骤。 现在奇怪的是,同样的查询有时会跑得快(不到一秒钟),有时需要几十年(几十秒)。 在这两种情况下,“解释”和configuration文件显示“复制到tmp表”步骤。 当查询花费时间时,99%的时间花在“复制到tmp表”阶段。 奇怪的是,在那个时候,mysql几乎消耗了100%的CPU。 所以,我知道tmp表有时会保存在内存中,有时会写入磁盘(取决于当前内存的可用性)。 因此,这完全可以解释为什么相同的查询有时可能很快,有时会花费很长时间。 但是,有两件事我不明白。 如果将临时表写入磁盘的瓶颈,这应该意味着在I / O上花费了大量的时间,但是在此期间的CPU负载平均值应该相对较低,肯定远远低于100%。 做这么多的I / O时,CPU如何忙? 我在my.cnf中增加了: max_heap_table_size = 1024M tmp_table_size = 1024M (我认为默认值是16M) 而且我真的不相信tmp表需要的是更多的内存。 据我所知,一个tmp表被写入到磁盘而不是内存:a-如果查询和表需要它,因为它们不满足某些标准b-如果它超过了max_heap_table_size和tmp_table_size之间的最小值 如果(a)是这种情况,那么它总会发生,而不是不时。 另一方面,(b)似乎不太可能,因为我已经增加了上述参数,没有任何明显的改变。 所需表格的大小在相同查询的出版物中应该不会有很大的变化(数据几乎相同)。 所以如果在增加内存大小之前偶尔会发生(这意味着所需的tmp表的大小只是在最大值附近),那么在这种剧烈增加之后,反常行为应该完全消失。 所以我的问题基本上是: 创build磁盘表真的是唯一的原因,可以使复制到tmp表的步骤需要很长时间? (或者,即使它是在记忆中完成,也可能需要很长时间?如果是这样,为什么?为什么随机?) 如果是,那么 怎么可能使用大量的CPU? 为什么即使不大于min(tmp_table_size,max_heap_table_size),tmp表也可以写入磁盘? 我真的不认为示例查询和configuration文件是必要的,但我可以发布,如果他们是。
我希望这是一个容易解决和监督我的一部分。 我需要能够从远程机器运行SQL cmdlet。 我已经安装了SQLServer®2008 R2的Microsoft®Windows PowerShell扩展(以及其他要求),但是当我尝试添加pssnapin时,收到此计算机上未安装pipe理单元的错误。 Add-PSSnapin:此计算机上未安装Windows PowerShellpipe理单元“SqlServerCmdletSnapin100”。 任何帮助? 谢谢