| MSDE FunClub |
|
最終更新日 : 2000/08/11 |
|
Microsoft Data Engine FunClub
|
Since 2000.08.11
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) |
|
【第5章326p 〜 328p掲載】 |
-- [SQL05_05.SQL]
-- SQLServer7.0 Transact-SQL言語
-- 日本技術ソフト開発 堀川 明
-- http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
-- (1)SQLServerのログインに myguest を登録します
-- 既定データベースを MySampleTest にします
-- (2)MySampleTestデータベースにユーザ myguest 登録を行う
-- (3)ビュー表のベーステーブルである社員表へのアクセス禁止
--
-- ( 件処理されました)のメッセージの表示を抑止する
SET NOCOUNT ON
GO
-- *******************************************************************
-- 新規ログイン登録の権限が私にありますか?
-- sysadmin か securityadmin 固定サーバーロールに所属していますか?
-- *******************************************************************
IF( (IS_SRVROLEMEMBER('sysadmin')<>1 )
AND
(IS_SRVROLEMEMBER('securityadmin')<>1) )
BEGIN
PRINT ''
PRINT 'システム管理者権限(例えばsa)でログインしてください'
RAISERROR( '私には、ログインの管理はできません' , 16 , 127 )
RETURN
END
GO
-- *******************************************************************
-- myguest ログインが未登録の時は登録します
-- masterのsysloginsビュー表を直接見る
-- *******************************************************************
PRINT ''
IF NOT EXISTS( SELECT * FROM master.dbo.syslogins where loginname = 'myguest' )
BEGIN
PRINT 'myguestログインを登録します'
EXECUTE sp_addlogin 'myguest', -- login
NULL , -- password
'MySampleTest' , -- database
NULL , -- language
NULL , -- sid
NULL -- encryption_option
END
GO
-- ****************************************************
-- カレントデータベースの接続先を定義する
-- ****************************************************
USE MySampleTest
GO
-- ****************************************************
-- データベースユーザ登録の権限が私にありますか?
-- db_owner または db_accessadmin グループに許可される
-- ****************************************************
IF ( (IS_MEMBER('db_owner') <> 1 ) AND (IS_MEMBER('db_accessadmin') <> 1) )
BEGIN
RAISERROR( '私にはデータベースユーザ登録の権限はありません' , 16 , 127 )
RETURN
END
GO
-- **************************************************************************
-- MySampleTestデータベースに myguest のデータベースユーザ登録を行う
-- **************************************************************************
PRINT ''
IF NOT EXISTS( SELECT * FROM sysusers where name = 'myguest' )
BEGIN
PRINT 'データベースユーザに登録しました'
EXECUTE sp_grantdbaccess 'myguest' , -- login name
'myguest' -- user name
-- データベースユーザを データベースロールに追加する場合の処理
-- EXECUTE sp_addrolemember 'role' , 'myguest'
END
GO
-- ****************************************************
-- オブジェクト操作権限の設定取り消しを行う権限がありますか?
-- db_owner , sysadmin ,db_securityadmin , 所有者 に許可される
-- ****************************************************
DECLARE @UID SMALLINT
-- オブジェクト所有者のユーザIDを取得する
SELECT @UID = uid FROM sysobjects WHERE (name = '社員' AND type = 'U ')
IF(
(IS_SRVROLEMEMBER('sysadmin') <> 1 ) AND
(IS_MEMBER('db_owner') <> 1 ) AND
(IS_MEMBER('db_securityadmin') <> 1 ) AND
(@UID <> USER_ID() )
)
BEGIN
RAISERROR( '私にはオブジェクトの権限設定を行う権利がありません' , 16 , 127 )
RETURN
END
GO
-- **************************************************************************
-- myguest ユーザの、社員表に対するアクセスを全て禁止します
-- **************************************************************************
PRINT ''
PRINT 'myguestユーザの、[社員]テーブルに対するすべての操作を禁止'
-- 権限を明確に拒否する
DENY SELECT,INSERT,DELETE,UPDATE ON [社員] TO myguest
GO
-- **************************************************************************
-- myguest ユーザの、社員VIEW 表に対するアクセスを全て許可します
-- ベース表に対する権限は剥奪し、ビュー表の方を許可します
-- **************************************************************************
PRINT ''
PRINT 'myguestユーザの、[社員VIEW]ビュー表のすべての操作を許可'
GRANT SELECT,INSERT,DELETE,UPDATE ON [社員VIEW] TO myguest
GO