数据库管理员

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

1
为什么在唯一索引扫描后使用聚合运算符
我有一个带有唯一索引的表,该索引针对非空值进行了过滤。在查询计划中,使用了distinct。是否有一个原因? USE tempdb CREATE TABLE T1( Id INT NOT NULL IDENTITY PRIMARY KEY ,F1 INT , F2 INT ) go CREATE UNIQUE NONCLUSTERED INDEX UK_T1 ON T1 (F1,F2) WHERE F1 IS NOT NULL AND F2 IS NOT NULL GO INSERT INTO T1(f1,F2) VALUES(1,1),(1,2),(2,1) SELECT DISTINCT F1,F2 FROM T1 WHERE F1 …

3
如何通过数据库获取特定实例的CPU使用率?
我发现以下查询可按数据库检测CPU使用率,但它们显示不同的结果: WITH DB_CPU_Stats AS ( SELECT DatabaseID, DB_Name(DatabaseID) AS [DatabaseName], SUM(total_worker_time) AS [CPU_Time_Ms] FROM sys.dm_exec_query_stats AS qs CROSS APPLY ( SELECT CONVERT(int, value) AS [DatabaseID] FROM sys.dm_exec_plan_attributes(qs.plan_handle) WHERE attribute = N'dbid') AS F_DB GROUP BY DatabaseID ) SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [row_num], DatabaseName, [CPU_Time_Ms], CAST([CPU_Time_Ms] * 1.0 …

1
如何设计查询以暂停/睡眠/等待指定的时间?
我正在针对SQL Server 2000实例测试监视应用程序。如何编写需要花费指定时间的T-SQL查询?例如,大多数脚本语言都具有类似SLEEP命令的内容,该命令使您可以在指定的时间段内暂停脚本执行。我正在寻找与SQL Server 2000兼容的类似内容。这旨在测试监视应用程序的长期运行的查询阈值设置。


3
从胜负平局数据获取连胜数和连胜类型
我做了一个SQL小提琴为这个问题,是否对任何人来说都使事情变得容易。 我有一个各种各样的幻想体育数据库,我想弄清楚的是如何得出“当前连胜”数据(如“ W2”(如果该队赢得了他们的最后两场比赛)或“ L1”(如果他们输了)他们赢得上一场比赛后的最后一场比赛-如果他们并列最近的比赛,则为“ T1”)。 这是我的基本架构: CREATE TABLE FantasyTeams ( team_id BIGINT NOT NULL ) CREATE TABLE FantasyMatches( match_id BIGINT NOT NULL, home_fantasy_team_id BIGINT NOT NULL, away_fantasy_team_id BIGINT NOT NULL, fantasy_season_id BIGINT NOT NULL, fantasy_league_id BIGINT NOT NULL, fantasy_week_id BIGINT NOT NULL, winning_team_id BIGINT NULL ) 的值NULL在winning_team_id列指示该匹配领带。 这是一个DML声明示例,其中包含6个团队和3周对战的示例数据: INSERT INTO …

2
在SQL Server中,在以下情况下是否应强制执行LOOP JOIN?
通常,出于所有标准原因,我建议不要使用连接提示。但是,最近,我发现了一种模式,在该模式下,我几乎总是找到强制循环联接以提高性能。实际上,我已经开始使用并推荐它太多了,以至于我想征询他人的意见,以确保我不会错过任何东西。这是一个代表性的场景(最后生成示例的非常具体的代码): --Case 1: NO HINT SELECT S.* INTO #Results FROM #Driver AS D JOIN SampleTable AS S ON S.ID = D.ID --Case 2: LOOP JOIN HINT SELECT S.* INTO #Results FROM #Driver AS D INNER LOOP JOIN SampleTable AS S ON S.ID = D.ID SampleTable有100万行,其PK为ID。 临时表#Driver只有一列,ID,没有索引和5万行。 我一直发现以下内容: 情况1: SampleTable Hash …
15 sql-server 

4
Mac上的SQL Server
可以在OS X上安装SQL Server Engine Express Edition吗?我在家中使用MacBook,并希望将其用作SQL Server的测试/学习平台。

2
数据库所有者的特权;应用程序用户
快速版本: 我应该发出什么命令以使数据库所有者能够访问数据库中的表,并且可以通过该所有者的帐户来完成此操作吗? 较长版本: 我正在RDS上创建数据库。我有一个使用Amazon配置的“ root”用户。 Amazon自动创建具有非常特权的组角色“ rds_superuser”,但实际上不是超级用户。 我正在为应用程序创建数据库和用户,如下所示: create database master_integration; CREATE ROLE master_application LOGIN ENCRYPTED PASSWORD '...' VALID UNTIL 'infinity'; GRANT ALL ON DATABASE master_integration TO GROUP rds_superuser WITH GRANT OPTION; GRANT ALL ON DATABASE master_integration TO GROUP master_application; \c master_integration; ALTER DEFAULT PRIVILEGES GRANT INSERT, SELECT, UPDATE, DELETE, …

2
如何在SQL Server 2012上创建只读服务器角色?
创建新服务器角色时,我授予了“查看任何数据库”权限,但意识到该权限仅允许用户查看系统数据库。 我正在尝试创建一个只读服务器角色,并且可以读取任何数据库。 有没有一种方法可以创建用户定义的服务器角色来读取用户数据库?还是我必须通过每个用户的用户映射来做到这一点?

1
是否需要在非聚集索引中包含聚集索引列?
考虑到非聚集索引是基于聚集索引的,那么非聚集索引是否有必要列出聚集索引中包含的任何列? 换句话说,如果“产品”表在ProductID上包含聚集索引,则在创建非聚集索引时建议在其中包含ProductID列时,是否仍然需要将其添加为列? 如果不是,是否存在将列名添加到非聚集索引的好方案?

3
具有WHERE条件和GROUP BY的SQL查询的索引
我试图确定要用于带有WHERE条件的SQL查询的索引,GROUP BY而当前正在运行的索引非常慢。 我的查询: SELECT group_id FROM counter WHERE ts between timestamp '2014-03-02 00:00:00.0' and timestamp '2014-03-05 12:00:00.0' GROUP BY group_id 该表当前有32.000.000行。当我增加时间范围时,查询的执行时间会增加很多。 有问题的表如下所示: CREATE TABLE counter ( id bigserial PRIMARY KEY , ts timestamp NOT NULL , group_id bigint NOT NULL ); 我目前有以下索引,但是性能仍然很慢: CREATE INDEX ts_index ON counter USING btree (ts); …

3
以最少的停机时间将heroku数据库迁移到Amazon RDS
我有一个heroku postgres数据库,并想将其迁移到Amazon RDS以节省成本。有什么办法可以减少停机时间?通常,这涉及实时复制数据库,然后将复制的DB升级为主数据库。 我知道我可以使用跟随者数据库在heroku中迁移数据库,也可以使用只读副本数据库在Amazon RDS中迁移数据库。是否有类似的方法来创建位于我自己的Amazon RDS中的heroku DB的数据库复制?

1
为什么顶级数据库平台中没有无符号整数类型?
数据库通常是非常可定制的,具有不同的数据类型和自定义长度。 当我尝试寻找使用unsigned intPostgreSQL和MS SQL Server都不提供的类型的语法时,这让我感到惊讶。MySQL和Oracle似乎。 在他们看来,这似乎是一个明显的遗漏-下一个最好的perfomant选项是long / bigint(8字节整数),但可能完全不必要!有谁知道为什么他们会选择不包括本地unsigned int支持?

4
如何在维护计划作业中更改或更新本地服务器连接
两天前,我们的客户更改了我们的Dev Server名称之一 重命名服务器后,由于服务器名称不匹配,所有我的维护作业和其他作业都失败了。 我们正在使用sql server 2012版本和 Server 2008 OS 所以今天早上我将我的Sql Server 2012名称重命名为更新的给定名称,并进行了表,程序更新 我试图在维护作业中更新本地服务器连接,但是无法编辑。然后我添加了新的服务器连接,但仍无用,执行作业时出现错误。 我尝试了作业属性选项中的目标页面后,也仅选择了目标服务器,并且禁用了多个目标服务器。 错误如下 以用户身份执行:NT Service \ SQLSERVERAGENT。用于64位版权(C)Microsoft Corporation的Microsoft(R)SQL Server执行软件包实用程序版本11.0.2100.60。版权所有。 开始时间:12:01:28 AM错误:2013-12-16 00:01:43.98代码:0xC00291EC源:{410F7661-F71A-4B68-9584-BA422AB00F02}执行SQL任务 说明:无法获取连接“本地服务器连接” 。连接可能配置不正确,或者您对此连接没有正确的权限。结束错误 错误:2013-12-16 00:02:00.00 代码:0xC0024104 源:Territory_Update 说明:任务上的Execute方法返回错误代码0x80131904(建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问该服务器。请验证实例名称是否正确以及该实例名称是否正确。 SQL Server配置为允许远程连接(提供程序:命名管道提供程序,错误:40-无法打开与SQL Server的连接)。Execute方法必须成功,并使用“ out”参数指示结果。结束错误 错误:2013-12-16 00:02:15.00 代码:0xC0024104 源:{4E2AF328-0B8D-4905-83BE-839FDDEFC09C} 说明:任务上的Execute方法返回错误代码0x80131904(建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问该服务器。请验证实例名称是否正确以及该实例名称是否正确。 SQL Server配置为允许远程连接(提供程序:命名管道提供程序,错误:40-无法打开与SQL Server的连接)。Execute方法必须成功,并使用“ out”参数指示结果。 结束错误DTExec:程序包执行返回DTSER_FAILURE(1)。 开始:12:01:28 AM 完成:12 …

6
Oracle是否可以免费下载?
我是Java开发人员,目前使用PostgreSQL作为RDBMS。但是,我也想学习Oracle。那么,我可以免费下载Oracle(11g)的最新版本吗? 我找到了此链接:Oracle Database 11g第2版下载,并且似乎可以下载。但是,我知道Oracle Server是专有的。那如何运作? 此外,随Oracle 11g的下载一起提供PL / SQL吗?
15 oracle  plsql 

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.