MSDE FunClub | 最終更新日 : 2000/08/11 | |
Microsoft Data Engine FunClub |
|
|
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