Questions tagged «sql-server»

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

6
SQL Server注入-以26个字符为单位的损失是多少?
我正在测试针对SQL Server数据库上的注入攻击的弹性。 db中的所有表名都是小写,并且排序规则区分大小写,Latin1_General_CS_AS。 我可以发送的字符串被强制为大写,并且最大长度为26个字符。所以我不能发送DROP TABLE,因为表名将是大写的,因此由于排序规则,该语句将失败。 那么-我在26个角色中能造成的最大伤害是多少? 编辑 我了解有关参数化查询的所有知识,等等-假设在这种情况下,开发构建要发送查询的前端的人没有使用params。 我也不打算做任何邪恶的事情,这是由同一组织中的其他人构建的系统。

1
设置统计IO-工作表/工作文件
我正在执行查询,产生计划: 统计IO: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads 0, …

1
增量更新后统计信息消失
我们有一个使用增量统计信息的大型分区SQL Server数据库。所有索引均按分区对齐。当我们尝试通过分区在线重建分区时,在重建索引之后,所有统计信息都会消失。 下面是一个脚本,用于通过AdventureWorks2014数据库在SQL Server 2014中复制问题。 --Example against AdventureWorks2014 Database CREATE PARTITION FUNCTION TransactionRangePF1 (DATETIME) AS RANGE RIGHT FOR VALUES ( '20130501', '20130601', '20130701', '20130801', '20130901', '20131001', '20131101', '20131201', '20140101', '20140201', '20140301' ); GO CREATE PARTITION SCHEME TransactionsPS1 AS PARTITION TransactionRangePF1 TO ( [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], …

3
CPU利用率是否会影响外部NUMA访问的成本?
情境 假设我有一个带有4个套接字的SQL Server,每个套接字有1个NUMA节点。每个插槽具有4个物理核心。总内存为512 GB,因此每个NUMA节点均具有128 GB的RAM。 密钥表被加载到第一个NUMA节点中。 题 假设我们从该表读取了大量流量。如果拥有NUMA节点的套接字的所有物理核心都具有100%的CPU利用率,这是否会对来自其他套接字的非本地NUMA访问的成本产生负面影响?或者,另一方面,无论本地套接字有多忙,非本地NUMA访问的成本都是多少? 我希望我的问题有道理。请让我知道是否可以尝试澄清。 背景 上周我们的生产服务器中发生数据库问题,某些业务处理似乎受到了更大的影响。我们进行的查询几乎没有逻辑读取,但需要超过1分钟的时间。我们查看的总体CPU利用率约为60%。我们没有查看特定于套接字的CPU指标。I / O指标是平均值。

1
SQL Server 2014可以在批处理模式下执行什么操作?
在查询中使用列存储索引时,SQL Server可以使用批处理模式。关于可以在批处理模式下运行什么以及不能在批处理模式下运行的文档很少。请查看以下(激励性)查询计划,其中以批处理模式(绿色)执行大量操作: (这是一个估计的计划。我使用实际计划来验证实际执行模式确实是批处理的。) 请注意,只有T1的构建方使用列存储索引。所有探针输入(T2和T3)都是行存储。他们的数据似乎转换为批处理模式。我一直认为批处理模式仅用于通过探针侧运行的数据流。 似乎数据可以转换为批处理模式,即使它不是源自于列存储索引。这就提出了一个问题:为什么SQL Server也不将批处理模式也用于仅行存储的查询?对于其中一些人可能是有益的。使用列存储索引是否是使SQL Server考虑批处理模式所必需的正式要求?我们是否可以添加一个带有列存储索引的零行伪表来引入批处理模式并实现性能提升? 自SQL Server 2014起,批处理模式下到底可以运行什么?

5
为什么此显式强制转换仅导致链接服务器出现问题?
我正在通过原始服务器上的视图从链接服务器查询数据。视图必须包括几个标准化列,如Created,Modified和Deleted,但是在这种情况下,源服务器上的表中不具有任何合适的信息。因此,这些列被显式转换为它们各自的类型。我更新了视图,更改了 NULL AS Modified 至 CAST(NULL as DateTime) as Modified 但是,执行此更新后,视图将触发以下错误消息: 消息7341,级别16,状态2,第3行无法从链接服务器“”的OLE DB访问接口“ SQLNCLI11”获取列“(用户生成的表达式).Expr1002”的当前行值。 我们通常在原始服务器上进行了这种“显式强制转换”更改,而无需担心,我怀疑问题可能与所涉及的服务器版本有关。我们确实不需要应用此强制转换,但感觉更干净。现在,我只是好奇为什么会这样。 服务器版本(来源): Microsoft SQL Server 2012-11.0.5058.0(X64)2014年5月14日18:34:29版权所有(c)Windows NT 6.1(Build 7601:Service Pack 1)(Hypervisor)上的Microsoft Corporation Enterprise Edition(64位) 服务器版本(链接): Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)2011年6月17日版权所有(c)Windows NT 6.1(Build 7601:Service Pack 1)上的Microsoft Corporation Enterprise Edition(64位)(Hypervisor ) 编辑 我只是意识到我没有发布所有有问题的列而犯了一个错误,我必须为遗漏重要的细节表示歉意。我不知道我怎么没早注意到这一点。但是,问题仍然存在。 转换为DateTime时不会发生错误的转换,而是将列转换为UniqueIdentifier时发生。 这是罪魁祸首: CAST(NULL AS UniqueIdentifier) …

