--1 赋予jrzsfc账号对所有用户表select,insert,update,delete权限
DECLARE ACUR CURSOR FOR
SELECT name FROM SYSOBJECTS WHERE TYPE='U'
DECLARE @NAME VARCHAR(100)
DECLARE @SQL VARCHAR(512)
OPEN ACUR
FETCH NEXT FROM ACUR INTO @NAME
WHILE @@fetch_status=0
BEGIN
EXEC ('grant select,insert,delete,update ON ['+ @NAME+'] TO jrzsfc;')
FETCH NEXT FROM ACUR INTO @NAME
END
CLOSE ACUR
DEALLOCATE ACUR
--2 赋予jrzsfc对所有用户视图select,insert,update,delete权限
DECLARE ACUR CURSOR FOR
SELECT name FROM SYSOBJECTS WHERE TYPE='V' and status>0
DECLARE @NAME VARCHAR(100)
DECLARE @SQL VARCHAR(512)
OPEN ACUR
FETCH NEXT FROM ACUR INTO @NAME
WHILE @@fetch_status=0
BEGIN
EXEC ('grant select,insert,delete,update ON ['+ @NAME+'] TO jrzsfc;')
FETCH NEXT FROM ACUR INTO @NAME
END
CLOSE ACUR
DEALLOCATE ACUR
--3 赋予jrzsfc对所有procedure execute权限,剔除系统存储过程
DECLARE ACUR CURSOR FOR
SELECT name FROM SYSOBJECTS WHERE TYPE='P' and name not like 'dt%'
DECLARE @NAME VARCHAR(100)
DECLARE @SQL VARCHAR(512)
OPEN ACUR
FETCH NEXT FROM ACUR INTO @NAME
WHILE @@fetch_status=0
BEGIN
EXEC ('grant execute ON ['+ @NAME+'] TO jrzsfc;')
FETCH NEXT FROM ACUR INTO @NAME
END
CLOSE ACUR
DEALLOCATE ACUR
--4 赋予jrzsfc对所有標量值函数execute权限
DECLARE ACUR CURSOR FOR
SELECT name FROM SYSOBJECTS WHERE TYPE='FN'
DECLARE @NAME VARCHAR(100)
DECLARE @SQL VARCHAR(512)
OPEN ACUR
FETCH NEXT FROM ACUR INTO @NAME
WHILE @@fetch_status=0
BEGIN
EXEC ('grant execute ON ['+ @NAME+'] TO jrzsfc;')
FETCH NEXT FROM ACUR INTO @NAME
END
CLOSE ACUR
DEALLOCATE ACUR
--5 賦予jrzsfc對表值函數select權限
DECLARE ACUR CURSOR FOR
SELECT name FROM SYSOBJECTS WHERE TYPE='TF'
DECLARE @NAME VARCHAR(100)
DECLARE @SQL VARCHAR(512)
OPEN ACUR
FETCH NEXT FROM ACUR INTO @NAME
WHILE @@fetch_status=0
BEGIN
EXEC ('grant select ON ['+ @NAME+'] TO jrzsfc;')
FETCH NEXT FROM ACUR INTO @NAME
END
CLOSE ACUR
DEALLOCATE ACUR
--------------------------------------------------------------
sysobjects中type的定义如下:
sysobjects是MSSQL数据库的系统表,在WEB权限下可以正常访问。
msysobjects是ACCESS数据库的系统表,在WEB权限下没有权限访问,会提示"没有权限访问"
我们在mssql的存储过程中经常要处理一些特殊的对象,这些对象都存放在数据库中的系统表sysobjects中,
并且通过type字段来分类管理,那么到底有哪些分类呢?
C=CHECK约束
D=默认值或Default约束
F=FOREIGN KEY约束
L=日志(Log)
FN=标量函数
IF=内嵌表函数
P=存储过程
PK=PRIMARY KEY约束(类型是 K)
RF=复制筛选存储过程
S=系统表
TF=表函数
TR=触发器
U=用户表
UQ=UNIQUE约束(类型是K)
V=视图
X=扩展存储过程
例如:
while exists(select from sysobjects where type='F')
begin
...
end
这里判断了数据库中是否存在外键约束
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-610598/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-610598/