Questions tagged «sql-server»

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

2
缓冲池外的SQL Server 2012内存消耗
我有一个SQL Server 2012 SP2 Enterprise Edition实例,比最大内存消耗约20GB的内存。内存限制。该实例限制为65GB,但以下查询显示的正在使用的物理内存为86GB SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB] FROM sys.dm_os_process_memory; GO 该服务器是物理服务器,具有2个NUMA节点。有没有一种方法可以找出正在消耗缓冲池之外的内存的原因(我假设这是正在发生的事情)? 这是DBCC MEMORYSTATUS的输出: 这是设置的内存限制: 提前致谢。 更新:-我已经运行了亚伦建议的查询 SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC 这是输出:- pages_kb的总和约为60GB 更新2:-DBCC MEMORYSTATUS的完整输出在这里:-http: //pastebin.com/nGn6kXEc 更新3: - Shanky在这里的Excel文件的脚本输出: - http://jmp.sh/LKRlH4K 更新4:-输出的屏幕截图:- SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB] FROM sys.dm_os_process_memory; GO 因此,这似乎表明SQL Server使用的内存大于65GB。

1
将数据加载到临时表中时获得最少的日志记录
即使在阅读了《数据加载性能指南》之后,我仍然不确定是否有必要将TABLOCK表提示添加到一个空的临时表中,该临时表由一个聚集索引定义,以便获得最少的日志记录。 显然,临时表是在TempDB中创建的,该表以SIMPLE恢复模式运行,因此我本以为它是最小化日志记录的理想选择,但是我找不到找到该表的方法。 临时表是否可以作为最少日志记录的候选表?如果这样,是否值得为永久表推荐添加TABLOCK提示?

2
需要通过Sql Server 2008 R2中的数据库邮件发送格式化的HTML电子邮件
我的要求是将自动电子邮件创建为(一种通过数据库邮件格式化的HTML电子邮件)。基本要求已完成,在该条件下,当触发作业时,它将数据插入到表格中,并且已计划将信息作为电子邮件发送,但现在客户已要求使用这种格式。 我已经完成的当前格式 PO Date:2014-11-26 PO ID:PO1 SAP Ref:0001106102 GRN:1067 DealerID:045 Dealer Name:ABC(Pvt)Ltd. 2 Status:New 客户要求的格式,如表格格式 PO Date |PO ID| SAP Ref| GRN|DealerID|Dealer Name|Status 这是我用于将数据插入到Email_Table(_ERROR_MAIL)中的SQL查询,需要根据要求进行查询 IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ImpCancelledGRN') BEGIN DROP PROCEDURE [dbo].[ImpCancelledGRN] END GO CREATE PROCEDURE [dbo].[ImpCancelledGRN] WITH ENCRYPTION AS …


1
SQL Server中的“强制加密”与“强制协议加密”
我试图了解不同的设置如何影响服务器-客户端通信的行为。在服务器上,我安装了带有签发的交换证书的自签名CA,该证书也已配置为由我的SQL服务使用。 首先,我希望看到在客户端上尚未安装根CA时此连接失败。但是无论我做什么,它似乎仍然可以工作。 为了更好地理解原因,我试图列出所有选项以及它们应产生的效果。但是我不确定我是否理解正确... 谁能帮我纠正和填写这里遗漏的部分吗? 在SQL Server上启用“ 强制加密 ”设置时: 实际上,这与Encrypt=True;TrustServerCertificate=True;我的连接字符串中的设置相同。客户端对于是否应使用加密以及服务器是否受信任没有发言权。 此选项可用于加密单个服务实例。 支持不带CA的自签名交换证书。 在SQL Server上启用“ 强制协议加密 ”设置时: 与服务器上所有服务的所有客户端连接均已加密。 需要由客户端和服务器上都可用的受信任CA颁发的交换证书。 在客户端上使用“ 强制协议加密 ”设置时: 该单个客户端将强制使用SSL,并且需要由该计算机上可用的受信任CA颁发的交换证书。没有它,该连接将失败。 在服务器和客户端上启用“ 强制协议加密 ”设置时: 不建议这样做。但为什么?会发生什么,什么会失败? 在服务器上同时启用“ 强制加密 ”和“ 强制协议加密 ”时: 这将产生什么?启用强制协议加密时,将什么设置为强制加密有关系吗?

