数据库管理员

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

2
授予典型用户什么是合理的特权?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 我发现MySQL提供的特权列表有些让人不知所措。我不确定谁应该拥有什么特权。在我看来,有三种典型的用户适合我的情况: root developer application root不言自明。为此,developer该用户需要能够轻松访问任何数据库,对其进行调整等。对于初学者,我将该用户设置为以下特权集: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON application有一个更有限的设置。它应该仅限于处理特定的数据库。 我不确定要授予什么合理的特权。授予开发人员和应用程序合理的特权集是什么?为什么?

2
PostgreSQL:如何列出访问特定表的所有存储函数
介绍: PostgreSQL数据库具有数百种存储的功能,包括过时的,未使用的等。 问题 我需要找出与表X有任何关系的所有存储函数-因为我想更改表结构。其中一些可能不会被使用,因此仅浏览代码就无法做到这一点。 我拥有ATM的解决方案正在运行psql \df+和grepping输出,但是我更喜欢类似数据库的解决方案,即使用信息模式。这绝对是一个重复的任务,我希望它干净整洁。 有什么建议?

3
使用CASE选择UPDATE查询中的列?
我可以CASE用来选择要在SELECT查询(Postgres)中显示的列,如下所示: SELECT CASE WHEN val = 0 THEN column_x WHEN val = 1 THEN column_y ELSE 0 END AS update, ... UPDATE在Postgres中执行查询时(即选择应更新哪些列),是否有可能完全相似?我假设没有,因为我对此一无所获,但是也许有人有一个聪明的选择(除了使用过程,还是使用CASE来更新每个列,以确定是应该为该列的值分配一个新值还是简单地重新分配现有值)值)。如果没有简单的选择,我当然也会接受。 额外信息:在我的情况下,我有14列可能要更新的列,每个匹配的行仅更新一个(要更新的表在查询中与另一个连接)。要更新的行数很可能会有所不同,可能是数十行或数百行。我相信加入条件的索引已经到位。

3
什么是SQL Server中的ERROR_STATE()?如何使用它?
我读到这ERROR_STATE()可以帮助区分源代码中可能发生相同类型错误的不同状态/位置。但是对我来说,真的不清楚如何使用它。 MSDN指出: ERROR_STATE() 返回导致运行TRY…CATCH构造的CATCH块的错误的状态号。 如何才能真正使用它?可以给我一个例子吗,本参考文章中提供的例子并不能帮助我很好地解释事情吗?

2
如何在MySQL中正确实现乐观锁定
如何正确地在MySQL中实现乐观锁定? 我们的小组推断出我们必须执行下面的#4,否则就有另一个线程可以更新相同版本的记录的风险,但是我们想验证这是最好的方法。 在要使用乐观锁定的表上创建一个版本字段,例如列名=“ version” 在选择时,确保包括版本列并记下版本 在对记录进行后续更新时,更新语句应发出“ where version = X”,其中X是我们在#2中收到的版本,并将该更新语句中的version字段设置为X + 1 SELECT FOR UPDATE对我们将要更新的记录执行a ,以便我们序列化可以更改我们要更新的记录的人员。 为了澄清起见,我们试图防止两个线程在同一时间窗口中选择同一条记录(如果它们试图同时更新记录)在它们捕获相同版本的记录时彼此覆盖,因此它们将无法覆盖彼此。我们认为,除非我们执行#4,否则如果两个线程同时输入各自的事务(但尚未发布其更新),则有机会在它们进行更新时,将使用UPDATE的第二个线程...其中version = X将对旧数据进行操作。 我们是否正确地认为即使使用版本字段/乐观锁定,更新时也必须执行这种悲观锁定?
13 mysql  locking 

4
“ View Server状态”对安全性和性能的影响
该问题指出,各种DMV(动态管理视图)都需要“查看服务器状态”权限,但是我找不到任何关于您要做什么和不希望授予该权限的信息。 现在,我当然理解了“最低权限”,以及为什么不想将其授予任何人,但是我找不到有关如何评估是否应该授予它的指导。 因此,我的问题是:授予用户“查看服务器状态”权限对安全性和性能有何影响?他们该怎么做,也许不应该允许他们做... 更新:一种暗示是用户将能够使用DMV查看查询。如果查询或查询参数可以包含用户否则无法看到的机密信息,则允许VIEW SERVER STATE可以使他们这样做(即dob =或ssn =)。
13 sql-server 

