Questions tagged «sql-server»

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

3
SQL Server CLR中的第三方dll
我需要在SQL Server CLR的触发器c#代码中使用第三方DLL 但是,当我尝试添加引用时,它仅显示了SQL Server中的一些DLL。 如何将第三方dll添加到SQL Server?
14 sql-server  c#  sql-clr 

3
什么是“异构查询”?
我收到有关我在程序中运行的SQL查询的以下错误消息。SQL Server 2005 T-SQL。 异构查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项。这样可以确保一致的查询语义。启用这些选项,然后重新发出查询。(严重性16) 修复起来很容易,设置ANSI_NULLS和ANSI_WARNINGS ON,但是我想知道什么是异构查询。Google搜索带来了数十个结果,告诉我要设置ANSI_NULLS和ANSI_WARNINGS,而没有解释该术语的含义。查询是: UPDATE SRV.DB.DBO.TABLE SET Column= (SELECT Column FROM SRV1.DB.DBO.TABLE) 我在想这是由于在一个查询中连接到多个数据库引擎,否则我就再也没有收到这个错误。 在这种情况下,“异构”是否仅指查询两个不同的数据库引擎?

3
测试存储过程的可伸缩性
我有一个电子邮件应用程序,将在每个页面加载时调用该应用程序以将给定用户的新消息数传送到UI。我在数据库级别测试的东西有一些变体,但是所有这些都通过存储的proc调用抽象出来。 我试图猛击数据库以查看断点(每秒请求数)。 简而言之,我有一个表,如此userId,newMsgCount,以及对userId的聚集索引。SQL应该每秒能够处理数百或数千个此类响应。我认为落后者是我的.NET应用程序。 我怎样才能使它成为一个很好的测试,以基于SQL性能获得测试结果? 是否有为此工具,我可以为其提供存储的proc名称和参数以将其打包到数据库中? 我想看看数据库是否可以返回分钟。每秒250个响应。

3
为什么SSMS在表格顶部而不是底部插入新行?
每当我在SQL Server Management Studio 2008(数据库是SQL Server 2005)中的表中手动插入一行时,新行就会出现在列表的顶部而不是底部。我正在使用标识列,这会导致类似 id row 42 first row 1 second row 2 third row 当获取行且未明确对其进行排序时。当为Web应用程序获取行并更改TOP 1查询返回的内容时,这将导致外观不同。 我知道我可以order by,但是为什么会这样呢?我的大部分数据都是通过Web应用程序插入的,来自此应用程序的所有插入都将按照先进先出的顺序进行,例如最新插入在底部,因此id都排成一行。服务器或Management Studio中是否有某些设置会导致这种不正确的订购?

4
有哪些工具可以为SQL Server生成测试数据?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 从我的另一个问题中可以看到,生成测试数据是我现在的主题。 此时,我仍在手动生成测试数据。但是,由于此过程是手动过程,因此始终会生成少量数据(通常为五行)。 是否有任何工具可以自动执行此过程?特别是,我希望能够生成100万条以上的行。

