数据库管理员

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

2
Windows 10上的SQL Server 2000
我需要在Windows 10上安装SQL Server MSDE 2000 SP4。 我还有其他运行Windows 7和8.1的计算机,SQL Server MSDE 2000正常运行(也配置了合并复制)。 现在,我在Windows 10上测试了相同的场景,但是安装在安装过程中意外关闭。 我知道此版本非常旧,但是是否有解决方法将其安装在Windows 10上?


2
基于时间戳的窗口偏移
我正在编写一个查询,该查询将用于分页社交Feed的结果。这个概念是移动应用程序将请求N个项目,并提供一个我在@CutoffTime下面称为的开始日期时间。截止时间的目的是确定何时应启动分页窗口。我们使用时间戳而不是行偏移量的原因是,即使添加了新的社交内容,时间戳也会使我们在获取较旧的帖子时从一致的位置进行分页。 由于社交Feed可以来自您自己或您的朋友,因此我使用UNION来合并这两个组的结果。最初,我尝试了TheQuery_CTE不使用的逻辑UNION,这太慢了。 这是我所做的(包括相关的表架构): CREATE TABLE [Content].[Photo] ( [PhotoId] INT NOT NULL PRIMARY KEY IDENTITY (1, 1), [Key] UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(), [FullResolutionUrl] NVARCHAR(255) NOT NULL, [Description] NVARCHAR(255) NULL, [Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(), ); CREATE TABLE [Content].[UserPhotoAssociation] ( [PhotoId] INT NOT NULL, [UserId] INT NOT NULL, [ShowInSocialFeed] BIT …

2
启用S​​QL Server全文索引后更新查询的速度变慢
我有一个asp.net网站,其中有许多针对我的数据库运行的插入,更新和删除查询。 几天前,我在一个表的两列上创建了全文索引。之后,我意识到当网站在该表上运行更新查询时,SQL Server进程的内存和磁盘使用率正在跳跃,更新速度变慢。在创建全文索引之前,查询运行没有任何性能问题。 我还意识到以前非常简单的更新查询现在变得很复杂,因为执行计划现在具有全文索引更新之类的功能。这是新的执行计划的一部分,该计划在启用全文本后变得很复杂: 在更新网站内容的几个小时中,我运行了5000个更新查询,并且我认为每次为每行完成全文索引过程。 我应该在开始更新行时禁用全文本扫描,然后重新启用它(如此相关问题所示)吗? 我可以告诉SQL Server在5分钟内停止全文索引编制,然后开始对新数据编制索引吗? 有更好的选择吗?我正在使用SQL Server 2012。

1
何时在\ l中列出特权,何时不列出?
\ l何时列出访问特权,什么时候不列出?\ l列出的访问权限可以在授予并撤消后更改: $ createuser -EP my_readonly $ psql development development=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------------------------+----------+----------+-------------+-------------+----------------------- development | vagrant | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | ... development=# grant usage on schema public to my_readonly; development=# grant connect …

2
TDE准备:用于还原的密钥/证书备份
我正在开发环境中工作,以更好地了解TDE加密。我让它与另一台服务器上的备份和还原一起工作。有几个问题,我知道我需要使用相应的私钥来备份证书。 USE master; GO BACKUP CERTIFICATE Test TO FILE = 'C:\Test.cer' WITH PRIVATE KEY (FILE = 'C:\Test.pvk', ENCRYPTION BY PASSWORD = 'Example12#') 发生故障时,需要在新服务器上移动/还原这些文件。如果需要还原到另一台服务器,还需要从源服务器备份什么呢? 还有关于私钥存储的建议吗?目前,我的想法是将证书,私钥和密码备份到KeePass数据库中,该数据库将单独备份并在异地复制。 但这留下了将KeePass私钥备份到哪里的问题?

2
在订单表中存储帐单地址最佳做法
有人可以帮助我了解此用户对CustomerLocation表的回答。我真的想要一种在订单表中存储地址的好方法。 我要寻找的是如何设置地址,以便在编辑地址时,订单不会受到客户更新其地址或重新安置地址的影响。 就目前而言,我的架构类似于: Person |EntityID| EntityAddress |EntityID|AddressID| Address |AddressID|AddressType|AddressLine1|AddressLine2| Order |OrderID|BillingAddressID|

2
为什么会出现async_network_io等待类型?
上周,我们的数据库发生了一些奇怪的事情。突然,该应用程序对无法保存新实体等的用户阻止了。在查看了SQL Server的活动监视器(带有兼容模式2005的2008)之后,我看到了以下三个条目: 一段时间后,用户获得连接超时。当我杀死进程64时,它们可以再次正常保存。 问题在于,即使有代码可以防止这种情况发生,他们试图在块中保存的实体也多次插入数据库(最多3次)(数字列必须唯一但没有约束) ...检查发生在代码中)。 我们使用实体框架6.0。 你们谁知道为什么和何时出现这些ASYNC_NETWORK_IO等待类型,以及如何避免它们? 它们到底是什么意思?

3
为什么不分区?
什么时候不希望对数据库进行分区?(考虑MySQL分区) 就我而言 我将从几百万行开始,应该从那里开始。 字符字段上的主键用作最频繁的查询约束(并且查找也很频繁-至少每秒几次)。 主键将被散列为分区键 将对上述频繁查询中提取的每一行进行更新 频率较低的查询(针对日期列或其他查询)将需要访问所有分区 即使到最后一点,查找也不是并行运行的,因此在所有情况下,这都是胜利吗?分区的不利之处是什么?为什么至少在查看百万条记录时,每个人都默认不使用它? 更新-我选择了zgguy的答案,但请注意,我在自己的研究结果中添加了自己的答案,其中包括指向对我非常有用的类似问题的非常好的答案的链接。

3
PostgreSQL可以在索引中使用空值吗?
我读过这本书说 数据库假定Indexed_Col IS NOT NULL覆盖的范围太大而无用,因此数据库不会从这种情况驱动到索引。 我认识到这本书已有十多年的历史了,但是它已经被证明是非常有用的-使用从书页中收集到的指令,我将查询速度提高了十倍。 此外,在运行EXPLAIN ANALYZE上一SELECT查询,我发现没有我的指标正在使用,所有的权利,即使他们应该是。 因此,我的问题是: 假设有一个表包含一个列,该列的列定义包括“ NOT NULL”,并且存在一个覆盖该列的索引,那么该索引是否可以用于该表的查询中,该列是查询的一部分? 喜欢: CREATE TABLE my_table( a varchar NOT NULL ); CREATE INDEX ix_my_table ON my_table(a); SELECT a from my_table;

1
为什么我的Azure SQL Server这么慢?
当前,我们有一个功能很差的虚拟机,并建议迁移到具有更好规格的Azure VM。问题是,即使Azure VM具有更高的规格,它也比原始VM慢得多。 原始服务器是具有2GB内存的2核VM,它也是Web服务器。它正在运行Microsoft SQL Server Web Edition 2008 R2,并且由于该服务器还用于其他用途,因此我们不得不将SQL Server中的最大服务器内存限制为512MB。 新服务器是具有7GB内存的4核VM,仅是数据库服务器。它正在运行Microsoft SQL Server Standard Edition 2008 R2,并且我们没有限制SQL Server可以使用的内存量。 这是在镜像环境中设置的两台服务器之一,但是我正在运行测试的数据库未镜像。目前,该服务器上的其他数据库通信量不大(实际上,在我运行这些测试时,活动监视器未显示其他DB上的活动)。 我确实意识到Azure VM的一个问题是硬盘驱动器是一种网络资源,因此这将成为速度下降的根源,但是即使IO统计数据中显示了0次物理读取,它仍然会变慢。 我已在Azure VM 上遵循此页面上的调优建议,包括剥离磁盘(每个驱动器两个磁盘)并将日志和数据文件放在单独的驱动器上。 我唯一没有做的事情就是启用页面压缩,限制数据库的自动增长以及将SQL Server错误日志和跟踪文件目录移动到数据磁盘。我也没有在旧服务器上做到这一点。 旧服务器没有完成任何调优,并且日志和数据文件位于未分割的同一驱动器上。 当前服务器上的数据库为65 GB(45个数据和20个日志),这太大了,无法传输到新服务器,因此我正在较小的DB(6个数据和13.5日志)上进行测试 这是旧服务器上的结果,CPU time = 1311 ms, elapsed time = 1057 ms.新服务器上CPU time = 1281 ms, elapsed time = 2525 ms. 的结果是。这只是一次运行,但是结果代表了我通常看到的内容。 …

1
为什么在此查询中不使用主键(集群键)?
我有一个SQL Server 2008 R2表,其表结构如下所示: CREATE TABLE [dbo].[CDSIM_BE] ( [ID] [bigint] NOT NULL, [EquipmentID] [varchar](50) NOT NULL, [SerialNumber] [varchar](50) NULL, [PyrID] [varchar](50) NULL, [MeasMode] [varchar](50) NULL, [ReadTime] [datetime] NOT NULL, [SubID] [varchar](15) NULL, [ProbePosition] [float] NULL, [DataPoint] [int] NULL, CONSTRAINT [PK_CDSIM_BE] PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] ASC) WITH …

