sql server 2000,如何锁定一张表?

joejoe1991 2010-04-24 10:17:38
我想把库中的一张表锁定,任何人不允许查询里面的数据 。
怎么做呢?
谢谢。。。
...全文
214 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sujiying 2010-10-19
  • 打赏
  • 举报
回复
学习一下 。。。
mingcsharp 2010-04-25
  • 打赏
  • 举报
回复
学习一下了
yujunlin32167 2010-04-25
  • 打赏
  • 举报
回复
10分走人
nalnait 2010-04-25
  • 打赏
  • 举报
回复
http://www.keyongtech.com/2202593-assign-permissions-to-allow-updates


你可以参考下,不过最好是用其他方式去处理了
永生天地 2010-04-25
  • 打赏
  • 举报
回复
锁不住
htl258_Tony 2010-04-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 joejoe1991 的回复:]
引用 10 楼 htl258 的回复:

SQL code
DECLARE @TBNAME SYSNAME,@S NVARCHAR(4000)
SET @TBNAME='tb'
SELECT @S=ISNULL(@S+';','')+'DENY SELECT ON ['+@TBNAME+'] TO ['+NAME+']'
FROM [MASTER].[SYS].[LOGIN_TOKEN……
[/Quote]没有那样锁过,不好明确回答你。等高手吧
joejoe1991 2010-04-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 htl258 的回复:]

SQL code
DECLARE @TBNAME SYSNAME,@S NVARCHAR(4000)
SET @TBNAME='tb'
SELECT @S=ISNULL(@S+';','')+'DENY SELECT ON ['+@TBNAME+'] TO ['+NAME+']'
FROM [MASTER].[SYS].[LOGIN_TOKEN]
EXEC(@S)
多的话可以用这个做批量授权
……
[/Quote]
意思就是只能把select权限去掉,而不能做到锁定表?
htl258_Tony 2010-04-24
  • 打赏
  • 举报
回复
DECLARE @TBNAME SYSNAME,@S NVARCHAR(4000)
SET @TBNAME='tb'
SELECT @S=ISNULL(@S+';','')+'DENY SELECT ON ['+@TBNAME+'] TO ['+NAME+']'
FROM [MASTER].[SYS].[LOGIN_TOKEN]
EXEC(@S)
多的话可以用这个做批量授权
joejoe1991 2010-04-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 htl258 的回复:]

引用 3 楼 joejoe1991 的回复:
貌似治标不治本哪 , 万一用了一个别的用户呢?
用户很多吗,不多就都设。
[/Quote]
很多。。
hlw881008 2010-04-24
  • 打赏
  • 举报
回复
1 如何锁一个表的某一行

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SELECT * FROM table ROWLOCK WHERE id = 1

2 锁定数据库的一个表

SELECT * FROM table WITH (HOLDLOCK)

加锁语句:
sybase:
update 表 set col1=col1 where 1=0 ;
MSSQL:
select col1 from 表 (tablockx) where 1=0 ;
oracle:
LOCK TABLE 表 IN EXCLUSIVE MODE ;
加锁后其它人不可操作,直到加锁用户解锁,用commit或rollback解锁

htl258_Tony 2010-04-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fredrickhu 的回复:]
SQL code
SQL code
1 如何锁一个表的某一行

A 连接中执行

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

begin tran

select * from tablename with (rowlock) where id=3

waitfor delay '00:00:05'

commit……
[/Quote]贴错了,此锁非彼锁
--小F-- 2010-04-24
  • 打赏
  • 举报
回复
SQL code 
1 如何锁一个表的某一行

A 连接中执行

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

begin tran

select * from tablename with (rowlock) where id=3

waitfor delay '00:00:05'

commit tran

B连接中如果执行

update tablename set colname='10' where id=3 --则要等待5秒

update tablename set colname='10' where id<>3 --可立即执行

2 锁定数据库的一个表

SELECT * FROM table WITH (HOLDLOCK)


注意: 锁定数据库的一个表的区别

SELECT * FROM table WITH (HOLDLOCK)
其他事务可以读取表,但不能更新删除

SELECT * FROM table WITH (TABLOCKX)
其他事务不能读取表,更新和删除



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fredrickhu/archive/2009/09/21/4574867.aspx
我是小数位 2010-04-24
  • 打赏
  • 举报
回复
抢个位置,留个名!
htl258_Tony 2010-04-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 joejoe1991 的回复:]
貌似治标不治本哪 , 万一用了一个别的用户呢?
[/Quote]用户很多吗,不多就都设。
joejoe1991 2010-04-24
  • 打赏
  • 举报
回复
貌似治标不治本哪 , 万一用了一个别的用户呢?
shizheyangde 2010-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 htl258 的回复:]
SQL code
DENY SELECT ON tb TO username
[/Quote]
就是快吧
htl258_Tony 2010-04-24
  • 打赏
  • 举报
回复
DENY SELECT ON tb TO username
feixianxxx 2010-04-24
  • 打赏
  • 举报
回复
帮忙UP

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