2
Transact-SQL中的对称差异运算?
我一直都知道UNIONSQL中的运算符,但是直到最近才发现还有其他集合运算符,INTERSECT和EXCEPT。我还没有找到执行第四个大集合运算符的运算符,即对称差(例如的反函数INTERSECT)。 看起来我可以通过使用类似的东西来获得所需的输出 SELECT Field FROM A UNION SELECT Field FROM B EXCEPT SELECT Field FROM A INTERSECT SELECT Field FROM B (假设我的优先级正确),或通过执行反全联接: SELECT A.Field, B.Field FROM A FULL JOIN B ON B.Id = A.Id WHERE B.Id IS NULL OR A.Id IS NULL 但是,这两个查询看起来都很密集,特别是与其他三个基本集合操作相比。SQL中是否存在对称差异操作,而我只是在文档中找不到它?还是有在T-SQL中实现“规范”的方式?
10 sql-server  t-sql 

2
如何动态别名列?
我有一个表(不是我自己设计的),其中有20个变量命名的列。也就是说,根据您要查看的记录类型,该列的适用名称可以更改。 可能的列名存储在另一个表中,我可以很容易地查询它。 因此,我真正要查询的查询是这样的: SELECT Col1 AS (SELECT ColName FROM Names WHERE ColNum = 1 and Type = @Type), Col2 AS (SELECT ColName FROM Names WHERE ColNum = 2 and Type = @Type) FROM Tbl1 WHERE Type = @Type 显然这是行不通的,那么如何获得类似的结果? ' 我已经尝试构建查询字符串并EXECUTE对其进行查询,但这仅返回“命令已成功完成”,并且似乎未返回行集。 事实证明,我使用了不正确的查询来构建动态SQL,因此构建了一个空字符串。SQL Server肯定正确执行了空字符串。 请注意,我之所以需要这样做,而不是简单地对列名进行硬编码,是因为列名是用户可配置的。

4
有没有一种快速的方法来查找SQL Server 2008 R2中所有已加密/已加密数据的列?
有没有一种快速的方法来查找SQL Server 2008 R2中所有已加密/已加密数据的列? 我需要使开发服务器中所有加密列中的数据无效(根据我们的业务规则)。我知道大多数专栏是因为我们经常使用它们,但是我想透彻一点,也希望能够证明已经找到了所有专栏。 我已经在网上搜索,查看了INFORMATION_SCHEMA并检查了我认为有用的DMV以及sys.columns和sys.objects,但是到目前为止还算不上什么。

3
如何在SSRS报告中隐藏行?
我想弄清楚如何在报表中隐藏那些行,其中SSRS 2008中“两列中的总分配和总成本”为0。 例如: 总分配总实际成本 0 0 <----隐藏 100,00 0 <----不要隐藏 0 50,0000 <----不要隐藏 这是屏幕截图: 谢谢

3
如何创建带有使用序列的列的表?
我有以下 CREATE TABLE [MyTable] ( [ID] [bigint] PRIMARY KEY NOT NULL, [Title] [nvarchar](64) NOT NULL ) CREATE SEQUENCE MyTableID START WITH 1 INCREMENT BY 1 NO CACHE ; GO 我想在MyTable上插入新记录,并将ID设置为序列的下一个值。我该怎么做?触发,或者还有其他方法吗?怎么样? 当我使用SQL Server 2012时,由于gap bug,我不想使用身份。

1
嵌套在OUTER JOIN内部的INNER JOIN语法与查询结果
TLDR;如果您查看这两个执行计划,有一个简单的答案是哪个更好?我故意没有创建索引,因此更容易看到正在发生的事情。 在我之前的问题(我们发现不同的联接样式(即嵌套与传统)之间的查询性能差异)进行了跟进之后,我意识到嵌套语法也可以修改查询的行为。考虑以下两个查询。 SELECT a.*, m.*, n.* FROM dbo.Autos a LEFT JOIN dbo.Models m JOIN dbo.Manufacturers n -- <-- Nested INNER JOIN ON n.ManufacturerID = m.ManufacturerID ON m.ModelID = a.ModelID 这并不一定使制造商加入,以包括与ModelID自动行是不是在型号表。 使用传统语法,我们必须将Manufactures的联接更改为外部联接,就像这样……但这会更改查询计划。 SELECT a.*, m.*, n.* FROM dbo.Autos a LEFT JOIN dbo.Models m ON m.ModelID = a.ModelID LEFT JOIN dbo.Manufacturers n …

