Questions tagged «sql-server»

所有版本的Microsoft SQL Server(非MySQL)。还请添加特定于版本的标记,例如sql-server-2016,因为它通常与问题相关。

1
为什么MSDB数据库值得信赖?
TRUSTWORTHY如果您不小心,该设置可能会非常危险,除特殊情况外,建议保持关闭状态。但是默认情况下,MSDB数据库TRUSTWORHTY设置ON默认。我很好奇为什么? 我已经在BOL中阅读了此条目 注意默认情况下,MSDB数据库的TRUSTWORTHY设置设置为ON。使用默认值更改此设置可能会导致使用MSDB数据库的SQL Server组件出现意外行为。 但是我对细节感到好奇。为什么MSDB需要专门TRUSTWORTHY打开电源?它使用什么功能?

1
SQL Server-导出没有主键的大表
我需要在SQL Server和MySQL之间没有主键的情况下同步约5亿行的大型表。该表仅具有聚集的复合非唯一索引。 我确实在服务器之间建立了ODBC连接,但是约800万行的导入需要大约45分钟的时间,因此,我认为较大的单次导入将是不合理的,因为在任何时候都可能发生中断。我无法更改现有的表结构,可以添加其他表。进一步阅读后,对于大表,则不可以选择offset / fetch。由于我没有唯一键,因此“选择...在...和...之间的x”不是一个选项。 如何批量导出保证包含所有行的表?我的问题是,由于集群键不是唯一的,因此其排序后的顺序不能保证物理行在连续查询之间具有相同的顺序,而在所有列之后的排序将花费很长时间。以及您如何建议通过ODBC或CSV文件迁移批次?

1
SQL Server代理启动自我终止
在过去的一个月中,我的一台服务器遇到了SQL Server代理问题。它会自动停止并显示以下错误,该错误随机发生: SQL代理输出文件 [097]检测到内存泄漏[204字节] 在文件e:\ sql9_sp2_t \ sql \ komodo \ src \ core \ sqlagent \ src \ alerter.cpp的第403行捕获到异常5。SQLServerAgent启动自我终止 我用谷歌搜索了这个错误,但是没有得到太多的信息。SQL Server和代理都使用相同的域帐户运行。但是,问题仅在于SQL Server代理服务。 我也无法在SQL Server配置管理器中看到SQL Server代理服务。我检查了SQL Server错误日志和Windows Event Viewer日志,但没有看到任何可疑活动。 我的内存设置配置正确。该服务器具有32GB RAM,并且SQL Server已分配为使用最大26GB的内存。 系统细节: SQL Server 2012 SP2标准版11.0.5058 64位 Windows Server 2008 R2 Ent Edition 64位 专用于SQL Server(服务器上没有其他运行的应用程序) 几个月前,服务器已从SQL Server 2005 …

2
CPU调度程序离线
我登录到新的客户端系统并运行sp_blitz以查看发生了什么变化。它向我报告说,“ CPU Schedulers Offline ”对我来说是新的。 由于亲缘关系屏蔽或许可问题,某些CPU内核不可用于SQL Server。 足够公平,我运行基本查询 SELECT DOS.is_online , DOS.status , DOS.* FROM sys.dm_os_schedulers AS DOS ORDER BY 1; 那报告我有8设置为VISIBLE OFFLINE,43设置为在线。据我所知,此客户端上没有人会故意设置任何CPU亲缘关系。 我决定看看是否可以调试它。当我查看属性窗口时,我看到40个可用处理器,但没有一个设置为具有亲和力。 为什么dm_os_schedulers中有40个条目显示is_online为true的43个条目,这似乎也很奇怪。8个离线服务器的cpu_id为32到39。 sys.configurations似乎同意未明确启用亲和力 name value value_in_use description affinity I/O mask 0 0 affinity I/O mask affinity mask 0 0 affinity mask affinity64 I/O mask 0 0 affinity64 …

3
当您的Always On群集丢失仲裁时该怎么办?
我正在查看我们公司的灾难恢复程序,当我在网上寻找“始终在线群集”丢失仲裁的解决方案时,可以进行比较。在搜寻结果的第一篇SE帖子之前,我在Google搜索结果中浏览了三页,该主题仅涉及群集丢失,仲裁丢失等主题。 尽管每个人都认为失败的仲裁人数是有害的,并且有一些建议可以降低这种潜力,但仍然有可能发生。我正在寻找一个很好的同行评审答案,以解决从Always On群集丢失仲裁中恢复的最佳方法。