3
为什么表将其主键用作自身的外键
浏览数据库时,我遇到了一个表,该表使用其主键作为自身的外键。 我已经看到,表本身可以具有外键来构建层次结构,但是它将使用另一列来引用主键。 由于主键是唯一的,因此在这种情况下行是否只能指向自身?这似乎是一个重言式的链接,因为如果我已经有了该行,那么我已经有了该行。 有什么理由要这样做吗? 我确定约束是以这种方式编写的(不仅仅是查看图表),因为相同的表和列用于定义的两半。

5
SQL Server不是在Windows启动时启动,而是手动启动
我的SQL Server实例的(SQL Server 2008 R2 Express)服务的启动类型=自动。在过去的几次重新启动计算机后,该服务无法自行启动,但是当我手动启动该服务时,它的启动就很好。 事件查看器显示服务由于连接超时而无法启动。关于此超时,有2个条目: 条目1 等待SQL Server(SQLEXPRESS)服务连接时已达到超时(30000毫秒)。 参赛作品2 由于出现以下错误,导致SQL Server(SQLEXPRESS)服务无法启动:该服务未及时响应启动或控制请求。 我检查了ERRORLOG文件,发现这些Event Viewer条目周围没有错误记录。 有关导致此问题的原因或如何进一步调查的任何想法?

2
是否可以在SQL Server中查看LRU-K值?
在SQL Server中sys.dm_os_memory_cache_entries,可以查看缓存中条目的原始成本以及缓存条目的当前成本(original_cost和current_cost)。DMV sys.dm_os_buffer_descriptors包含当前内存中页面的记录以及有关页面的一些元数据。DVM中没有的一个有趣的信息块是数据页的LRU-K值。 是否可以获取SQL Server缓冲池中数据页的LRU-K值?如果是这样,怎么办?
21 sql-server 

6
在Sql Server中,有没有一种方法可以检查选定的一组行是否被锁定?
我们正在尝试更新/删除数十亿行表中的大量记录。由于这是一个受欢迎的表格,因此该表格的不同部分都有很多活动。任何较大的更新/删除活动都会被阻止较长时间(因为它正在等待获取所有行或页锁或表锁的锁),从而导致超时或花费多天才能完成任务。 因此,我们正在更改一次删除少量行的方法。但是我们要检查所选的(例如100或1000或2000行)当前是否已被其他进程锁定。 如果不是,则继续删除/更新。 如果它们被锁定,则移至下一组记录。 最后,回到开始并尝试更新/删除遗漏的内容。 这可行吗? 谢谢,ToC

