sqlserver 怎么查询哪个用户再用哪个不在用
时间: 2023-08-29 17:04:54 浏览: 49
在 SQL Server 中,可以通过查询系统视图来获取当前登录和不活动的用户信息。以下是一种常用的方法:
1. 查询当前登录用户:
```sql
SELECT name AS '当前登录用户'
FROM sys.syslogins
WHERE islogin = 1
```
该查询会返回当前正在登录的用户的名称。
2. 查询不活动用户:
```sql
SELECT name AS '不活动用户'
FROM sys.syslogins
WHERE islogin = 1 AND (sys.syslogins.isntuser = 1 OR sys.syslogins.isntname = 1)
AND sys.syslogins.sid NOT IN (SELECT sid FROM sys.sysprocesses WHERE dbid > 0)
```
该查询会返回当前不活动的用户的名称。
需要注意的是,以上查询语句仅查询登录级别的用户,而不包括数据库级别的用户。如果需要查询数据库级别的用户,请使用相应的系统视图,如 sys.database_principals。此外,在查询之前,确保具有足够的权限来访问相关系统视图。
相关问题
在SQL Server中创建用户对表有查询但不能修改
在 SQL Server 中,可以通过以下步骤创建一个用户,使其能够查询表但不能修改表:
1. 创建一个新的登录名(login name):
```
CREATE LOGIN [username] WITH PASSWORD = 'password';
```
2. 创建一个新的数据库用户,并将其与登录名关联:
```
USE [database_name];
CREATE USER [username] FOR LOGIN [username];
```
3. 授予用户查询表的权限:
```
GRANT SELECT ON [schema_name].[table_name] TO [username];
```
4. 拒绝用户修改表的权限:
```
DENY UPDATE ON [schema_name].[table_name] TO [username];
```
请注意,以上步骤中的 [username],[database_name],[schema_name] 和 [table_name] 都应替换为实际的用户名、数据库名、架构名和表名。
sql server查看是哪个用户删除表
要查看是哪个用户删除了表,需要通过SQL Server日志来查询。SQL Server日志是记录SQL Server系统日志和查询活动的日志。通过查询SQL Server日志,我们可以找到删除表的时间、删除者的用户名以及其他相关信息。
下面是查询步骤:
1. 打开SQL Server Management Studio,连接到目标实例。
2. 在“对象资源管理器”中,右键单击目标数据库,选择“属性”选项。
3. 在“属性”对话框中,选择“事件属性”页签。
4. 在“事件属性”页签下,将“日志级别”设置为“详细”。
5. 点击“确定”按钮进行保存。
6. 在“SQL Server管理对象资源”窗口中,展开数据库,选择“管理”,再选择“查看SQL Server日志”来打开SQL Server日志。
7. 在SQL Server日志中,找到“Object: <table_name> (ID:<table_id>)的删除”这个事件。
8. 在事件中,可以查看删除者的登录名、计算机名、时间等详细信息。
通过以上步骤,就可以找到删除表的用户信息了。需要注意的是,SQL Server日志可能会被清除、压缩或者过期,所以及时备份日志非常重要。