http://www.codefans.net/soft/4011.shtml http://www.softii.com/downinfo/39460.html
http://www.codefans.net/soft/4011.shtml http://www.softii.com/downinfo/39460.html
关于什么是用户权限,最简单的定义可能是,“用户能做什么和不能做什么。”在这里,简单的定义就相当不错了。 用户的权限分为3类: l 登录的权限; l 访问特定数据库的权限; l 在数据库中具体的对象上执行特定操作的权限。 既然我们已经看过了创建登录账户,这里将把重点放在登录账户能够拥有的特定权限上。 22.3.1 授予访问特定数据库的权限 如果想要一个用户可以访问数据库,你需要做的第一件事情是授予用户访问那个数据库的权限。可以在Management Studio中,通过把用户加入到服务器的数据库结点的用户成员中来实现。如果要用T-SQL来添加用户,需要使用CREATE USER或遗留的存储过程sp_grantdbaccess。 注意,当你在数据库中CREATE一个用户时,实际上,那些许可权限被存储在数据库中,并映射到那个用户的服务器标识符上。当还原数据库时,可能不得不在还原数据库的地方,重新把用户权限映射到服务器标识符。 1.CREATE USER CREATE USER命令把新用户添加到数据库中。用户可以源自现有的登录名、证书或非对称密钥,用户也可以是只能在当前数据库中的本地用户。其语法如下: CREATE USER <用户名> [ { { FOR | FROM } { LOGIN <登录名> | CERTIFICATE <证书名> | ASYMMETRIC KEY <密钥名> } | WITHOUT LOGIN ] [ WITH DEFAULT_SCHEMA = <模式名> ] 对于这些元素,我们概略看一下其中一些元素的含义是什么: 选 项
要控制对数据库的权限, 可以参考下面的: -- 防止访问他不该访问的数据库(总控制,明细还可以控制他对于某个数据库的具体对象具有的权限) --切换到你新增的用户要控制的数据库 use 你的库名 go --新增用户 exec sp_addlogin 'test' --添加登录 exec sp_grantdbaccess N'test' --使其成为当前数据库的合法用户 exec sp_addrolemember N'db_owner', N'test' --授予对自己数据库的所有权限 --这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表 go --删除测试用户 exec sp_revokedbaccess N'test' --移除对数据库的访问权限 exec sp_droplogin N'test' --删除登录 如果在企业管理器中创建的话,就用: 企业管理器--安全性--右键登录--新建登录 常规项 --名称中输入用户名 --身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户) --默认设置中,选择你新建的用户要访问的数据库名 服务器角色项 这个里面不要选择任何东西 数据库访问项 勾选你创建的用户需要访问的数据库名 数据库角色中允许,勾选"public","db_ownew" 确定,这样建好的用户与上面语句建立的用户一样 --------------------------------------------------------------------------- 最后一步,为具体的用户设置具体的访问权限,这个可以参考下面的最简示例: --添加只允许访问指定表的用户: exec sp_addlogin '用户名','密码','默认数据库名' --添加到数据库 exec sp_grantdbaccess '用户名' --分配整表权限 GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用户名] --分配权限到具体的列 GRANT SELECT , UPDATE ON table1(id,AA) TO [用户名] -------------------------------------------------------------------笔记2------------------------------------------------------------------- 创建角色,用户,权限 /*--示例说明 示例在数据库pubs中创建一个拥有表jobs的所有权限、拥有表titles的SELECT权限的角色r_test 随后创建了一个登录l_test,然后在数据库pubs中为登录l_test创建了用户账户u_test 同时将用户账户u_test添加到角色r_test中,使其通过权限继承获取了与角色r_test一样的权限 最后使用DENY语句拒绝了用户账户u_test对表titles的SELECT权限。 经过这样的处理,使用l_test登录SQL Server实例后,它只具有表jobs的所有权限。 --*/ USE pubs --创建角色 r_test EXEC sp_addrole 'r_test
最近很多网友询问,自己的手机用着用着就突然圈外了,或者显示没有服务,自己什么都没动过,包括很多iphone用户,出现没有服务的现象,怀疑是不是解锁或者越狱造成的。但是把自己手机里的卡拿出来放到其他人的手机里却是有信号的,那一定是手机有问题了。 其实,其实市场上有很多用不正当手段契约或者偷盗来的,以及正常签约后不缴纳手机费用的手机。SoftBank为了防止这些手机以空机的形式买卖,从2009年3月1日开始 会将这些手机的手机串号,也就是imei号码加入网络黑名单,就是这些手机无法登陆SoftBank的网络,普通契约中的sb卡放到这些手机里,就会出现没有服务的现象。 IMEI号码,是移动设备身份证明号码,也叫手机串号在手机上输入 *#06# 就会出现,和我们的身份证,登陆证一样,全世界的手机都有,而且是唯一的,SoftBank就是把这些手机的串号在网络中屏蔽了。 现在市面上的手机哪些会上锁哪些不会上锁很难辨别,因为你没有办法知道那些手机是偷来的,那些手机是欠费的,以及那些手机将要欠费。 因为现在大多数的手机都是分两年来还手机本体费用的,所以你不知道这个原来手机的主人费用交到什么时候,他什么时候不缴费,他签约来的手机就什么时候会被上锁,但是一般都会有一个月的缓冲时间,所以最近很多人无缘无故的手机就没有服务了。 Docomo的手机也会上锁叫 おまかせロック!Docomo的手机一旦上锁根本连菜单都进不了,就是一个砖头。目前Docomo的手机只有手机签约主人报失,手机才会上锁,为了防止个人情报流失。而失主如果加入了docomo的安心服务,可以花5000日元购买一个同样型号的新手机。 但是有人恶意先将新签约的手机卖掉,然后一段时间后,声称手机丢掉了,去docomo shop 花5000日元新办一个,这样原来的手机就上锁了,买家手里就多一块转头了。 现在docomo的手机用这种方法骗人的非常多,所以奉劝大家最近购买空机的时候要格外小心,不要因为贪图一时的便宜,弄个玩具回来就糟糕了。
ASP.NET 2.0 中的资源与本地化 发布日期: 2006-08-22 | 更新日期: 2006-08-22 Ted Pattison 下载本文的代码:BasicInstincts2006_08.exe (878KB) 本页内容 控制页面级别的区域性设置 使用配置文件跟踪语言首选项 ASP.NET 2.0 中的资源文件 使用本地资源 在 DLL 项目中嵌入资源 显示本地化图像
在C#中,static变量表示该变量属于类,而不是类的实例。可以说是该类的所有实例共享一个static变量。 asp.net的页面就是一个类,我们访问一个页面。就会在服务器上实例化一个该类的实例,来响应我们的请求。 “所有实例共享一个static变量” 这就意味着,所有的客户端访问到的asp.net页面中static变量都是同一个变量。 由于我们每次访问asp.net页面都是一个全新的对象,而不是我们上一次访问的对象。所以上次页面访问时我们对页面中变量的改动都没有保留。遇到这个问题的时候,很多初学者的直觉就是将这个变量申明为static,自己在测试的时候发现还真的保留住了页面的状态。窃喜之余没有发现这又有引入了另外一个错误。因为你要的只是页面能保留住状态,而这个状态是针对一个客户端的(session的效果)。而得到的结果是只要一个客户端改变了该值所有的其他客户端都受到了影响(如同Applicatin的效果)。这种情况下,需要的极有可能就是个ViewState或者是Session。 Application与static变量 Application是通过一个集合保存所有的对象。 强类型: Application中保存的是object,对对象的保存和使用需要作cast动作。对于值类型更需要Box&UnBox。对性能的影响较大。 而static变量是强类型的对象。 线程同步: Application将所有的对象放到一个集合,这样对访问集合中的任何对象都会锁定这个集合。 假如有Application["A"]、Application["B"]、Application["C"],有线程访问Application["A"]其他线程不能访问Application["B"] and Application["C"]。 而static变量,可以根据他们的作用分别放在不同的class当中。这样可以并行访问不同的static变量,而不存在线程安全问题。 友情提示: 1. 对static变量,做lock时。可以通过lock(typeof(classname))来锁定该变量所在的类的类型,达到线程同步的目的。 2. 由于Aplication,static member是全局变量,而我们是在多线程服务器环境写程序,对他们的使用需要注意线程安全的问题。
1. Get(即使用QueryString显式传递) 方式:在url后面跟参数。 特点:简单、方便。 缺点:字符串长度最长为255个字符;数据泄漏在url中。 适用数据:简单、少量、关键的数据。 适用范围:传递给自己、传递给另一个目标页面;常用于2个页面间传递数据。 用法:例如:url后加?UserID=…,跳转到目标页面,目标页面在伺服端可用Request.QueryString["InputText"]获取其指定参数值。具体可参考打印书本P261 2. Post 方式:通用的方式。利用form提交。 特点:最常用的方法。常用技巧是把隐秘的数据存在隐藏域中由form提交。 适用数据:大量数据,包括文件上传。 适用范围:同Get方法 用法:在客户端form指定action目标后submit、在asp.net的伺服端中使用server.Transfer(url)提交;在伺服端中用Request.Form["FormFieldID"]获取。 3. 页面对象的属性 方式:asp.net特有方式 。利用HttpContext获取发请求的页面的信息。 特点:可以直接存储对象。 缺点:注意强制转换的类型要正确。 适用数据:各种数据。 适用范围:页面之间传递复杂数据。 用法:获取Context.Handler将其转换为发请求的页面的实例,随后就可以轻松访问其form中的字段、甚至属性。其中的Context是指HttpContext对象,Handler是其属性,Context.Handler的意思可以理解为创建源页类的实例变量,而得到此实例之后,就可以直接访问其中的属性和Public方法了。可看下打印书本P263的具体使用。 4. cookie 方式:将数据存在客户端的经典方法。 缺点:安全性低、受客户端设置限制、一个站点仅存20个cookie,每个容量4096字节。 有效期:自定义或被用户清除 适用数据:用户的会话数据(一般是用户名,用户的个性化设置信息等) 适用范围:单个用户、整个站点所有页面 用法:引用Request.Cookies(读取信息)、Response.Cookies(写入信息)、或用HttpCookieCollection直接创建Cookie对象。具体可见打印书P252 5. Session 方式:将用户数据存储在伺服端。 特点:asp.net中可以设置session的存储方式、位置、SessionID的保存是否依赖cookie。 可以直接存储对象。 缺点:asp.net中有失效的隐患 有效期:用户活动时间+自定义延迟。 适用数据:用户的特有信息。 适用范围:单个用户、整个站点所有页面。 用法: 复制C#代码保存代码Session["CollectionName"] = value/object; 6. Cache 方式:将用户数据存储在伺服端数据缓存中。 特点:可以大大提高效率。 可以直接存储对象。 缺点:数据更新不及时。 有效期:应用程序生命周期或自定义。 适用数据:所有页面、所有用户都可以共享的数据。 用法: 复制C#代码保存代码Cache["CollectionName"] = value|object; 7. Appliction 方式: 将数据存储于此,相当于全局变量。 特点:可以直接存储对象。整个站点的共享数据。 有效期:应用程序生命周期。 适用数据:所有页面、所有用户共享的数据。 用法: 复制C#代码保存代码Appliction["CollectionName"] = value|object; 8. ViewState 方式:asp.net特有机制,用来恢复页面状态。 特点:将页面各控件及其所存数据序列化存在name为_ViewState的隐藏域中。 缺点:存在HTML中,安全性较低。可以设置加密和验证,但数据量会大增、效率有影响。 适用数据:页面PostBack需要保存的数据,数据太大会影响页面发送效率。 适用范围:页面自身数据保存。 用法: 复制C#代码保存代码ViewState["CollectionName"] = value; 9. Static 方式: 将数据存于静态变量中。 特点:利于提高效率。 缺点:若用不好会致使用户或页面间数据紊乱,造成极大的隐患。建议只赋值一次,绝对禁止为单个用户而更改此值。 适用数据:所有用户共享的数据。 适用范围:此类所有的页面实例。 用法:在class中声明静态变量。 整理: 页面自身保存数据可用的有ViewState,static变量。 页面之间传递数据常用get,post,HttpContext,当然可以变通一下用于自身数据保存。 单用户的所有页面数据共享常用session,cookie,当然也可以应用在以上两种情况。 整个应用程序(所有用户所用页面)的数据共享常用Appliction,cache,static变量。 总结: 当然可以变通下灵活应用来解决问题,但是要选择合适的,常见到滥用Get和Session。 建议在用Request的时候要指明所取的集合,比如Get方法传来的参数从QueryString集合取,Post的从Form取,cookie从Cookies里取。虽然用Request[]集合,以上几种都可以取到,但是却造成性能上的浪费,本来直接在Form集合中,却遍历了QueryString,Form,Cookies等集合才取出来。 ps:在计算机的世界里,凡是提供服务的一方我们称为伺服端(server),而接受服务的另一方我们称作客户端(client)。
刚毕业时和一哥们坐车出去玩,我俩有座。路上一站上来一个抱小孩的少妇,孩子不大,还穿活裆裤呢!我那哥们二话没说起来就给让了一座,我很是钦佩,我俩道很远的。那少妇很感谢说:“谢谢啊!来让叔叔摸个j”我估计就是不会如何感谢了的意思,抱一小小子,就那一小jj好玩。我那哥们一张嘴没把我乐过去,老谦虚了“不了,叔有。”
MSDN的解释. public bool AutoWordSelection { set; get; } System.Windows.Forms.RichTextBox 的成员 摘要: 获取或设置一个值,通过该值指示是否启用自动选择字词。 返回值: 如果启用自动选择字词,则为 true;否则为 false。默认为 true。 ---------------------------------- 该属性设置为false后,你会发现还是自动选词模式.恶心蒙了,................ 费解了我好一会.刚才用"AutoWordSelection BUG"GOOGLE下.原来还真是个BUG... 在formload里面设置下 rtxtImiResult.AutoWordSelection = true; rtxtImiResult.AutoWordSelection = false; 即可.
更改 SQL Server 2005 实例的默认排序规则的操作可能会比较复杂,包括以下步骤: 确保具有重新创建用户数据库及这些数据库中的所有对象所需的全部信息或脚本。 使用工具(例如大容量复制)导出所有数据。 删除所有用户数据库。 重新生成指定新的排序规则的 master 数据库(详细步骤如下)。 重新生成 master 数据库: 一、将SQL Server 2005 安装光盘放入光驱; 二、在操作系统上选择“开始”--“运行”(输入CMD)--“回车”; 三、于弹出的命令窗口通过“cd..”指令,回到磁盘的根目录(如c:\); 四、接着键入你光盘所在盘符,如“f:”,回车; 五、接着键入(“setup.exe /qn INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=123 SQLCOLLATION=Chinese_PRC_90_CI_AS”)命令重新构建master 数据库; (备注:如果是默认实例,则INSTANCENAME的值为“MSSQLSERVER”,有实例则录入实例;SAPWD的值为数据库密码;SQLCOLLATION为你所定义的排序规则,中文简体则为“Chinese_PRC_90_CI_AS”) 六、接着等几分钟候电脑自动运行,期间是没有提示运行完成窗口的,待光驱灯不闪烁及硬盘不连续读盘的时候表示安装完成; 七、接着重启电脑,重新建数据库,将之前导出的数据导入就OK了~!