请问在SQLServer2000中用户和角色的区别以及对象权限和语句权限的区别。麻烦用规范语言作答。

/*--示例说明:在数据库pub中创建一个角色r_test,该角色对表jobs有所有权限,并且对表titles有select权限,然后创建一个登录l_test,然后在数据库pub中创建一个用户帐户u_test,其权限为登录l_test。
同时将用户账户u_test添加到角色r_test中,使其通过权限继承获得与角色r_test相同的权限。
最后,使用DENY语句拒绝用户帐户u_test对表title的SELECT权限。
经过这样的处理,使用l_test登录SQLServer实例后,仅拥有表作业的所有权限。
--*/USEpubs--创建角色r_testEXECsp_addrole'r_test'--授予r_test对jobs表的所有权限GRANTALLONjobsTOr_test--授予角色r_test对titles表的SELECT权限GRANTSELECTONtitlesTOr_test--登录添加l_test,设置密码为pwd,默认数据库为pubsEXECsp_addlogin'l_test','pwd','pubs'--为登录l_test添加安全帐户到数据库pu_testEXECsp_grantdbaccess'l_test','u_test'--作为ubs中角色r_test的成员EXECsp_addrolemember'r_test','u_test'addu_testto--deny安全账户u_test对title表的选择权限DENYSELECTONtitlesTOu_test/*--完成上述步骤后,用l_test登录可以对Jobs表执行所有操作,但不能查询Titles表你没有Titles表的select权限,但是titles的select权限是在安全账户中显式拒绝,因此l_test没有title表的select权限--*/--删除安全账户EXECsp_revokedbacc数据库pubess'u_test'--删除登录l_testEXECsp_droplogin'l_test'--删除角色r_testEXECsp_droprole'r_test'首先做好用户安全:--简单,只允许sql用户sql(反)允许访问(使用Administrators组限制用户访问)1.企业管理器--右键单击SQL实例--属性--安全--身份验证--选择“sqlserver和windows”--确定2.企业管理器--安全--登录--右键单击为其他用户设置密码同时设置密码3.删除用户:BUILTIN\Administrators<计算机名称>\Administrator--此用户必须使用Windows凭据登录到SQL,方法是:防止这种情况发生4.在企业管理器中设置进入企业管理器的密码--右键单击你的服务器实例(带有绿色图标的那个)--编辑SQLServer注册属性--“SQLServer身份验证选择”使用”-并勾选“始终提示输入登录名和密码”OK-经过以上设置,你的SQLServer就基本安全了。
-------------------------------------------------------------------------------------------------------------------------二、更改默认端口、服务器隐藏、减少SQLServer服务器--开始--程序--被麦克风攻击的机会SQLServer--服务器网络实用程序--启用“TCP/IP”中的协议--属性--默认端口,自行回车定义端口,如2433--检查隐藏服务器--------------------------------------------------------------------------------------SQL用户阻止访问数据库管理好他不应该访问的人(一般控制、详细控制还可以控制他对特定对象的权限)某些数据库)权限)--切换到你的新用户想要控制的数据库使用你的库名go--userexecsp_addlogin'test'add--loginexecsp_grantdbaccessaddN'test'--添加它到当前数据库execsp_addrolemember创建N'db_ownr',N'test'的合法用户--授予自己数据库的所有权限--这样创建的用户只能访问自己的数据库,guest用户对数据库的公共访问表包含-删除测试用户execsp_revokedbaccessN'test'--删除访问数据库权限execsp_droploginN'test'--如果是企业则删除登录管理器,然后使用:企业管理器--安全--右键单击登录--新建登录常规项--在名称中输入用户名--根据您的需要选择身份验证方法(如果您要验证您使用的是Windows身份,必须先在操作系统用户中创建一个新用户)-在默认设置中,选择新用户要访问的数据库名称,在ServerRoles项中,选择DatabaseAccess该数据库项中不要选择任何内容访问项目检查您创建的用户需要访问谁。
检查数据库角色中是否允许使用数据库名称,“public”、“db_ownew”确保这样创建的用户与上面语句创建的用户相同------------。
----------------------------------------------------------------------------------------------------------------最后一步要为特定用户设置特定访问权限,可以看下面最简单的示例:--添加只允许访问指定表的用户:execsp_addlogin'username','password','默认数据库名'--添加到数据库execsp_grantdbacsys'用户名'--为整个表分配权限GRANTSELECT,INSERT,UPDATE,DELETEONTABLE1TO[username]--为特定列分配权限GRANTSELECT,UPDATEONTABLE1(ID,AA)TO[username]------------------------------------------------------------------特定于安全设置和理论知识请参见SQL在线帮助。