2
从数据库属性对话框的“文件”页面更改数据库所有权时出错
我已还原数据库,并以db_owner的身份创建了一个新用户(与我登录时使用的用户相同)。现在,当我想查看数据库图时出现错误 无法安装数据库图支持对象,因为该数据库没有有效的所有者。要继续,请首先使用“数据库属性”对话框的“文件”页面或“更改授权”语句将数据库所有者设置为有效的登录名,然后添加数据库支持对象 现在,当我尝试从数据库属性的“文件”页面更改所有权时,出现以下错误: Set Owner因数据库'ABC'失败。(Microsoft.SqlServer.SMO)其他信息:SMO中发生异常建议的新数据库所有者James-PC \ James被映射为该数据库中的用户James。参数名称:James-PC \ James“ 请帮助我解决此问题,以便从另一个系统还原数据库备份后,可以在这台计算机上查看数据库图。

2
将DBCC CHECKDB划分为多天
我正在实施Paul Randal的方法,以针对大型数据库在几天内手动分布DBCC CHECKDB,该方法主要包括: 在7个存储桶之间大致平均地划分数据库中的表 每周运行一次DBCC CHECKALLOC 每周运行一次DBCC CHECKCATALOG 每周每天在一个存储桶上运行DBCC CHECKTABLE 有人使用过这种技术吗?有没有现有的脚本? 我担心这可能无法涵盖CHECKDB所做的一切;CHECKDB的联机丛书文档说,除了CHECKALLOC,CHECKCATALOG和CHECKTABLE外,它还: 验证数据库中每个索引视图的内容。 使用FILESTREAM将varbinary(max)数据存储在文件系统中时,验证表元数据与文件系统目录和文件之间的链接级一致性。(仅适用于SQL 2008) 验证数据库中的Service Broker数据。 所以这是我的问题: 这些额外检查是否必要/重要?(索引视图可能与我有关,我认为我们还没有使用Service Broker或FILESTREAM。) 如果是这样,是否有办法分别执行这些附加检查? CHECKALLOC和CHECKCATALOG似乎运行非常快,即使在大型数据库上也是如此。有什么理由不每天运行这些? (注意:这将是数百个服务器中成千上万个现有数据库的标准例程,或者至少是一定规模的每个数据库的标准例程。这意味着诸如重组所有数据库以使用CHECKFILEGROUP之类的选项对我们而言并不实际。)

3
识别哪些值与表格行不匹配
我希望能够轻松地检查表中不存在查询中提供的唯一标识符。 为了更好地解释,这是我现在要执行的操作,以检查表中不存在列表“ 1、2、3、4”的哪些ID: SELECT * FROM dbo."TABLE" WHERE "ID" IN ('1','2','3','4'),假设该表格不包含ID为2的行。 将结果转储到Excel 在原始列表上运行VLOOKUP,以搜索结果列表中的每个列表值。 任何导致的VLOOKUP都#N/A位于表中未出现的值上。 我在想必须有一种更好的方法来做到这一点。理想情况下,我正在寻找类似 要检查的列表->在表上查询以检查->列表中的成员不在表中

2
如何将分钟添加到时间数据类型?
我有一个存储过程,该过程将两个记录插入到一​​个表中,记录之间的区别是第二个记录的时间列在第一个记录@MinToAdd之后: CREATE PROCEDURE CreateEntry /*Other columns*/ @StartTime time(2), @EndTime time(2), @MinutesToAdd smallint AS BEGIN SET NOCOUNT ON; SET @MinutesToAdd = @MinutesToAdd % 1440; --Prevent overflow if needed? IF (@MinutesToAdd > 0) BEGIN INSERT INTO ClientNotification (/*Other columns*/ startTime, endTime) OUTPUT inserted.id VALUES (/*Other columns*/ @StartTime, @EndTime), (/*Other columns*/ @StartTime + …

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.