2
可用性组侦听器
我正在查看AlwaysOn可用性组。我越看越多,可用性侦听器组似乎是单点故障。监听器实际在哪里运行?一个单独的服务器,即主要的SQL服务器,都是吗? 假设我在第二个数据中心拥有整个应用程序堆栈。如何配置侦听器,使它们将在两个站点上运行,并且应用程序将指向它们自己的本地副本? 我确定我在这里遗漏了一些东西,但我不知道。

2
SQL Server中的批处理中止错误列表
在SQL Server中,如果XACT_ABORT关闭,则某些错误将终止当前语句(例如,向使用某些参数的存储过程提供不正确数量的参数),而某些错误将中止整个批处理(例如,将参数提供给存储的不带参数的程序)。[参考]:http : //www.sommarskog.se/error-handling-I.html#scope-abortion。 我想知道的是,是否有明确的列表列出哪些错误正在批处理中止,哪些错误正在语句终止。

1
ORDER BY和字母和数字混合字符串的比较
我们需要对值进行报告,这些值通常是数字和字母的混合字符串,需要“自然”排序。诸如“ P7B18”或“ P12B3”之类的东西。@字符串主要是字母序列,然后是数字交替。但是,这些段的数量和每个段的长度可能会有所不同。 我们希望这些数字部分按数字顺序排序。显然,如果我直接使用来处理这些字符串值ORDER BY,则“ P12B3”将出现在“ P7B18”之前,因为“ P1”早于“ P7”,但是我想反过来,因为“ P7”自然会在前面“ P12”。 我还希望能够进行范围比较,例如@bin < 'P13S6'此类。我不必处理浮点数或负数;这些严格来说是我们要处理的非负整数。字符串长度和段数可能是任意的,没有固定的上限。 在我们的案例中,字符串大小写并不重要,尽管如果有一种方法可以按排序规则识别的方式执行此操作,那么其他人可能会觉得有用。所有这一切中最丑陋的部分是我希望能够在WHERE子句中同时进行排序和范围过滤。 如果我在C#中执行此操作,那将是一个非常简单的任务:进行一些解析以将alpha与数字分离,实现IComparable,基本上就可以完成。当然,至少就我所知,SQL Server似乎没有提供任何类似的功能。 有人知道有什么好办法可以使这项工作吗?是否有一些鲜为人知的功能来创建实现IComparable的自定义CLR类型,并使它的行为符合预期?我也不反对愚蠢的XML技巧(另请参阅:列表串联),并且服务器上也提供了CLR regex匹配/提取/替换包装器功能。 编辑: 作为一个更详细的示例,我希望数据表现出这样的效果。 SELECT bin FROM bins ORDER BY bin bin -------------------- M7R16L P8RF6JJ P16B5 PR7S19 PR7S19L S2F3 S12F0 例如,将字符串分成所有字母或所有数字的记号,并分别按字母或数字对它们进行排序,最左边的记号是最重要的排序术语。就像我提到的那样,如果实现IComparable,.NET无疑是小菜一碟,但是我不知道如何(或是否)可以在SQL Server中实现这种功能。在使用它的10年左右的时间里,这肯定不是我遇到过的事情。

