mssql2000

来源:推荐阅读 时间:2018-07-21 18:00:05 阅读:

【www.zhuodaoren.com--推荐阅读】

(1) [mssql2000]小议MSSQLServer2000的安全及管理


计算机等级网权威发布小议MSSQLServer2000的安全及管理,更多小议MSSQLServer2000的安全及管理相关信息请访问计算机等级考试网。
通俗地讲,资料库是储存具有某些特性的资料的数据库。通常,我们把使用资料库系统的用户划分为四类,资料库设计者、资料库管理者、应用程序设计者及一般使用者。其中资料库管理者负责账号的管理与维护,决定所有资料库使用者的使用权限。资料库安全管理可说是资料库管理者最重要的工作。sql server是microsoft的企业级资料库,它是个功能强大、易于使用的资料库,可直接与windows nt/2000的使用者账号做安全机制整合。
那么,到底什么是安全管理呢?简而言之,安全管理是指对需要登入服务器的人员进行管理。在应用程序中,我们会对资料库的各类使用者设置资料操作权限,通常是直接在应用程序中做账号与密码的管理,但这种做法需要撰写程序控制。而sql server具有亲切、易操作的图形使用界面,可以方便地管理使用者对sql server的存取权限。
sql server 安全管理可分为3个层次,即登入账户、资料库的管理与连接特定资料库的权限和使用者对所连接资料库部分的操作权限。下面,我们将针对这3个层次做详细说明。 一、登入账户 任何需要存取 sql server的使用者皆需要有一组服务器认可的账户和密码。sql server支持2种登入方式,一种为windows验证,另一种为sql server验证。前者只要在sql server中建立与windwos nt/2000对应的登入账户,让使用者登入windows nt/2000时所用的账户能与在sql server中的账户相互对应,即可顺利连上sql server,由此,我们完成了对windows nt/2000安全管理机制的整合。
接下来,资料库管理者在windows nt上登入账号,可直接将windows nt中的群组加到sql server中,从而成为一个登入账户。
通过上述操作,windows nt登入群组中的成员皆可连接sql server。如果该群组中某一成员不允许其登入sql server,可在sql server中将该成员的个人账户设为拒绝存取。如果把sql server安装在 windows 95、windows 98或windows me中,则无法使用windows验证方式。
如果使用sql server验证,必须在sql server中为要连接sql server的使用者建立登入的账号名称和密码,这些账号和密码与windows nt/2000的账户无关。
二、管理与连接特定资料库的权限 在建立登入账户后,使用者便能进入sql server中,但并不代表使用者有连接sql server特定资料库的权限,必须对使用者或群组设置对sql server的操作权限。sql server中对资料库的操作权限可分为服务器自身的操作权限与资料库的存取权限。对sql server的操作权限可由服务器角色来设置,资料库的存取权限则可由角色与使用者对个别表格的存取权限来设置。那么,服务器角色与角色之间有什么不同呢?
1. 服务器角色 sql server系统内建8种服务器角色(可把角色想像成windows nt账号中的群组),它不能更改或新增。当对某一使用者或群组设置好服务器角色后,其便拥有该服务器角色所拥有的权限。服务器角色是将sql server的各项管理工作加以分类,如建立账号和资料库备份等,它与资料库角色不一样,后者为对个别资料库的操作权限。
我们简单列出8种服务器角色所拥有的权限。 system administrators 表示系统管理员可执行任何动作。 security administrators 表示管理登入账户。 server administrators 表示设置sql server的各项参数。 setup administrators 表示有关replication(复制)的设置与管理扩充预存程序。 process administrators 表示管理sql server所有执行中的程序。 disk administrators 表示管理资料库文件。 database administrators 表示建立和更改资料库属性。 bulk insert administrators 表示对可执行bulk insert
1

(2) [mssql2000]NHibernate2.0.1下实现SQL2000真分页


计算机等级网权威发布NHibernate2.0.1下实现SQL2000真分页,更多NHibernate2.0.1下实现SQL2000真分页相关信息请访问计算机等级考试网。
最近用NHibernate做个项目 由于数据库用的是mssql2000 NHibernate 对mssql2000的分页查询支持的不是很好 于是自己动手实现一个mssql2000方言  原 NHibernate.Dialect 命名空间下的mssql2000的方言类 MsSql2000Dialect 里的 GetLimitString 方法 如下:  Code  public override SqlString GetLimitString(SqlString querySqlString, int offset, int limit)  {  if (offset > 0)  {  throw new NotSupportedException("SQL Server does not support an offset");  }  /*  * "SELECT TOP limit rest-of-sql-statement"  */  return querySqlString.Insert(GetAfterSelectInsertPoint(querySqlString), " top " + limit.ToString());  }  看上面这段代码大家都知道这种分页方式的性能有多么的差 下面我把我自己实现的方言类代码贴出来  Code  public class mySqlServer2000Dialect : MsSql2000Dialect  {  private static int GetFromIndex(SqlString querySqlString)  {  string subselect = querySqlString.GetSubselectString().ToString();  int fromIndex = querySqlString.IndexOfCaseInsensitive(subselect);  if (fromIndex == -1)  {  fromIndex = querySqlString.ToString().ToLowerInvariant().IndexOf(subselect.ToLowerInvariant());  }  return fromIndex;  }  private static string RemoveSortOrderDirection(string sortExpression)  {  // Drop the ASC/DESC at the end of the sort expression which might look like "count(distinct frog.Id)desc" or "frog.Name asc".  return Regex.Replace(sortExpression.Trim(), @"(\)|\s)(?i:asc|desc)$", "$1").Trim();  }  public override bool SupportsLimitOffset  {  get  {  return true;  }  }  public override NHibernate.SqlCommand.SqlString GetLimitString(SqlString querySqlString, int offset, int limit)  {  if (offset == 0)  {  return base.GetLimitString(querySqlString, offset, limit);  }  SqlString myQuery = new SqlString(RemoveSortOrderDirection(querySqlString.ToString().ToLower()));  int orderIndex = myQuery.LastIndexOfCaseInsensitive(" order by ");  if (orderIndex   {  throw new NotSupportedException("must specify "order by"
2

本文来源:http://www.zhuodaoren.com/tuijian804416/

推荐访问:mssql2000下载
扩展阅读文章
热门阅读文章