电脑中的 bind()错误是什么?
Berkeley Internert Name Domain(BIND)是我们所熟知的域名软件,它具有广泛的使用基础,Internet上的绝大多数 Py`<W
DNS服务器都是基于这个软件的。BIND目前由ISC(Internet Software Consortium)负责维护,具体的开发由 7! J"|RRH
Nominum(wwwnominumcom)公司来完成。下面编译的这个常见问题集就是由该公司所发布的(同时也见于 @W(6pyQd
http://wwwiscorg/bind),可以说,它具有较强的针对性和实用性。 V;gkSh^i
1) 哪里可以找到BIND j 9|KD
BIND以源码的格式发布。当前的版本为BIND 9,不过BIND 822-P5仍然是广泛发布的版本。考虑到早期版本的安全问 FGX G7vl
题,如果您还在运行比822-P5更早的版本,那么我们强烈推荐您升级软件。 RB2/TwDZ%
以下的URL包括了源码和其他相关资源的链接,你可能会觉得很有用处: &]L~(kL
http://wwwiscorg/products/BIND/ I4o^<P+
源码也可以使用ftp从ftp://ftpiscorg/isc/bind/src/822-P5/bind-srctargz 获得。 'f Vw$0W
镜像BIND的ftp服务器列表和其它ISC维护的开发源码软件可以在ftp://ftpiscorg/isc/MIRRORS上找到。 `1N=W
2) 怎样安装BIND l%B,bUg
下载源码到一个空的目录。如果你需要的话,你也可以下载文档和捆绑的包。 OqOAAnNK[
接下来,你需要解压(unzip)和解包(untar)发布的包。 <n1],wY
gunzip < bind-srctargz | tar xf - w0_x\
然后,你需要编译和安装软件。常见src/INSTALL以获知指令。在安装之前请备份系统,因为安装可能会覆盖旧的二进制 a_$ Xi
代码;这是依赖于系统的。 W"$w57
如果你是从BIND 4转过来的,那么你需要将配置文件namedboot转成新的语法。这里包含了一个转换程序。 Q-! |C
named-bootconf }(y
< /etc/namedboot w1'SM}J%
> /etc/namedconf 9JEC+]6
同时,如果你正从BIND 4转换而来,那么系统启动脚本需要进行修改,以使之查找/etc/namedconf,而不是 z$Tk0a
/etc/namedboot。 f o+-<s
接着,你需要终止老的named并启动新的。 TD:^&o+
kill -TERM tF /[A-
ndc start [#yE)| Q
检查系统日志(在大多数Unix系统上,错误都存放在/var/adm/messages中),因为当前的版本比先前的版本容错性会差 g^|3;F2j
一些。 cw%V0r
3) 哪里有基于NT的BIND {}xlWT-
最新的基于NT的BIND可以从ftp://ftpiscorg/isc/bind/src/822-P5/bind-srctargz上的822p5源码中找 R zsW2&
到。你应该能够使用WinZip来解压/解包822p5文件。一旦解压了源码,你会在src/port/winnt目录下找到NT的移植程 ]NcAW6"
序。你需要Visual C++ 60来编译它。 lyh=!FX4
4) 哪里可以找到有关BIND的信息? l;,wcUi
先从http://wwwiscorg/products/BIND/开始。 DA #S
对于BIND用户,有一个可用的邮件列表。使用http://wwwiscorg/services/public/lists/bind-listshtml上的表 swryaPHw
单订阅。在你提交你的问题到邮件列表之前,请检查邮件列表的档案以查看是否你的问题已经回答过了。可搜索的 gPoZfV
bind-users邮件列表档案位于http://wwwiscorg/ml-archives/bind-users/。 p6ba)>r
Bind-users邮件列表同时指向了中等的Usenet新闻组compprotocolsdnsbin你可以在http://wwwdejacom/上搜 <SjBK\>
索该新闻组。 )6=~|6c^
BIND的"圣经"是DNS and BIND,Third Edition,作者:Paul Albitz和Cricket Liu。 - ]R[}a8p
5) 为什么我应该升级BIND到最新的版本? b>NV)
最新的BIND版本解决了在以前版本中发现的bug和/或安全漏洞。 V)]OHyC6{
6) 我现在使用的是BIND的什么版本? ohF8Rfr/2
有几种方法可用来确定你正在使用什么版本的BIND。请注意有一些是针对于特定操作系统的,而其它一些不能在早于 b>\F K
495的BIND版本上工作。我们会在下面的描述中指明这些限制。 5pB5KCV
● 最简单的告知版本号的方法是查找named启动时写到系统日志文件中的消息。例如: #I Q1
Jul 14 12:54:21 ns named[15677]: starting named 822-P5 !\cM,+6R
Jul 14 12:54:21 hostmaster@ns1nominumcom:/usr/sbin/named C<ruBa9Z
● named带"-v"开关会显示版本: 0Hq N[ @
# named -v ''dfa<5%I
named 822-P5 Thu Jul 20 17:19:57 PDT 2000 g-qJi ~6#
hostmaster@ns1nominumcom:/usr/sbin/named ;lM _
● 当使用更新版本的BIND时,BIND的name后台守护程序的控制接口程序可以提供版本信息: ${\w`H
ndc status (+-S_A(o
● 源代码控制系统(SCSS)的"what"命令提供了文件的标示信息。 Bh(iA\/
what /named e5r8_50ut|
以下命令当在运行BIND 495及以上版本的服务器上检查时会起作用。这两个程序都包括在BIND的发布版本中。 "$CYOoa
●nslookup _|h1
# nslookup h;Hd>W>_
Default Server: nsyourcobogus (j47Ts
Address: 333333333333 _K)pf
> set class=chaos ve;qLn/o
> set type=txt ;["u S
> versionbind @crC090
Server: nsyourcobogus "^L%]
Address: 333333333333 i3ovFUs(
VERSIONBIND text = "822-P5" x]OiQL%jz
〉 cf1V^v3
●dig :hnR&>r;
dig versionbind txt chaos @ server name z$X1,h\U
或者 W187<'r
dig @ server name txt chaos versionbind ^f$7t
7) 我得到一个错误提示:No default TTL set using SOA minimum instead为什么会这样?怎么办? D3rJ0m7[
从BIND 82开始,你需要一条$TTL指示来设置域的默认TTL。可在域的SOA记录之前添加一条'$TTL XXXXXX'指示。 X Xv2R
(XXXXXX表示计算到秒的默认TTL) s6$i#@
8) 主机名可使用哪些有效字符? IG/CJ}@
主机名可以包括字母,数字以及连字符,但不能以连字符开头。下划线(_)在主机名中不是有效的字符。尽管有一些DNS ^b{
服务软件包可以允许下划线在主机名中出现,但大多数是不行的。使用一个带有下划线的域或者主机名会导致大多数 @em=gla
Internet上的名字服务器不能识别相关的主机/IP地址。 s5Av"Jy:k
9) 为什么当我在本域中的一台主机上使用nslookup时会得到non-authoritative的答复? Qz"m |
这通常发生在域(zone)文件中有错误出现的时候。检查系统日志文件'messages'以查证错误。 GtZ(rVA0F/
10) 我已经修改了自己的域,但是在Internet上的其它地方看不到这种改变,为什么? nE8IaTpT
每当你修改了你的域文件,例如当你添加或者修改了主机记录的时候,你也必须更新域的SOA记录的文件版本,或者是 ]Blm:vMc
"serial number",因为名字服务器从你的服务器检索信息时需要知道发生了修改。如果从上次查询之后版本号没有修 q6BW<
改,就不会执行更新。举例如下: Dl6]iB
; foocom DuB;X\E`{
$TTL 14400 |6p ^GzH,
@ IN SOA o8J#XJP
someplacefoocom adminfoocom ( K$i<D) c
1 ; this file's version -- change I2NfG ~9 J
43200 ; refresh twice a day yj~cD9:(e
1800 ; retry refresh every 15 minutes yj->X7}+'
604800 ; expire after 1000 hours (over week) Ve\2#Yh
259200 ) ; minimum TTL of 3 day t~^o!Q
显而易见,带'file's version'的行是我们想要修改的。版本序号可以为任何数字;1,2,3,4或者2001,2002, ngx6}[tgV
2003,等等。唯一的限制是版本号不能多于10位。在这个示例中,如果你对域文件作了修改,你需要将版本序号改为 TSBSfc4zu
'2'。 $g_TCdN%
11) 为什么没有IP地址? ((${Ea1
在/etc/resolvconf中没有名字服务器记录。 4o _G ,/G_
12) 在我的日志文件中出现的"lame server"错误是什么? Aa]0IY'7jp
"lame server"指的是不能确信其是否具有域的授权的服务器。如果你有lame server,或者是授权给了lame server的 I<zvq!Z)
域,那么"lame server"消息很有用。如果你宁愿不看到"lame server"消息,你可以使用logging语句丢弃它们: YbA ]9uB
logging { X TDb R]
category lame-servers{ null; }; $=:-f5
}; LOFv5H4I
13) Microsoft Windows 2000和BIND的关系怎样? MFY813 `
BIND默认会检查所有记录以确保只在需要主机名的地方使用了主机名,这能够防止意外的一致性问题。 <;+\&u7x
Microsoft Windows 2000使用一个称为"_msdcs"来存放动态目录数据。尽管这种子域不会与合法的主机名产生不一致, p\9x[9:iR1
但是也使得在子域中存放非法的主机名成为可能。这种主机名的使用默认是被BIND拒绝的。 @YS osEk}
动态目录希望在_msdcs中有"全局目录(global catalog)"(例如,gc_msdcsexamplecom),这默认是拒绝的。为了解 Q/&"5rvC
决此问题,我们推荐动态目录设为独立的域(例如,"_msdcsexamplecom")并配置成不检查非法的主机名。这应该是合理 -'Z ~(su
的,因为Window 2000服务器创建这些数据,而且不应该会与其它希望访问这些数据的Windows 2000机器产生不一致问 iIaj )ihQI
题。 })7p M`a
例如, WI:kRt1
zone "_msdcsexamplecom" { >x=UPe8
type master; }26- @:
file "_msdcsexampledb"; JCbt$6Tv
check-names ignore; @eaD5'$bt)
allow-update { localnets; }; ecmz
}; sU QfN{:
14) 什么是TSIG key (+5m(CvN
TSIG key提供了一种鉴别和验证交换的DNS数据有效性的方法,它在解析器和服务器之间或者两台服务器之间使用一个密 cy_
钥。 Z lY<!
15) 我怎样使用TSIG key来动态更新我的DNS 1vB(T!9%
首先你需要使用以下命令生成一个TSIG密钥(我们将使用tsig-key作为密钥文件名): (+zhM'Z
dnskeygen -H 128 -h -n tsig-key。 Vh#X8 S 4
这会生成一对密钥文件: AvU =D$a
'Ktsig-key+157+00000key',这是一个ASCII文件,它包括以下行: YML|F;
tsig-key IN KEY 513 3 157 <$u32YI H
awwLOtRfpGE+rRKF2+DEiw== t 9 O;rv
和 rmbW3!bh
'Kvip-key+157+00000private' ,这包括: N&-tX$iLa5
Private-key-format: v12 Algorithm: 157 (HMAC) bkk{&{
Key: awwLOtRfpGE+rRKF2+DEiw== i5:W'g1b
你将需要获取base64编码的密钥awwLOtRfpGE+rRKF2+DEiw== 并在配置你的服务器命名设置中使用它。例如: J,6Ir/f"b
key tsig-key { algorithm hmac-md5; secret "awwLOtRfpGE+rRKF2+DEiw=="; }; rkn#b:Dxq
zone "ddnsdregiscom" { 3K|Bd()t
0z]o0= {
l40iikt
allow-update { key tsig-key ; }; ImBFtHXYo
} kJVcF)
记得在这之后重启named。 UEPu;#=Q
然后,你需要复制这两个密钥文件到客户系统的某个位置(例如使用/var/named/tsig)。最后,你需要运行以下命令: dC\GwP
nsupdate -k /var/named/tsig:tsig-key。 FCr\
16) 在namedconf中的'forwarder'选项有何作用? EKH!_!
forwarder行告诉服务器转发所有查询,因为它对另一个域名服务器没有授权或缓冲的数据。
这是你的vSphere Client版本过低的原因。主要是vSphere Client的版本低于vSphere ESXi,你需要找一台可上网的电脑去下载相对应的vSphere Client。
VMware vSphere 50中Storage DRS的用途:
1、进行存储的负载均衡,把虚机放在适合的存储上,达到提高虚机负载效率。
2、做到存储节点的冗余,提高虚机安全性。
3、提高存储资源利用率,因为大部份时候,我们在划分LUN的时候并不考虑每人虚拟机文件的大小,故 生产环境中,经常出现的情况是每个LUN 都会有不大不小的空闲容量没能好好利用,而有了STORAGE DRS后,自动的storage vmotion 操作,会使我们的存储利用率更高。
由操作系统规定的,但是功能方面比较简单,方便查找定位之用,文件与文件之间不能调用数据;而数据库中的文件是由数据库软件组织的,其程度很高,能方便查找,更重要是它们之间联系紧密!能相互传递据
2、(1)物理数据层。它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。
(2)概念数据层。它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。
(3)逻辑数据层。它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。
3、程序和数据的独立性是数据库的主要特征之一作为工程数据库管理系统,也必须保持这个特征为此,介绍了具体的工程数据库管理系统EDRMS程序与数据的独立性实现,并用实例予以说明
二
1、a关系:关系是一个二维表,表的每行对应一个元组,表的列对应属性。
b属性:指关系中的列;
域:值的集,每个属性的取值的范围;
元组(Tuple):给出一组域产生笛卡儿乘积D1,D2…Dn,产生笛卡儿乘积D1D2…Dn=其中(d1,d2dn)为元组。
c
关系的表:是一个简单的表,不准许出现组合的属性。
d用二维表的形式来表示实体集属性间的关系,以及实体之间联系的形式。
三
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
四
1、在SQL Server 2000 中,数据库由存储特定结构化数据集的表集合组成。表中包含行(有时称作记录或元组)和列(有时称作特性)的集合。表中的每一列都设计为存储某种类型的信息(例如,日期、名称、美元金额或数字)。表上有几种控制(约束、规则、触发器、默认值和自定义用户数据类型)用于确保数据的有效性。表上可以有索引,利用索引可以快速地找到行。可将声明引用完整性 (DRI) 约束添加到表上,以确保不同表中相互关联的数据保持一致。数据库还可以存储过程,这些过程使用 Transact-SQL 编程代码对数据库中的数据进行操作,如存储对表数据提供自定义访问的视图。
2、SQL Server 2000 使用一组文件映射数据库。数据库中的所有数据和对象(如表、存储过程、触发器和视图)都存储在文件组中。
3、主要数据文件,次要数据文件,事务日志文件
4、因为利用事务日志备份可以将数据库恢复到特定的即时点(如输入不想要的数据之前的那一点)或故障发生点。在媒体恢复策略中应考虑利用事务日志备份。
五
1、表是包含数据库中所有数据的数据库对象。表定义为列的集合。
2、每行代表惟一的一条记录,而每列代表记录中的一个域。
3、一对多关系,多对多关系,一对一关系
六
1、Transact-Sql语言的分类如下:
数据类型
变量说明
用来说明变量的命令
流程控制语句
2、null表示空值;与其他的比较既非空于空值的区别;null在表中即为空挡数据。
5、通常与LIKE关键字一起来使用
可以用在检查约束中使用LIKE
在后面的查询语句中还会经常使用到
6、ORDER BY是一个可选的子句,它允许你根据指定要order by的列来以上升或者下降的顺序来显示查询的
9、SQL;文本文档
八
数据库中的索引与书籍中的目录类似。在一本书中,利用目录可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。数据库中的索引是一个表中所包含的值的列表,其中注明了表中包含各个值的行所在的存储位置。可以为表中的单个列建立索引,也可以为一组列建立索引;索引采用B树结构。索引包含一个条目,该条目有来自表中每一行的一个或多个列(搜索关键字)。B树按搜索关键字排序,可以在搜索关键字的任何子词条集合上进行高效搜索。例如,对于一个A、B、C列上的索引,可以在A,A、B,A、B、C上对其进行高效搜索。
在随SQL Server 2000 提供的pubs示例数据库中,employee表在emp_id列上有一个索引。当SQL Server执行一个语句,在employee 中根据指定的emp_id值查找数据时,它能够识别emp_id列的索引,并使用该索引查找所需数据。如果该索引不存在,它会从表的第一行开始,逐行搜索指定的emp_id值。
SQL Server 2000为某些类型的约束(如PRIMARY KEY和UNIQUE约束)自动创建索引。可以通过创建不依赖于约束的索引,进一步对表定义进行自定义。
不过,索引为性能所带来的好处却是有代价的。带索引的表在数据库中会占据更多的空间。另外,为了维护索引,对数据进行插入、更新、删除操作所花费的时间会更长。在设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。
在考虑是否为一个列创建索引时,应考虑被索引的列是否以及如何用于查询中。索引对下列查询很有帮助:
l 搜索符合特定搜索关键字值的行(精确匹配查询)。精确匹配比较是指查询使用 WHERE 语句指定具有给定值的列条目。例如WHERE emp_id = 'VPA30890F'。
l 搜索其搜索关键字值为范围值的行(范围查询)。范围查询是指查询指定其值介于两个值之间的任何条目。例如WHERE job_lvl BETWEEN 9 and 12。
l 在表 T1 中搜索根据联接谓词与表 T2 中的某个行匹配的行(索引嵌套循环联接)。
l 在不进行显式排序操作的情况下产生经排序的查询输出,尤其是经过排序的动态游标。
l 在不进行显式排序操作的情况下,按一种有序的顺序对行进行扫描,以允许基于顺序的操作,如合并联接和流聚合。
l 以优于表扫描的性能对表中所有的行进行扫描,性能提高是由于减少了要扫描的列集和数据总量(该查询有覆盖索引可供使用)。
l 搜索插入和更新操作中重复的新搜索关键字值,以实施PRIMARY KEY和 UNIQUE 约束。
l 搜索已定义了FOREIGN KEY约束的两个表之间匹配的行。
在很多查询中,索引可以带来多方面的好处。例如,索引除了可以覆盖查询外,还使得可以进行范围查询。SQL Server 2000可以在同一个查询中为一个表使用多个索引,并可以合并多个索引,以便搜索关键字共同覆盖一个查询。另外,SQL Server会自动确定利用哪些索引进行查询,并且能够在表被改动时确保该表的所有索引都得到维护。
一个表如果建有大量索引会影响 INSERT、UPDATE 和 DELETE 语句的性能,因为在表中的数据更改时,所有索引都须进行适当的调整。另一方面,对于不需要修改数据的查询(SELECT 语句),大量索引有助于提高性能,因为SQL Server 2000有更多的索引可供选择,以便确定以最快速度访问数据的最佳方法。对小型表进行索引可能不会产生优化效果,因为 SQL Server 2000在遍历索引以搜索数据时,花费的时间可能会比简单的表扫描还长。
九
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而用户需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。
视图通常用来集中、简化和自定义每个用户对数据库的不同认识。视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。从SQL Server 2000 复制数据时也可使用视图来提高性能并分区数据。
视图可以简化用户操作数据的方式。可将经常使用的联接、投影、联合查询和选择查询定义为视图,这样,用户每次对特定的数据执行进一步操作时,不必指定所有条件和限定。例如,一个用于报表目的,并执行子查询、外联接及聚合以从一组表中检索数据的复合查询,就可以创建为一个视图。视图简化了对数据的访问,因为每次生成报表时无需写或提交基础查询,而是查询视图。
视图允许用户以不同的方式查看数据,即使他们同时使用相同的数据时也如此。这在具有不同目的和技术水平的用户共享同一个数据库时尤为有利。例如,可定义一个视图以仅检索由客户经理处理的客户数据。视图可以根据使用该视图的客户经理的登录 ID 决定检索哪些数据。
可使用视图将数据导出至其他应用程序。例如,可能希望使用pubs数据库中的stores和sales表在Excel中分析销售数据。为此,可创建一个基于stores和sales表的视图。然后使用数据导入导出工具导出由视图定义的数据。
Transact-SQL UNION 集合运算符可在视图内使用,以将来自不同表的两个或多个查询结果组合成单一的结果集。这在用户看来是一个单独的表,称为分区视图。例如,如果一个表含有华盛顿的销售数据,另一个表含有加利福尼亚的销售数据,即可从 UNION 创建这两个表的视图。该视图代表了这两个区域的销售数据。使用分区视图时,首先创建几个相同的表,指定一个约束以决定可在各个表中添加的数据范围。视图即使用这些基表创建。当查询该视图时,SQL Server 自动决定查询所影响的表,并仅引用这些表。例如,如果一个查询指定只需要华盛顿特区的销售数据,则 SQL Server 只读取含有华盛顿特区销售数据的表,而并不访问其余的表。分区试图可基于来自多个异类源(如远程服务器)的数据,而不仅仅局限于同一数据库中的表。例如,要将分别存储组织中不同区域数据的几台远程服务器上的数据组合起来,可以创建分布式查询,从每个数据源中检索数据,然后基于这些分布式查询创建视图。所有查询都只从包含查询所请求数据的远程服务器上读取表中的数据,其他在视图中由分布式查询引用的服务器均不被访问。
十
在使用SQL Server 2000 创建应用程序时,Transact-SQL编程语言是应用程序和SQL Server数据库之间的主要编程接口。使用Transact-SQL程序时,可用两种方法存储和执行程序。可以在本地存储程序,并创建向SQL Server发送命令并处理结果的应用程序;也可以将程序在SQL Server中存储为存储过程,同时创建执行存储过程并处理结果的应用程序。
SQL Server 2000中的存储过程与其他编程语言中的过程类似,利用存储过程可以完成以下任务。
l 接受输入参数并以输出参数的形式将多个值返回至调用过程或批处理。
l 包含执行数据库操作(包括调用其他过程)的编程语句。
l 向调用过程或批处理返回状态值,以表明成功或失败(以及失败原因)。
l 可使用 Transact-SQL EXECUTE 语句运行存储过程。存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接用在表达式中。
使用SQL Server 2000中的存储过程代替存储在客户计算机本地的Transact-SQL程序有很多的好处。
l 允许模块化程序设计。只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。
l 允许更快执行。如果某操作需要大量Transact-SQL代码或需重复执行,存储过程将比Transact-SQL批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行Transact-SQL语句时,都要从客户端重复发送,并且在SQL Server 2000每次执行这些语句时,都要对其进行编译和优化。
l 减少网络流量。一个需要数百行Transact-SQL代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
l 可作为安全机制使用。即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。
十一
SQL Server 2000 提供了两种主要机制来强制业务规则和数据完整性:约束和触发器。触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。唤醒调用触发器以响应INSERT、UPDATE或DELETE语句。触发器可以查询其他表,并可以包含复杂的Transact-SQL语句。触发器和触发它的语句要作为可在触发器内回滚的单个事务对待。如果检测到严重错误(例如磁盘空间不足),则整个事务即自动回滚。
触发器可通过数据库中的相关表实现级联更改。触发器可以强制CHECK约束定义的约束更为复杂的约束。与CHECK约束不同,触发器可以引用其他表中的列。例如,触发器可以使用另一个表中的SELECT比较插入或更新的数据,以及执行其他操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE或DELETE)允许采取多个不同的对策以响应同一个修改语句。
约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用Transact-SQL代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。
实体完整性总应在最低级别上通过索引进行强制,这些索引或是PRIMARY KEY和UNIQUE约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过CHECK约束进行强制,而引用完整性则应通过FOREIGN KEY约束进行强制。
十二
先创建登录名,可以是windows登录名也可以sql登录名
windows登录名是windows操作系统已经存在的用户名
sql登录名要在sql中创建而得的
要创建windows登录名:
例如:已经在windows中存在一个pkxz用户,域名是xxiang
create login [xxiang\pkxz] from windows with default_database = css
alter login pkxz with name=ppp
drop login pkxz
注意:只有administrators组的用户可以访问所有实例,并可获所有访问权,
其余本地用户组里的组,只能相对应的访问实例。
例如:chenshanshan是users用户组里的,是[xxinag2006\pkxz]实例的域用户帐户,
chenshanshan只能访问这个实例,并可获所有访问权。
例如:joan是users用户组里的,是[xxinag2006\pkxz]实例的登录名,joan只能访问这个实例。
要创建sql登录名:
sql用户名是pkxz
create login pkxz with password ='xx121314' , default_database = css
alter login pkxz with password = 'pp'
drop login pkxz
注意:sql用户名只能相对应的访问实例
例如:pc是[xxiang\pkxz]的登录名,只能访问这个实例,不可访问别的实例。
两者都创建了登录名,且都是css为默认数据库
然后创建完后把登录名授予角色
sp_addsrvrolemember 'pkxz','sysadmin'
sp_dropsrvrolemember 'pkxz','sysadmin'
服务器角色只能访问相对应的实例操作!不能访问别的实例!
创建用户
Ceate user pkxz_user from login pkxz with default_schema = pkxz_schema
如果没有创建架构的话,默认是dbo架构,这里是pkxz_schema
创建架构
创建架构的同时还可以创建该架构所拥有的表,视图,羡慕且可以对这些对象设轩权限。
create schema pkxz_schema authorization pkxz_user
Create Table pp (pp int)
Grant Select To pkxz_user_1
数据库角色
可以自己添加,还有内置固定数据库角色
自己添加角色
create role CreateTable authorization pkxz_user // CreateTable是角色名
分配权限
Grant Insert To CreateTable
添加成员
sp_addrolemember 'CreateTable','pkxz_user_1'
public角色的两个特点,1、初始状态没有权限 2、所有的数据库的成员都是他的成员
当修改了public角色,其实更改了所有数据库成员的权限
权限的管理
Grant 授予 Revoke 收回权限 Deny 否认权限
例如:将一个表pt的插入权限授予pkxz_user_1
Grant Insert On pt To pkxz_user_1
0条评论