5
进行扫描,尽管我希望进行搜索
我需要优化一条SELECT语句,但是SQL Server总是执行索引扫描而不是查找。这是查询,它当然在存储过程中: CREATE PROCEDURE dbo.something @Status INT = NULL, @IsUserGotAnActiveDirectoryUser BIT = NULL AS SELECT [IdNumber], [Code], [Status], [Sex], [FirstName], [LastName], [Profession], [BirthDate], [HireDate], [ActiveDirectoryUser] FROM Employee WHERE (@Status IS NULL OR [Status] = @Status) AND ( @IsUserGotAnActiveDirectoryUser IS NULL OR ( @IsUserGotAnActiveDirectoryUser IS NOT NULL AND ( @IsUserGotAnActiveDirectoryUser = …

1
在SQL Server 2012中比较两个大型结果集的最有效方法是什么
当前比较两个大型结果/行集的最有效方法的建议似乎是使用EXCEPT运算符。随着行大小的增加(更改@last值),下面的自包含SQL脚本效率非常低下。我试图在组合表中查找唯一条目,但没有任何改进。 DECLARE @first AS INT, @step AS INT, @last AS INT; -- This script is comparing two record sets using EXCEPT -- I want to find additions from OLD to NEW -- As number of rows increase performance gets terrible -- I don't have to use two tables. I could …

2
为什么在SQL执行计划中执行TOP操作
经过一会儿的搜索后,我决定发布此问题,因为它找不到答案,并向您道歉,如果那里没有类似的问题/答案。 在两个类似设置的SQL服务器上运行下面的查询时,我们会遇到不同的执行计划,这会影响性能,我们需要帮助找出原因。 查询: SELECT process_id INTO #temp FROM revrep_revenue_fact WHERE process_id = 284 DROP TABLE #temp 服务器A的执行计划 服务器B的执行计划 服务器B http://s2.postimg.org/z9fjrfv4n/server_B.png 您会注意到,服务器B在实际执行计划中具有TOP物理操作,我们正在尝试找出原因。两个查询在索引查找中使用相同的索引。 这是服务器A和服务器B的一些详细信息 服务器A和B都 Windows Server 2008 R2标准Service Pack 1 24GB RAM 64位操作系统 使用(SELECT SERVERPROPERTY('ProductVersion'))获得的SQL Server 2012版本 服务器A SQL版本11.0.3000.0 服务器B SQL版本11.0.5058.0 我们尝试过的 清除过程缓存 重建索引 刷新统计 设置行数0 为什么服务器B在执行计划中有TOP?在这个简单的查询示例中,没有实际问题,但是在较大的查询中,TOP的成本增加了,我们发现性能受到了影响。我们将不胜感激调试任何帮助,我们将为您提供可能需要帮助的任何其他信息。

3
Always On可用性组,始终将用户重定向到只读实例
我们有一个Always On可用性组,其中有一个主服务器和一个已启用读取的辅助服务器。我们的实施团队有一个用户,该用户使用数据库检查他们打算放入数据库的数据的正确性。 用户仅具有读取数据库的权限,但是当用户通过AG Listener连接(通过SSMS)时,他们始终连接到活动节点。 我试图让他们直接访问只读实例,但是它们陷入了困境,在一两天之后,它们又又回到了活动节点上。 SQL Server是否可以通过某种方式说出该用户始终具有只读意图,并将其重定向到那里? 注意:我尝试在其他连接参数中设置'ApplicationIntent = ReadOnly',但这似乎没有重定向到辅助节点,也不是理想的解决方案,因为它们不可避免地会忘记为新的启动程序进行设置。 SQL Server 2012 Enterprise,可用性组1个主要的,1个可读性次要的同步提交。 我不打算让用户连接到链接服务器或通过任何其他服务器。用户通过SSMS(没有其他应用程序)直接连接到数据库,并且我希望AG侦听器(或附近的东西)能够将用户定向到辅助节点(如果有)(因为那里只有读取访问权限)无需用户做任何事情就可以访问主数据库,因为用户在计算机之间移动并且会忘记添加应用程序意图。另外,我发现将其添加到其他连接参数并不总是将您定向到辅助节点。


1
为什么SELECT COUNT()查询执行计划包括左连接表?
在SQL Server 2012中,我具有连接到另一个表的表值函数,我需要为此“表值函数”计算行数。检查执行计划时,可以看到左侧的联接表。为什么?左连接表如何影响返回的行数?我希望数据库引擎不需要在SELECT count(..)查询中评估左联合表。 Select count(realtyId) FROM [dbo].[GetFilteredRealtyFulltext]('"praha"') 执行计划: 表值函数: CREATE FUNCTION [dbo].[GetFilteredRealtyFulltext] (@criteria nvarchar(4000)) RETURNS TABLE AS RETURN (SELECT realty.Id AS realtyId, realty.OwnerId, realty.Caption AS realtyCaption, realty.BusinessCategory, realty.Created, realty.LastChanged, realty.LastChangedType, realty.Price, realty.Pricing, realty.PriceCurrency, realty.PriceNote, realty.PricePlus, realty.OfferState, realty.OrderCode, realty.PublishAddress, realty.PublishMap, realty.AreaLand, realty.AreaCover, realty.AreaFloor, realty.Views, realty.TopPoints, realty.Radius, COALESCE(realty.Wgs84X, ruian_cobce.Wgs84X, ruian_obec.Wgs84X) as …


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.