数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

1
数据固有地排序,就好像它是聚集索引一样
我有下表,其中包含750万条记录: CREATE TABLE [dbo].[TestTable]( [Id] [int] IDENTITY(1,1) NOT NULL, [TestCol] [nvarchar](50) NOT NULL, [TestCol2] [nvarchar](50) NOT NULL, [TestCol3] [nvarchar](50) NOT NULL, [Anonymised] [tinyint] NOT NULL, [Date] [datetime] NOT NULL, CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, …

1
如何使用内置函数解析数据库触发器的名称?
我有一个数据库触发器,用于防止我在用户数据库中创建某些过程。 它出现在中sys.triggers,带有object_id,但我无法使用该object_id功能来找到它。 SELECT OBJECT_ID(t.name, t.type) AS object_id, * FROM sys.triggers AS t; 同样,我可以在中找到它sys.dm_exec_trigger_stats。我object_name无法解决,但是可以解决object_definition。 SELECT OBJECT_NAME(dets.object_id, dets.database_id) AS object_name, OBJECT_DEFINITION(dets.object_id) AS object_definition, * FROM sys.dm_exec_trigger_stats AS dets; 是否有一个函数可以接受数据库级触发器的对象ID,并返回其名称?


4
在案例陈述中退出查询?
我正在尝试设置一个查询,以便它将比较来自两个不同表的两个日期,如果它们相等,则查询退出。如果它们不相等,则查询将继续并插入一些内容。我不知道如何使它做我想要的。 SELECT TOP(1) @dateA=a.someDate FROM a ORDER BY DESC; SELECT TOP(1) @dateB=b.someDate FROM b ORDER BY DESC; CASE WHEN @dateA=@dateB THEN raiseerror('dates equal',20,-1) with log; Insert statements; 任何帮助将不胜感激。

3
备份数据库是否会缩小事务日志的大小?
我正在尝试收集有关SQL数据库的一些知识,并且对事务日志文件(LDF)有一些疑问。 首先,在创建数据库时,必须为数据库和日志文件定义初始文件大小。从我的看到,一旦在磁盘上创建了文件,它们将具有指定的大小,而不管数据库中是否有实际数据或是否有任何事务(日志)。 我的理解是备份数据库: 截断事务日志,并 缩小尺寸 通过“清空”磁盘中的日志来清除磁盘上的LDF文件。 现在,由于日志文件的大小似乎固定,因此我似乎无法正确理解。我的实际问题是这样的: 截断日志实际上对日志文件(LDF)有什么作用?该过程应防止磁盘装满。 如果我对某些概念的理解不正确,请纠正我。 谢谢!

1
为什么Set Returning Function(SRF)在FROM子句中运行较慢?
这是数据库内部的问题。我使用的是PostgreSQL 9.5,我想知道为什么在FROM子句中设置返回函数(SRF)(也称为表值函数(TVF))运行速度较慢,例如当我执行这些命令时, CREATE TABLE foo AS SELECT * FROM generate_series(1,1e7); SELECT 10000000 Time: 5573.574 ms 它总是比 CREATE TABLE foo AS SELECT generate_series(1,1e7); SELECT 10000000 Time: 4622.567 ms 这里是否可以制定一条通用规则,以便我们应该始终在FROM子句之外运行Set-Returning Functions ?


1
PostgreSQL-使用成千上万的元素数组
我希望根据是否以整数数组形式传递的大量值列表中包含一列来选择行。 这是我当前使用的查询: SELECT item_id, other_stuff, ... FROM ( SELECT -- Partitioned row number as we only want N rows per id ROW_NUMBER() OVER (PARTITION BY item_id ORDER BY start_date) AS r, item_id, other_stuff, ... FROM mytable WHERE item_id = ANY ($1) -- Integer array AND end_date > $2 ORDER BY …

2
如何在SQL Server中执行析乘?
在PostgreSQL中,我经常想做一些事情,例如找到7 的阶乘。 SELECT 7!; -- PostgreSQL is so full featured -- it even supports a prefix-factorial SELECT !!7; 甚至Excel都有FACT, =FACT(7) 如何使用SQL Server 2017 Enterprise做到这一点?

2
插入时MySql Gap Lock死锁
当从多个源频繁插入到表中时,我从间隙锁获取死锁。这是我的过程的概述。 START TRANSACTION UPDATE vehicle_image SET active = 0 WHERE vehicleID = SOMEID AND active = 1 Loop: INSERT INTO vehicle_image (vehicleID, vehicleImageFilePath, vehicleImageSplashFilePath ,vehicleImageThumbnailFilePath, vehicleImageMiniFilePath, mainVehicleImage, active) VALUES (%s, %s, %s, %s, %s, %s, 1); END TRANSACTION 的输出SHOW Create table vehicle_image;是: CREATE TABLE `vehicle_image` ( `vehicleImageID` int(11) NOT NULL …

2
从SSMS时间表中选择TOP N行丢失
我在数据库中使用时态表,当我在Management Studio 2017(v17.4 14.0.17213.0)中右键单击表时,在上下文菜单中没有看到`` 选择前1000行''(非时态表没有问题) ) 有什么想法如何找回此上下文菜单吗?我感觉这与我正在运行的SQL Server版本有关(SQL 13.1.4001.0 Express Edition)

4
在查询中的多个列上调用同一个表值函数的最有效方法
我正在尝试优化一个查询,其中在20列上调用了相同的表值函数(TVF)。 我所做的第一件事是将标量函数转换为内联表值函数。 是否使用CROSS APPLY最佳执行方式对查询中的多个列执行相同的功能? 一个简单的例子: SELECT Col1 = A.val ,Col2 = B.val ,Col3 = C.val --do the same for other 17 columns ,Col21 ,Col22 ,Col23 FROM t CROSS APPLY dbo.function1(Col1) A CROSS APPLY dbo.function1(Col2) B CROSS APPLY dbo.function1(Col3) C --do the same for other 17 columns 有更好的选择吗? 可以在针对X个列的多个查询中调用同一函数。 功能如下: CREATE …

3
SQL Server错误,“ FETCH语句中选项FIRST的无效用法。”
从2012年开始,SQL Server文档显示它们支持OFFSET..FETCH我尝试使用的而不是LIMIT。 以下内容在PostgreSQL中可以很好地对结果集进行采样: SELECT * FROM ( VALUES (1),(2),(3) ) AS t(x) OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY; 但是,使用SQL Server,我得到 Msg 153, Level 15, State 2, Line 4 Invalid usage of the option FIRST in the FETCH statement. 这里发生了什么?SQL Server是否支持标准化的OFFSET.. FETCH?

1
100%CPU的执行计划不正确
由于特定查询使用了错误的执行计划,我遇到了100%CPU峰值的严重问题。我现在花了数周时间自行解决。 我的资料库 我的样本数据库包含3个简化表。 [数据记录仪] CREATE TABLE [model].[DataLogger]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [ProjectID] [bigint] NULL, CONSTRAINT [PK_DataLogger] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] [变频器] CREATE TABLE [model].[Inverter]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [SerialNumber] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Inverter] …

