22,207
社区成员
发帖
与我相关
我的任务
分享
------------ 1. 创建测试表、测试数据、测试视图 begin
USE tempdb
GO
IF OBJECT_ID('view_t') IS NOT NULL DROP TABLE view_t
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(
userId INT IDENTITY(1,1) PRIMARY KEY,
age INT,
remark NVARCHAR(20)
)
GO
INSERT INTO t (age,remark) VALUES(20,'小个子')
INSERT INTO t (age,remark) VALUES(30,'小个子')
INSERT INTO t (age,remark) VALUES(50,'大个子')
INSERT INTO t (age,remark) VALUES(52,'中个子')
go
CREATE VIEW view_t
AS
SELECT userId,age FROM t WHERE age>50
GO
------------ 创建测试表、测试数据、测试视图 end
------------ 2. 创建账号
USE [master]
GO
CREATE LOGIN [testLogin] WITH PASSWORD=N'test', DEFAULT_DATABASE=[tempdb], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE tempdb --这里只是作为测试库, 实际用的时库名你要改过来
GO
CREATE USER [testLogin] FOR LOGIN [testLogin]
GO
GRANT SELECT ON view_t TO testLogin
GO
---------- 3. 重开窗口, 以测试账号 testLogin 登录进入
SELECT * FROM view_t
/*
userId age
4 52
*/
SELECT * FROM t
/*
消息 229,级别 14,状态 5,第 3 行
拒绝了对对象 't' (数据库 'tempdb',架构 'dbo')的 SELECT 权限。
*/
CREATE VIEW dbo.v1
AS
SELECT * FROM usertable WHERE age>50
GO
GRANT SELECT ON dbo.v1 TO 用户;