3
作业失败时,如何让SQL Server通过电子邮件将错误详细信息发送给我?
SQL Server允许您配置作业以在失败时发送电子邮件警报。这是监视您的工作的简单有效的方法。但是,这些警报不包含任何详细信息-只是成功或失败通知。 如果作业失败,典型的警报电子邮件将如下所示: JOB RUN: 'DBA - Consistency Check Databases' was run on 8/14/2011 at 12:00:04 AM DURATION: 0 hours, 0 minutes, 0 seconds STATUS: Failed MESSAGES: The job failed. The Job was invoked by Schedule 2 (Nightly Before Backup 12AM). The last step to run was step 1 (Check …


5
我如何更快地查询这2000万条记录视图?
对于搜索功能,我正在使用一个视图,该视图具有需要搜索的所有表中的记录。该视图有近2000万条记录。针对该视图的搜索花费了太多时间。 我应该在哪里寻求改善这种观点的表现? 该视图的大致定义如下。它包括十三张桌子和大约三十个字段。 CREATE VIEW [dbo].[v_AllForSearch] AS SELECT FT.firstField AS [firstField] , FT.fld_primary AS [fld_primary] , FT.fld_thirdField AS [thirdField] , FT.fld_fourthField AS [fourthField] , ISNULL(ST.[fld_firstSearchField],'') AS [firstSearchField] , ISNULL(TT.[fld_thirdSearch],'') AS thirdSearch , ISNULL(TT.[fld_fourthSearch],'')AS fourthSearch , ISNULL(TT.[fld_fifthSearch],'')AS fifthSearch , ISNULL(FRT.[fld_sixthSearch],'') As [sixthSearch] , ISNULL(FRT.[fld_seventhSearch],'') AS [seventhSearch] , ISNULL(FRT.[fld_eightSearch],'')AS [eightSearch] , ISNULL(FIT.[fld_nineSearch],'') …

5
附加/分离与备份/还原
我需要将数据库(作为一个整体)传输到另一台服务器,以创建一个重复的数据库来设置另一个测试环境。 我有两个选择: 在源服务器上进行完整备份/在目标服务器上进行还原; 在源服务器上分离/在目标服务器上附加。 根据我的要求,两种解决方案的优缺点是什么? 我正在使用SQL Server 2008 Enterprise。

3
SQL Server-临时表与物理表
在我的工作场所中,正在逐渐摆脱使用#temp表,而是使用具有SPID的永久物理表的趋势。只要以前将INSERTINSERT插入#temp表中,现在INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)都需要一个- DELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPID在存储过程开始时加上一堆语句。此外,不用说,在使用这些“用于存储临时数据的永久性表”的地方,都必须小心包含一个WHERE SPID = @@SPID。 采取这种做法的逻辑是,它将提高运行查询的服务器的整体性能(通过减少tempdb中的I / O和争用)。由于多种原因,我并不热衷于这种方法-这种方法很丑陋,潜在危险,而且似乎很可能损害那些使用新方案的查询的性能。 有没有人有这种消除#temp表的方法或类似方法的经验?

1
强制性的可读二级计划
如果计划是针对可用性组中的主数据库执行的,则该计划是否适用于在辅助数据库上运行的查询? 我正在寻找涵盖计划强制的两种可能性的答案: 计划指南 查询存储强制计划 我阅读了以下内容,这些内容表明QS强制计划不会继续存在,但找不到文档中的权威内容或有关计划指南的任何内容。 Erin Stellato的查询存储和可用性组 在 Vikas Rana的AlwaysOn可读辅助数据库上查询数据存储强制计划行为 强迫的结论性证据将是二级执行计划中存在Use Plan或PlanGuideName和PlanGuideDB属性。

1
无法在非唯一索引上插入重复的键行?
在连续八周无错误之后,过去几天我们三度遇到了这个奇怪的错误,我很沮丧。 这是错误消息: Executing the query "EXEC dbo.MergeTransactions" failed with the following error: "Cannot insert duplicate key row in object 'sales.Transactions' with unique index 'NCI_Transactions_ClientID_TransactionDate'. The duplicate key value is (1001, 2018-12-14 19:16:29.00, 304050920).". 我们拥有的索引不是唯一的。如果您注意到,错误消息中的重复键值甚至不会与索引对齐。奇怪的是,如果我重新运行proc,它将成功。 这是我发现的最新链接,但有我的问题,但没有解决方案。 https://www.sqlservercentral.com/forums/topic/error-cannot-insert-duplicate-key-row-in-a-non-unique-index 关于我的场景的几件事: proc正在更新TransactionID(主键的一部分)-我认为这是导致错误的原因,但不知道为什么?我们将删除该逻辑。 在表上启用了更改跟踪 进行事务读取未提交 每个表有45个字段,我主要列出索引中使用的字段。我在更新语句中(不必要)更新TransactionID(集群键)。奇怪的是,直到上周,我们几个月都没有遇到任何问题。而且这只是通过SSIS偶尔发生的。 表 USE [DB] GO /****** Object: Table [sales].[Transactions] Script …

2
SQL Server可以在系统生成的约束名称中创建冲突吗?
我有一个可以在SQL Server 2008数据库(非群集)中创建数百万张表的应用程序。我希望升级到SQL Server 2014(群集),但在负载下却遇到错误消息: “数据库中已经存在一个名为'PK__tablenameprefix__179E2ED8F259C33B'的对象” 这是系统生成的约束名称。它看起来像是随机生成的64位数字。由于表格数量众多,我是否有可能看到冲突?假设我有1亿张表,那么在添加下一张表时,我计算出发生冲突的机会要小于1万亿分之一,但这假设分布是一致的。SQL Server是否有可能在2008年和2014年之间更改其名称生成算法以增加发生冲突的可能性? 另一个明显的不同是,我的2014年实例是一个成对的,但是我正在努力形成一个假设,说明为什么会产生上述错误。 PS:是的,我知道创建数百万张表很疯狂。这是我无法控制的黑匣子第三方代码。尽管有精神错乱,但它在2008版中仍然有效,现在在2014版中不再适用。 编辑:仔细检查后,生成的后缀似乎总是以179E2ED8开头-这意味着随机部分实际上只是一个32位数字,每次添加新表时,冲突几率仅为50分之一。与我看到的错误率更接近!

2
更改“ sa”密码是否需要重新启动SQL(在混合模式下)?
我们发现一个SQL“ sa”帐户的使用方式不应该被使用,因此我们正在更改所有SQL实例上的sa密码。 (我们有以混合身份验证模式运行的SQL 2005至2017服务器。所有用户和应用程序都应使用域帐户或非sa SQL帐户进行连接。我一直在监视,但未发现任何其他应用程序,用户或非-使用sa帐户的内部sps。) 几个问题: Q1:更改sa密码是否需要重新启动SQL? 我发现一些参考资料说更改sa帐户密码后需要重新启动SQL服务: DBA SE:更改sa密码 SQLAuthority:使用Management Studio更改SA登录的密码 真的吗?还是仅当我更改身份验证模式时?还是仅当我以sa常规身份登录时? 这个SQL Server Central线程甚至建议更改它可能会影响现有的SQL代理作业和其他内容。这是一个问题吗?还是仅当有人将SA帐户硬编码到SSIS包或其他内容中时? (如果很重要,我们将域帐户用于SQL服务和SQL代理服务,并将域代理帐户用于调用SSIS包或PowerShell脚本的作业。) Q2:我可以以“正常”方式更改sa密码吗? 我可以像重设其他帐户一样重设吗?使用SSMS,或更可能通过以下方式: ALTER LOGIN sa WITH PASSWORD = 'newpass'; 还是我必须进入单用户模式或需要计划停机的时间?(请注意,我将通过域帐户运行此文件,而不是以“ sa”身份连接。) 问题3:我们是否应该尝试定期进行此密码轮换?或仅在我们发现问题时? 这是推荐的“最佳实践”吗?

2
SQL Server 2016的奇怪性能问题
我们在VMware虚拟机中运行SQL Server 2016 SP1的单个实例。它包含4个数据库,每个数据库用于一个不同的应用程序。这些应用程序都位于单独的虚拟服务器上。它们都没有在生产中使用。但是,测试应用程序的人员正在报告性能问题。 这些是服务器的统计信息: 128 GB RAM(SQL Server最大110GB内存) 4核@ 4.6 GHz 10 GBit网络连接 所有存储均基于SSD 程序文件,日志文件,数据库文件和tempdb位于服务器的单独分区上 阿斯 用户正在通过基于C ++的ERP应用程序执行单屏访问。 当我ostress使用许多小型查询或大型查询对Microsoft的SQL Server进行压力测试时,我将获得最佳性能。唯一的限制是客户,因为他不能足够快地回答。 但是,当几乎没有用户时,SQL Server几乎什么也不做。然而,人们必须永远等待以保存应用程序中的所有内容。 根据Paul Randal的“ 告诉我哪里疼 ”查询,所有等待事件中有50%是ASYNC_NETWORK_IO。 这可能意味着网络问题,或者应用程序服务器或客户端的性能问题。这些都无法最大程度地远程使用其资源。大多数情况下,所有计算机(客户端,应用服务器,数据库服务器)上的CPU大约占26%。 网络连接的延迟约为1-3ms。在正常使用该应用程序期间,数据库服务器的IO最高写入速度为20MB / s(平均为7-9MB / s)。当我进行压力测试时,最高速度达到5GB / s。 对于我们的ERP系统数据库,缓冲区高速缓存大小为60GB,对于我们的财务软件,为20GB,对于质量保证软件,为1GB,对于文档归档系统,为3GB。 我授予了SQL Server帐户使用即时文件初始化的权利。丝毫没有提高性能。 在正常使用期间,页面预期寿命约为15k +。在预期的重压力测试结束时,该值下降至.05k左右。批处理/秒约为2-8k,具体取决于工作负载。 我会说ERP应用程序写得不好,但是我不能,因为所有应用程序都受影响。即使工作量最少。 但是我无法查明是什么原因造成的。是否有任何提示,提示教程,应用程序,最佳/最差实践文档或其他有关此问题的想法? 这些是来自的结果sp_BlitzFirst: 我跑了600秒。我在工作量很大的应用程序中启动了它。是1/3的时间ASYNC_NETWORK_IO。我还测试与网络连接NTttcp,PsPing,ipferf3,和pathping。没什么不寻常的。响应时间最大3毫秒,平均0.3毫秒。吞吐量约为1000 MB / s。 我的调查总是导致ASYNC_NETWORK_IOwaitstat排名第一。 我们调查了Large-Receive-Offload在VMware 中禁用该功能的结果。我们仍在测试中,但结果似乎不一致。我们的第一个“基准测试”持续了19分钟(最高结果是13分钟,只有当应用程序在具有SQL …

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.