2
SQL Server 2016企业版性能不佳
抱歉,很长,但是我想给您尽可能多的信息,以便对分析有所帮助。 我知道有几个帖子有类似的问题,但是,我已经关注了网上发布的这些帖子和其他信息,但是问题仍然存在。 我在SQL Server中遇到严重的性能问题,这使用户发疯。这个问题持续了好几年,直到2016年底由另一个实体管理,从2017年开始由我管理。 在2017年中,我能够按照Microsoft SQL Server 2012性能仪表板报告中指示的索引提示解决问题。效果是立竿见影的,听起来像魔术。在过去的日子里,几乎总是100%的处理器变得超级宁静,并且用户的反馈声也很高。甚至我们的ERP技术人员也很高兴,因为通常需要20分钟才能获得某些清单,最后他可以在几秒钟内完成。 但是,随着时间的流逝,它开始慢慢恶化。我避免创建更多索引,因为担心过多的索引会降低性能。但是在某些时候,我不得不删除那些没用的东西,并创建Performance Dashboard向我建议的新东西。但没有影响。 在ERP中进行保存和咨询时,感觉到的缓慢本质上。 我有专用于SQL Server 2016 Enterprise(64位)的Windows Server 2012 R2,具有以下配置: 处理器:Intel Xeon CPU E5-2650 v3 @ 2.30GHz 记忆体:84 GB 在存储方面,服务器具有专门用于操作系统的卷,专门用于数据的卷和专门用于日志的卷。 17个数据库 使用者: 在最大的数据库中,大约有113个用户并发连接 另外约有9位使用者 其中两个是3 + 3 其余各只有1个用户 我们有一个网站,它也为较大的数据库编写数据,但是使用情况不那么常规,应该有大约20个用户。 数据库大小: 最大的数据库有290 GB 第二大有100GB 第三大有20 GB 第四个14 GB 其余各只有3 GB以上 这是生产实例,但我们也有一个开发实例,我相信可以为此忽略它,因为在大多数情况下,我是唯一的连接对象,但是即使没有连接,该问题也会不断发生。 处理器几乎总是这样: 我们的例程在夜间运行(没有问题),而某些例程在白天运行。 …

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.