如何在Delphi中用ADO实现在SQLServer中添加登录用户、修改用户信息及删除用户!

添加用户,其余类似:=类(TForm)斜角1:TBevel;标签1:TLabel;标签2:TLabel;标签3:TLabel;标签4:TLabel;标签5:TLabel;标签6:TLabel;标签7:TLabel;标签8:TLabel;标签9:TLabel;编辑1:TEdit;编辑2:TEdit;Edit3:TEdit;ComboBox1:TComboBox;ComboBox3:TComboBox;ComboBox4:TComboBox;ComboBox5:TComboBox;ComboBox6:TComboBox;ImageList1:TImageList;UListview:TListView;Label10:TLabel;Edit4:TEdit;Button1:TButton;Button2:TButton;RadioButton1:TRAdioButton;编辑5:TEdit;procedureEdit4Enter(发件人:TObject);procedureUListviewSelectItem(发件人:TObject;项目:TListItem;选定:布尔);procedureEdit2Exit(发件人:TObject);程序Edit1Exit(Sender:TObject);procedureButton1Click(Sender:TObject);procedureButton2Click(Sender:TObject);procedureFormCreate(Sender:TObject);private{Privatedeclarations}public{Publicdeclarations}end;varaddS:TaddS;实现{$R*.dfm}usessum;procedureTaddS.Edit4Enter(Sender:TObject);vari:integer;beginUlistview.Show;ifulistview.Items.Count=0thenbeginfori:=0to29dobeginUlistview.Items.Add;Ulistview.Items[i].ImageIndex:=i;end;end;end;procedureTaddS.UListviewSelectItem(Sender:TObject;Item:TListItem;Selected:Boolean);beginUlistview.Hide;ifUlistview.Selected<>nilthenedit4.Text:=inttostr(Ulistview.ItemIndex);edit4.Refresh;end;procedureTaddS.Edit2Exit(Sender:TObject);beginif(sysuserm.adoquery1.Locate('用户名',trim(edit2.Text),[locaseinsensitivity]))thenbeginshowmessage('TheThe用户名已存在,无法添加!');edit2.Clear;edit2.SetFocus;exit;end;end;procedureTaddS.Edit1Exit(Sender:TObject);beginifsysuserm.adoquery1.Locate('用户号码',trim(edit1.Text),[locaseinsensitivity])thenbeginshowmessage('该用户必须已经存在,不能添加!');edit1.Clear;edit1.SetFocus;退出;end;end;procedureTaddS.Button1Click(Sender:TObject);beginif(trim(edit1.Text)<>'')and(trim(edit2.Text)<>'')和(修剪(edit3.Text)<>'')和(trim(edit4.Text)<>'')和(trim(edit5.Text)<>'')和(trim(combobox1.Text)<>'')和(trim(combobox4.Text)<>'')and(trim(combobox3.Text)<>'')and(trim(combobox5.Text)<>'')and(trim(combobox6.Text)<>'')thenbeginwithsysusermdobeginADOQuery1.Append;uid.Text:=edit1.Text;uname.Text:=edit2.text;pwd.Text:=edit3.text;kind.Text:=combobox1。
文本;dpt.文本:=edit5。
文本;dbedit1.Text:=combobox3.Text;dbedit2.Text:=combobox4.Text;dbedit3.Text:=combobox5.Text;dbedit4.Text:=combobox6.Text;uico.Text:=edit4.Text;end;sysuserm.adoquery1.Edit;sysuserm.adoquery1。
Post;showmessage('保存成功!');endelsebeginapplication.MessageBox('请完整填写内容!','提示',mb_ok);exit;end;ifradiobutton1.Checkedthenbeginedit1.Clear;edit2.Clear;edit3.Clear;edit4.Clear;edit5.Clear;combobox1。
text:='';combox3.Text:='';combobox4.Text:='';combobox5.Text:='';combobox6.Text:='';endelseadds.Close;end;procedureTaddS.Button2Click(发件人:TObject);beginedit1.Clear;edit2.Clear;edit3.Clear;edit4.ClEar;edit5.Clear;combobox1.text:='';combobox3.Text:='';combobox4.Text:='';combobox5.Text:='';combobox6.Text:='';end;procedureTaddS.FormCreate(Sender:TObject);beginUlistview.Hide;end;end.