3
谁创建了程序?(SQL Server 2008 R2)
有没有办法列出谁在SQL Server 2008中创建了某些过程? 在此SO链接中有一些答案,但来自6年之前。 我知道写下您的姓名和日期,然后开始创建程序是最好的做法,但是我在工作的地方看不到它。 如果没有办法执行此任务,是否可以使用触发器来完成此任务? 还有一个奖金问题。这是dba的工作吗?知道是谁创造的? 非常感谢你。

1
查询计划更改SQL Server 2014中的性能更差
我们最近将服务器从SQL Server 2008R2升级到SQL Server2014。我们在2008R2中运行良好,但现在在2014年运行速度慢得令人难以置信,执行计划也很差。 我已经做了几次测试... 将2014 DB切换回2008/2012兼容模式。 使用分页测试查询。 两者都导致查询运行与SQL Server 2008R2相同,并且运行速度很快。 为什么计划如此糟糕,并且查询在SQL Server 2014中运行了这么长时间? 此图显示了2个查询,一个查询使用它在2008R2中运行的行号,然后第二个是分页修复。两者都在2014年运行,但都非常不同,但是在2008年,我们看到的效果与2014年使用分页时相同。

3
为SQL Server和NUMA配置RAM
偶然的数据库管理员在这里。 题: 即使该服务器的唯一目的仅是为SQL Server数据库引擎提供服务,您是否仍会手动限制SQL Server的最大RAM? 我有Microsoft Windows 2012 R2 Server,SQL Server 2012 Std,32GB RAM。 管理员不断登录到SQL Server,以使用其控制台和所有控制台。 其次,如何检查此Windows服务器是否启用了NUMA?

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.