Skip to content
0

SQL Server 新增用户并且只让看见特定的数据

sql
--创建一个 SQL Server 身份验证的登录名
CREATE LOGIN 登录名
WITH PASSWORD = '设置密码';

-- 切换到你希望授权的特定数据库
USE 指定数据库名称;
GO

-- 在该数据库中创建与登录名关联的用户
CREATE USER 上面设定的登录名 FOR LOGIN 上面设定的登录名;

-- 将用户添加到 db_owner 数据库角色
ALTER ROLE [db_owner] ADD MEMBER 上面设定的登录名;

use master
ALTER LOGIN 上面设定的登录名 WITH DEFAULT_DATABASE = 指定数据库名称;

USE [master];
GO
deny VIEW ANY DATABASE TO 上面设定的登录名;

-- 另一个方案

--创建测试数据库
Create database Test;
USE master
GO
--通过sp_addlogin创建登录名
--TestUser:用户登陆账号
--Test123456:用户登陆密码
execute sp_addlogin 'TestUser','Test123456'
--在数据库Test里创建数据库TestUser账号
--每一个TestUser为登陆名
--第二个TestUser为数据库账号
execute sp_grantdbaccess 'TestUser','TestUser'
--将TestUser账号添加到数据库角色为数据库所有者
execute sp_addrolemember 'db_owner','TestUser'

USE master
GO
--将所有数据库的查看权限给Public角色,每个登录用户只能查看指定的数据库
--此语句会导致服务器上所有的用户在没有设置数据库权限的情况下不会显示任何数据库,
--有可能会影响正常使用
DENY VIEW any DATABASE TO PUBLIC;
--将数据库Test的所有权给TestUser用户
--TestUser用户可以查看并访问Test数据库
ALTER AUTHORIZATION ON DATABASE::Test TO TestUser

上次更新时间:

最近更新