我有一个数据库用户——比如说“x”——我想知道有多少 Windows(桌面)用户正在使用这个数据库用户(who2 或 who 只给出当前结果,我想知道整个历史) ?
实际上,当您加入任何新组织并且您不知道有多少 Windows 或桌面用户在使用特定数据库用户时,就会出现这个问题。有没有办法知道这一点?您如何跟踪使用此 (x) 用户凭据的所有 Windows 用户?
有没有办法区分系统角色/用户和用户定义的角色/用户?作为系统角色/用户,我了解在创建数据库时隐式安装/分配的角色/用户。作为用户定义的角色/用户,我理解之后“手动”创建的角色/用户。
我发现的唯一方法是查看结果
select * from sys.database_principals order by create_date, is_fixed_role desc
Run Code Online (Sandbox Code Playgroud)
或者通过将结果与新创建的数据库进行比较。还有其他方法吗?
我正在尝试迁移数据库,并且与数据库一起,我还尝试迁移用户而无需重新映射用户。我试图用旧的服务器 SID 重新创建 Windows 用户。这可能吗?我有一个我一直在尝试使用的代码示例,但 SQL 给了我一个不正确的语法错误。
询问:
USE [master]
GO
CREATE LOGIN [domain\ntuser] FROM WINDOWS
WITH
DEFAULT_DATABASE=[master],
SID=0x01000000000000000000000000000000000000000000000000000000;
GO
Run Code Online (Sandbox Code Playgroud)
错误:
Msg 102, Level 15, State 1, Line 6
Incorrect syntax near '0x01000000000000000000000000000000000000000000000000000000'.
Run Code Online (Sandbox Code Playgroud) 我们的组织聘请第三方公司对我们的数据库进行维护。老实说,目前他们充当我们的 DBA,因为我们没有 DBA。
为了进行维护工作,他们使用的是 SA 用户。
有没有办法让他们成为他们可以使用的新用户,在不实际查看数据的情况下执行所有管理操作。因此,他们可以看到所有表和列,但他们将无法看到任何行。
如果我遗漏了什么,请随时启发我,因为我的 DBA 知识相当贫乏。
我在服务器级别创建了一个名为 TestUser 的登录用户,该用户分配给只读角色,现在我需要为 MyDb 上的 TestUser 登录创建一个用户
USE [MyDB]
GO
CREATE USER [Test] FOR LOGIN [TestUser]
GO
GRANT SELECT TO [Test]
GO
DENY DELETE TO [Test]
GO
DENY INSERT TO [Test]
GO
DENY UPDATE TO [Test]
GO
Run Code Online (Sandbox Code Playgroud)
一切都很好,但是当我编写测试用户创建的脚本时,我在任何地方都看不到我提供选择和拒绝插入、删除和更新的脚本
如主题中所述,当与我一起工作的开发人员创建存储过程时,正在创建新用户和架构。最初我为该开发人员分别创建了一个用户和登录名,但后来都删除了。但是,每当他们运行脚本来创建 SP 时,都会重新创建以他们的 Active Directory 名称命名的用户和架构,并将 SP 放置在该“新”架构中。
即使我删除了 SP、用户和架构,如果他们再次创建 SP,用户和架构也会回来。
有没有人对此有任何见解?
来宾用户在我们的用户数据库上被禁用,但数据安全人员希望我们也在系统数据库上禁用它。我应该这样做吗?
我有一个数据库,它将在不同用户的多种相关类型的应用程序之间共享。我希望能够限制每个数据库用户基本上可以完全控制他们自己的对象,而只能对他们没有创建的数据库的其他对象进行读取访问。
这是可能的,实现这一目标的最佳方法是什么?
我正在对我们的开发数据库进行干净的备份,以便轻松地重新启动数据库。该数据库有大约 200 个测试用户,应该将其删除以使其真正干净,但问题是我无法删除其中任何一个。
当我运行如下命令时:
DROP USER [MyGarbageUser]
Run Code Online (Sandbox Code Playgroud)
它提示我以下错误:
消息 15284,级别 16,状态 1,第 5 行 数据库主体已授予或拒绝对数据库中的对象的权限,无法删除。
这些用户既不拥有该数据库中的任何对象(据我所知),也不应该拥有。在网上搜索了一大堆后,我仍然无法找到解决方案。
如何强制从该数据库中删除 MyGarbageUser?
我在 SQL SERVER 2008 上,
我想为特定用户启用 SQL 代理,该用户只有对数据库的读取访问权限。我不想给 sysadmin 角色?
有什么办法,我可以做到吗?
我在创建 Oracle 10.2.0.4 实例和从其他环境导入转储时遇到问题。我在 AIX 下使用 Oracle。
我使用了 ksh 脚本,除了创建用户外,一切正常。
之后我创建了默认用户,用于连接到数据库和其他工作模块。尝试导入转储时出现问题。
export ORACLE_SID=HISTO;
sqlplus / as sysdba
CREATE USER ANC IDENTIFIED BY "xxxxxxx";
grant connect, create session, imp_full_database to ANC;
commit;
Run Code Online (Sandbox Code Playgroud)
尝试导入 de dump 时的错误如下。
用于加载转储的命令:nohup impdp ANC/xxxxxx DIRECTORY=MIG11G DUMPFILE=dump_histo.expdp LOGFILE=impdp_29102013.log schemas=HISTO &
nohup.out 文件的输出:
Import: Release 10.2.0.4.0 - 64bit Production on Lundi, 23 Décembre, 2013 18:51:22
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With …Run Code Online (Sandbox Code Playgroud) 我的 mysql 服务器有 2 个用户 -
root
robb
Run Code Online (Sandbox Code Playgroud)
但是当我尝试用另一个用户登录时,让我输入密码 -
hussain@magic-laptop:~$ mysql -u jon -p
Enter password:
Run Code Online (Sandbox Code Playgroud)
它不应该给出一个错误说user: jon donesn't exist吗?
我目前正在构建一个包含许多用户、两个角色和两个组的应用程序。从逻辑上讲,我们希望用户能够成为两个组内其他用户的管理员。
用户表
UserID varchar PK
DisplayName
Email
Role int FK `role`.`RoleID`
DATA [jschmo,Joe Schmo,joe@schmo.com,1]
Run Code Online (Sandbox Code Playgroud)
角色表
RoleID int PK AI
RoleName varchar
DATA [1=Master,2=Admin,3=User]
Run Code Online (Sandbox Code Playgroud)
组表
GroupID int PK AI
GroupName
DATA [1=Marketing,2=Infrastructure]
Run Code Online (Sandbox Code Playgroud)
用户可能是两个组的管理员。我没有看到多选外键的选项,但据我了解,在列中使用逗号分隔的列表是一个坏主意,我应该使用多条记录,但我不喜欢拥有多条记录的想法对于每个用户。
问:我如何跟踪用户是哪些组的管理员?
users ×13
sql-server ×9
role ×3
delete ×1
impdp ×1
logins ×1
migration ×1
mysql ×1
oracle-10g ×1
permissions ×1
schema ×1
security ×1
t-sql ×1