4
“任务管理器”过程正在接管单用户模式的数据库。它是什么?
这是我对stackoverflow提出的问题的重复,但是我被告知,这里的某个人可能会对发生的事情有更好的了解。 我有一个零星的问题,当使用.NET SqlConnection在单用户模式下升级SQL Server时,某些其他应用程序在执行SQL代码时以某种方式登录到数据库中,并把我的过程踢了出去。SqlConnection不会以任何方式关闭或处置。但是某些其他应用程序最终以某种方式最终连接到数据库,这将我踢出连接。 运行sp_who时,我可以看到控制数据库的进程是Command =“ TASK MANAGER”。 任何人都可以告诉我这个过程是什么,它的目的是什么,以及它如何进入一个单用户模式且有活动连接的数据库?

1
我对Merge语句的锁定选项是什么?
我有一个执行MERGE语句的存储过程。 似乎在执行合并时默认情况下会锁定整个表。 我正在事务内调用此存储过程,在该事务中我还在做其他一些事情,但愿它只会锁定受影响的行。 我尝试了提示MERGE INTO myTable WITH (READPAST),但似乎锁得少了。但是ms doc中有一个警告,说它可以插入重复的键,甚至绕过主键。 这是我的表架构: CREATE TABLE StudentDetails ( StudentID INTEGER PRIMARY KEY, StudentName VARCHAR(15) ) GO INSERT INTO StudentDetails VALUES(1,'WANG') INSERT INTO StudentDetails VALUES(2,'JOHNSON') GO CREATE TABLE StudentTotalMarks ( Id INT IDENTITY PRIMARY KEY, StudentID INTEGER REFERENCES StudentDetails, StudentMarks INTEGER ) GO INSERT INTO …


2
如何在mongodb连接uri上分别指定身份验证数据库和目标数据库?
我使用这个连接URI来连接到MongoDB的:mongodb://user:password@localhost/admin。它将admin用作机器人身份验证和目标数据库。如何使uri admin用作身份验证,但允许我连接到其他数据库?请以下面的命令为例: mongo --host localhost -u user -p password --authentication admin test 上面的命令将用作admin身份验证数据库,但连接到test数据库。如何在uri上做同样的事情?

2
如何在PostgreSQL中使DISTINCT ON更快?
我station_logs在PostgreSQL 9.6数据库中有一个表: Column | Type | ---------------+-----------------------------+ id | bigint | bigserial station_id | integer | not null submitted_at | timestamp without time zone | level_sensor | double precision | Indexes: "station_logs_pkey" PRIMARY KEY, btree (id) "uniq_sid_sat" UNIQUE CONSTRAINT, btree (station_id, submitted_at) 我试图为每个获取level_sensor基于的最后一个值。大约有400个唯一值,每天每个大约2万行。submitted_atstation_idstation_idstation_id 创建索引之前: EXPLAIN ANALYZE SELECT DISTINCT ON(station_id) station_id, …

1
MySQL:事务会锁定行吗?
我以前没有尝试过使用MySQL事务,我只是想澄清一下。 如果两个用户在非常精确的时间执行查询,MySQL将如何处理呢?例如,用户正在尝试更新记录。 user1:更新表集column = column-4,其中column_id = 1; user2:更新表集column = column-7,其中column_id = 1; 现在,如果我使用事务,MySQL是否会选择首先执行哪个查询并锁定第二个用户,直到提交第一个查询?是表锁还是行锁? 如果第三位用户发出选择声明怎么办?MySQL将返回什么值? PS这将在Innodb上。


4
无法创建SSISDB目录
尝试在sql server 2014集成服务中创建目录时出现以下错误。知道我在安装或其他地方错过了什么吗? 无法访问目录备份文件“ C:\ Program Files \ Microsoft SQL Server \ 120 \ DTS \ Binn \ SSISDBBackup.bak”。确保数据库文件存在,并且SQL Server服务帐户能够访问它(Microsoft.SqlServer.IntegrationServices.Common.ObjectModel)


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.