1
查找最近在数据库上执行的所有查询
[我是初学者级T-SQL程序员] [..希望我在正确的堆栈交换站点上] 我想获得我执行的所有查询的列表(至少,从早上起我今天执行的查询)。我需要报告查询的执行时间。 在线搜索并没有为我提供很多有用的信息。我在网上发现的唯一看起来很接近的查询是 SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest ORDER BY deqs.last_execution_time DESC 该查询返回了一些奇怪的结果(其中大多数是一堆的存储过程)。而且,所有这些结果都显示从今天下午开始执行的查询(我需要从早上开始执行查询)。 我在之前的问题中找不到任何内容(如果已经提出类似的问题,请指向我)。 我看到了一些有关SQL Profiler的建议,但是我想Profiler仅在我已经开始跟踪时才可以帮助我(如果我错了,请更正我)。 有人可以建议我如何获取自早上以来已在数据库上执行的所有查询的列表(包括查询执行时间)。 [如果我还能以某种方式获得执行查询的用户的用户名,那将是有帮助的(不是必需的)

2
什么是多维数据集中的量度和尺寸
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 6年前。 我是Microsoft Sql Server商业智能的新手Analysis Service(但是我使用SQL Server已有多年的编程经验)。任何人都可以用简单的文字描述多维数据集中的度量和维数(如果可能的话)? 谢谢

2
连接池被重置,错误:18056,严重性:20,状态:46。&Perfmon计数器未显示
我们使用SQL身份验证(以减少连接池的数量)和.NET 4.0连接字符串连接到Windows 2008 R2 Enterprise Server上的SQL Server Enterprise Edition 2012 SP1: Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64) 2012年10月19日13:38:57 版权所有(c) Windows NT 6.1(Build 7601:Service Pack 1)上的Microsoft Corporation Enterprise Edition(64位) 我们使用大约50台服务器,将其分为网站的不同部分8个不同的组。 我们的网站正在使用此SQL Server记录访问跟踪数据。在过去的几天中,它吐出了有关重置连接池的以下消息: 客户端无法重用SPID 1327的会话,该会话已被重置用于连接池。故障ID为46。此错误可能是由较早的操作失败引起的。在此错误消息之前,请检查错误日志中是否有失败的操作。 错误日志显示为: 错误:18056,严重性:20,状态:46 。客户端无法重用SPID 959的会话,该会话已被重置用于连接池。失败ID为46。此错误可能是由较早的操作失败引起的。在此错误消息之前,请检查错误日志中是否有失败的操作。 用户“ xxxx”的登录失败。原因:在重新验证连接登录时,无法打开在登录对象中配置的数据库'xxxxxxxx'。[客户:10.xx.xx.xxx] 经过一番挖掘后,我在CSS博客上找到了该文档:工作原理:错误18056 –客户端无法重用SPID ##进行会话,该会话已被重置用于连接池,Aaron Bertrand 对此进行了重置:故障排除错误18456。我知道错误号不同,但是失败ID相同,并且消息数量相同)。 故障ID 46表示登录名没有权限。我们的登录名默认为master数据库,并且数据库名称在连接字符串中指定。 我想检查连接字符串池等的数量,并检查Perfmon中所有的计数器.Net Data Provider for SqlServer。它只为我defaultdomain9675提供了实例的选项,因此我选择了那是假设它是我们的Datacentre网络的系统生成的ID名称。不幸的是,所有计数器的读数均为零。在我们的其他一台主服务器上,连接池徘徊在10个左右,这是我期望在具有这种负载的正常服务器上看到的。 我的问题是三折 …

3
父子树层次结构订单
我必须遵循SQL Server 2008 R2中的数据。SQLFiddle 架构: 创建表[dbo]。[ICFilters]( [ICFilterID] [int] IDENTITY(1,1)NOT NULL, [ParentID] [int] NOT NULL默认值0, [FilterDesc] [varchar](50)NOT NULL, [Active] [tinyint] NOT NULL默认值1, 约束[PK_ICFilters]主键 ([ICFilterID] ASC)与 PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =开启 )在[PRIMARY]上 )在[PRIMARY]上 插入[dbo]。[ICFilters](ParentID,FilterDesc,活动) 价值观 (0,“产品类型”,1), (1,'ProdSubType_1',1), (1,'ProdSubType_2',1), (1,'ProdSubType_3',1), (1,'ProdSubType_4',1), (2,'PST_1.1',1), (2,'PST_1.2',1), (2,'PST_1.3',1), …

3
我可以在2008服务器上使用SQL Server Management Studio 2012吗?
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 我的学校正在使用SQL Server2008。上次使用它时,我仅在家中安装了SQL Server Management Studio 2008,并使用VPN连接到学校的服务器。 现在,我想再次安装SQL Server Management Studio,但是这次提供了2012版本。 SQL Server Management Studio 2012是否可以在学校的SQL Server 2008上运行?还是我需要2008版本?
21 sql-server  ssms 

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.