详解SQL Server中数据库快照工作原理综合教程(整理8篇)由网友“pingrong”投稿提供,下面就是小编给大家分享的详解SQL Server中数据库快照工作原理综合教程,希望大家喜欢!
篇1:详解SQL Server中数据库快照工作原理综合教程
数据库快照是一个数据库的只读副本,它是数据库所有数据的映射,由快照被执行的时间点来决定它的内容,本文通过实例讲述如何操作数据库快照。
在SQL Server 中,它的另外一个强大的新特点是数据库快照。数据库快照是一个数据库的只读副本,它是数据库所有数据的映射,由快照被执行的时间点来决定它的内容。
这些数据库快照在报表方面是非常有价值,因为在快照数据库中或者在原数据库中,对于任何查询而言没有锁就将被执行。快照也可以使用在灾难恢复中,因为你可以将现有的数据恢复到现有的快照中,或者还可以在有害数据操作声明的事件中存储个别必要的表和数据。
数据库快照是如何工作的?
可以使用典型的数据库命令CREATE DATABASE语句来生成一个数据库快照,在声明中有一个源数据库快照的附加说明。当快照被建立时,同时生成一个稀疏文件。这个文件(只能使用在NTFS卷中)在初始化的时候并没有磁盘空间分配给它——尽管你可能在WINDOWS资源管理器中看到了文件的大小,它会看上去与原始的源数据库文件的大小相同。对磁盘来说其实这个文件的大小接近于零。
数据库快照在初始化时读的数据文件是来自于源数据库的。当源数据库的数据发生变化时,数据引擎就会将原始数据从源数据库拷贝到快照数据库中。这个技术确保快照数据库只反映快照被执行时数据的状态。当SELECT命令被用来发布反对数据库快照时,不管数据页的读取是否被定位在源数据库数据文件中还是在快照数据库数据文件中都是没有锁被发布的。因为在只读数据库快照中是没有锁被发布,数据库快照对于报表解决方案是一个重要的解决方案。
一个快照的实例
现在,让我们来看看数据库快照在SQL Server 2005中是如何工作的。为此,首先我需要一个源数据库作为快照的来源。下面的脚本将创建一个源数据库:
USE master
GO
IF EXISTS(SELECT name from sysdatabases where [name] = 'SourceDatabase')
DROP DATABASE SourceDatabase
GO
CREATE DATABASE SourceDatabaseON PRIMARY
(
NAME = SourceDatabase_Data,
FILENAME = 'C:SQLServerSourceDatabase_Data.mdf'
) LOG ON
(
NAME = SourceDatabase_Log,
FILENAME = 'C:SQLServerSourceDatabase_Log.ldf'
)
GO
注意这里产品区域的大小。我定义它的大小为CHAR(150)来强调数据文件的增长级数,这样在我接下来的实例中将更容易解释清楚快照是如何工作的。
现在既然我已经有了一个源数据库,现在我装载一些数据来扩展数据文件的大小位。如此,使用上面的脚本来创建销售历史表。
USE SourceDatabase
GO
IF OBJECT_ID('SalesHistory')>0 DROP TABLE SalesHistory
GO
CREATE TABLE SalesHistory
( SaleID INT IDENTITY(1,1),
Product CHAR(150), SaleDate DATETIME,
SalePrice MONEY
)
DECLARE @i INT
SET @i = 1
WHILE (@i <=10000)
BEGIN INSERT INTO SalesHistory (Product, SaleDate, SalePrice)
VALUES ('Computer', DATEADD(mm, @i, '3/11/1919'),
DATEPART(ms, GETDATE) + (@i + 57) )
INSERT INTO Sa
关 键 字:SQLServer
篇2:sqlserver 2005 如何创建分区表数据库教程
server|sqlserver|创建
该文详细介绍实现分区表的过程以及有助于完成此过程的功能,sqlserver 2005 如何创建分区表数据库教程
。逻辑流程如下:图:创建分区表或索引的步骤
确定是否应为对象分区
虽然分区可以带来众多的好处,但也增加了实现对象的管理费用和复杂性,这可能是得不偿失的。尤其是,您可能不需要为较小的表或目前满足性能和维护要求的表分区。前面提到的销售方案使用分区减轻了移动行和数据的负担,但在决定是否实现分区时,您应考虑您的方案是否存在这种负担。
确定分区键和分区数
如果您正在尝试改善大型数据子集的性能和可管理性,并且已经定义了访问模式,则可以使用范围分区减少数据争用的情况,同时减少只读数据不需要分区时的维护工作。要确定分区数,应先评估您的数据中是否存在逻辑分组和模式。如果您通常一次只处理这些已定义子集中的少数几个,则应定义范围以隔离查询,使其只处理相应的数据(即,只处理特定的分区)。
确定是否应使用多个文件组
为了有助于优化性能和维护,应使用文件组分离数据。文件组的数目一定程度上由硬件资源决定:一般情况下,文件组数最好与分区数相同,并且这些文件组通常位于不同的磁盘上。但是,这主要适用于打算对整个数据集进行分析的系统。如果您有多个 CPU,SQL Server 则可以并行处理多个分区,从而大大缩短处理大量复杂报表和分析的总体时间。这种情况下,可以获得并行处理以及在分区表中移入和移出分区的好处。
创建文件组
如果需要为多个文件放置一个分区表以获得更好的 I/O平衡,则至少需要创建一个文件组。文件组可以由一个或多个文件构成,而每个分区必须映射到一个文件组。一个文件组可以由多个分区使用,但是为了更好地管理数据(例如,为了获得更精确的备份控制),应该对分区表进行设计,以便只有相关数据或逻辑分组的数据位于同一个文件组中。使用 ALTER DATABASE,可以添加逻辑文件组名,然后添加文件。要为 AdventureWorks 数据库创建名为 Q3 的文件组,请按以下方式使用 ALTER DATABASE:
ALTER DATABASE AdventureWorks ADD FILEGROUP [2003Q3]
创建文件组后,使用 ALTER DATABASE 将文件添加到该文件组中。
ALTER DATABASE AdventureWorks
ADD FILE
(NAME = N'2003Q3',
FILENAME = N'C:\AdventureWorks\2003Q3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP [2003Q3]
通过在 CREATE TABLE 的 ON 子句中指定一个文件组,可以为文件创建一个表。但是,如果表未分区,则不能为多个文件组创建一个表。要为一个文件组创建表,请使用 CREATE TABLE 的 ON 子句。要创建分区表,必须先确定分区的功能机制。进行分区的标准以分区函数的形式从逻辑上与表相分离。此分区函数作为独立于表的定义存在,而这种物理分离将起到帮助作用,因为多个对象都可以使用该分区函数。因此,为表分区的第一步是创建分区函数。
为范围分区创建分区函数
范围分区必须使用边界条件进行定义。而且,即使通过 CHECK 约束对表进行了限制,也不能消除该范围任一边界的值。为了允许定期将数据移入该表,需要创建最后一个空分区。
在范围分区中,首先定义边界点:如果存在五个分区,则定义四个边界点值,并指定每个值是第一个分区的上边界 (LEFT) 还是第二个分区的下边界 (RIGHT)。根据 LEFT 或 RIGHT 指定,始终有一个空分区,因为该分区没有明确定义的边界点。
具体来讲,如果分区函数的第一个值(或边界条件)是 '1001',则边界分区中的值将是:
对于 LEFT
第一个分区是所有小于或等于 '20001001' 的数据
第二个分区是所有大于 '20001001' 的数据
对于 RIGHT
第一个分区是所有小于 '20001001' 的数据
第二个分区是所有大于或等于 '20001001' 数据
由于范围分区可能在 datetime 数据中进行定义,因此必须了解其含义。使用datetime具有某种含义:即总是同时指定日期和时间。未定义时间值的日期表示时间部分为“0”的 12:00 A.M。如果将 LEFT 与此类数据结合使用,则日期为 10 月 1 日 12:00 A.M. 的数据将位于第一个分区,而 10 月份的其他数据将位于第二个分区。从逻辑上讲,最好将开始值与 RIGHT 结合使用,而将结束值与 LEFT 结合使用。下面的三个子句将创建逻辑上相同的分区结构:
RANGE LEFT FOR VALUES ('20000930 23:59:59.997',
'20001231 23:59:59.997',
'0331 23:59:59.997',
'20010630 23:59:59.997')
或
RANGE RIGHT FOR VALUES ('20001001 00:00:00.000', '20010101 00:00:00.000', '20010401 00:00:00.000', '20010701 00:00:00.000')
或
RANGE RIGHT FOR VALUES ('20001001', '20010101', '20010401', '20010701')
注意:此处使用 datetime 数据类型确实增加了一定的复杂性,但您需要确保设置正确的边界情况。请注意使用 RIGHT 的简单性,因为默认时间为 12:00:00.000 A.M。对于 LEFT,复杂性增加是因为 datetime 数据类型具有精度。必须选择 23:59:59.997 的原因在于,datetime 数据无法保证毫秒级别的精度。相反,datetime 数据的精度在 3.33 毫秒内。使用 23:59:59.999 这个确切的时间值是不行的,因为该值将被舍入到最接近的时间值,即第二天的 12:00:00.000 A.M。由于进行了这种舍入,将无法正确定义边界,
对于 datetime 数据,必须对明确提供的毫秒值加倍小心。
注意:分区函数还允许将函数作为分区函数定义的一部分。您可以使用 DATEADD(ms,-3,'20010101'),而不是使用 '20001231 23:59:59.997' 明确定义时间。
要在四个活动分区(每个分区代表一个日历季度)中存储四分之一的 Orders 数据,并创建第五个分区以备将来使用(还是作为占位符,用于在分区表中移入和移出数据),请将 LEFT 分区函数与以下四个边界条件结合使用:
CREATE PARTITION FUNCTION OrderDateRangePFN(datetime)
AS
RANGE LEFT FOR VALUES ('20000930 23:59:59.997',
'20001231 23:59:59.997',
'20010331 23:59:59.997',
'20010630 23:59:59.997')
记住,定义四个边界点将创建五个分区。通过查看以下数据集检查此分区创建的数据集:
边界点 '20000930 23:59:59.997' 作为 LEFT(设置模式):
最左侧的分区将包含所有小于或等于 '20000930 23:59:59.997' 的值
边界点 '20001231 23:59:59.997':
第二个分区将包含所有大于 '20000930 23:59:59.997' 但小于或等于 '20001231 23:59:59.997' 的值
边界点 '20010331 23:59:59.997':
第三个分区将包含所有大于 '20001231 23:59:59.997' 但小于或等于 '20010331 23:59:59.997' 的值
边界点 '20010630 23:59:59.997':
第四个分区将包含所有大于 '20010331 23:59:59.997' 但小于或等于 '20010630 23:59:59.997' 的值
最后,第五个分区将包含所有大于 '20010630 23:59:59.997' 的值。
创建分区架构
创建分区函数后,必须将其与分区架构相关联,以便将分区定向至特定的文件组。定义分区架构时,即使多个分区位于同一个文件组中,也必须为每个分区指定一个文件组。对于前面创建的范围分区 (OrderDateRangePFN),存在五个分区;最后一个空分区将在 PRIMARY 文件组中创建。因为此分区永远不包含数据,所以不需要指定特殊的位置。
CREATE PARTITION SCHEME OrderDatePScheme
AS
PARTITION OrderDateRangePFN
TO ([2000Q3], [2000Q4], [2001Q1], [2001Q2], [PRIMARY])
注意:如果所有分区都位于同一个文件组中,则可以使用以下更简单的语法:
CREATE PARTITION SCHEME OrderDatePScheme
AS
PARTITION OrderDateRangePFN
ALL TO ([PRIMARY])
创建分区表
定义分区函数(逻辑结构)和分区架构(物理结构)后,即可创建表来利用它们。表定义应使用的架构,而架构又定义函数。要将这三者结合起来,必须指定应该应用分区函数的列。范围分区始终只映射到表中的一列,此列应与分区函数中定义的边界条件的数据类型相匹配。另外,如果表应明确限制数据集(而不是从负无穷大到正无穷大),则还应添加 CHECK 约束。
CREATE TABLE [dbo].[OrdersRange]
(
[PurchaseOrderID] [int] NOT NULL,
[EmployeeID] [int] NULL,
[VendorID] [int] NULL,
[TaxAmt] [money] NULL,
[Freight] [money] NULL,
[SubTotal] [money] NULL,
[Status] [tinyint] NOT NULL ,
[RevisionNumber] [tinyint] NULL ,
[ModifiedDate] [datetime] NULL ,
[ShipMethodID] [tinyint] NULL,
[ShipDate] [datetime] NOT NULL,
[OrderDate] [datetime] NOT NULL
CONSTRAINT OrdersRangeYear
CHECK ([OrderDate] >= '20030701'
AND [OrderDate] <= '0630 11:59:59.997'),
[TotalDue] [money] NULL
)
ON OrderDatePScheme (OrderDate)
GO
建立索引:是否分区?
默认情况下,分区表中创建的索引也使用相同的分区架构和分区列。如果属于这种情况,索引将与表对齐。尽管未作要求,但将表与其索引对齐可以使管理工作更容易进行,对于滑动窗口方案尤其如此。
例如,要创建唯一的索引,分区列必须是一个关键列;这将确保对相应的分区进行验证,以保证索引的唯一性。因此,如果需要在一列上对表进行分区,而必须在另一个列上创建唯一的索引,这些表和索引将无法对齐。在这种情况下,可以在唯一的列(如果是多列的唯一键,则可以是任一关键列)中对索引进行分区,或者根本就不进行分区。请注意,在分区表中移入和移出数据时,必须删除和创建此索引。
注意:如果您打算使用现有数据加载表并立即在其中添加索引,则通常可以通过以下方式获得更好的性能:先加载到未分区、未建立索引的表中,然后在加载数据后创建分区索引。通过为分区架构定义群集索引,可以在加载数据后更有效地为表分区。这也是为现有表分区的不错方法。要创建与未分区表相同的表并创建与已分区群集索引相同的群集索引,请用一个文件组目标位置替换创建表中的 ON 子句。然后,在加载数据之后为分区架构创建群集索引。
篇3:远程管理sqlserver的注册方法数据库教程
server|sqlserver
如果是在同一个局域网内的数据库可以直接操作第二个步骤它会自动搜索到局域网内的所以sqlserver数据库
但是如果是在不同局域网内的数据库就需要通过ip来访问步骤如下:
1、点击开始 -- 程序 -- Microsoft SQL Server -- 客户端网络实用工具 -- 另名 -- 点击添加 --- 网络库选取TCP/IP;服务器别名:数据库服务器的IP;服务器名称:数据库服务器的IP;端口默认1433(查清远程的端口是什么!) -- 确定
2、点击开始 -- 程序 -- Microsoft SQL Server -- 企业管理器 -- Mouse点 Microsoft SQL Servers -- mouse右键点 Sql Server 组;点新的sql server 注册.... -- 下一步 -- 增加主机IP,下一步---选“系统管理员给我分配的SQL Server登录信息....”. ,
远程管理sqlserver的注册方法数据库教程
,
。。。。。
篇4:如何修复SQLSERVER 数据库置疑之(二)数据库教程
server|sqlserver|数据|数据库|置疑
如果 SQL Server 因为磁盘可用空间不足,而不能完成数据库的恢复,那么 SQL Server 会返回错误 1105 并且将 sysdatabases 中的 status 列设为置疑,
你可以看到在SQLSERVER 的ERROR LOG 和OS的应用程序日志中应该有1105的错误信息:
SQL Server事务日志可能会被填满,这会阻止之后的数据库操作,包括UPDATE, DELETE, INSERT 和CHECKPOINT。
事务日志填满会导致1105错误:
Can't allocate space for object syslogs in database dbname because
the logsegment is full。 If you ran out of space in syslogs, dump
the transaction log。 Otherwise use ALTER DATABASE or
sp_extendsegment to increase the size of the segment。
这种现象可能出现于任何一个数据库中,包括Master和TempDB。一些难以预见的因素可能消耗日志空间。 例如:
一个大型事务, 尤其像批量数据更新、插入或删除。
一个未提交的事务。
检查点处理程序截除时所需的带宽过大。
截除时超过阈值
上述各种条件互相作用的结果。
用于发布的标记事务没有被日志读取程序读走
下面是修复的步骤和收缩日志的步骤:
1.在命令提示符下运行以下命令启动 SQL Server:
SQLSERVER -f -m
备注:-m 开关以单用户模式启动 SQL Server。在单用户模式下,只能成功建立一个连接。 请注意是否有任何其他客户机或服务可能会在您通过 SQL Server 查询分析器 建立连接前使用那个连接。
2. 重置置疑数据库的状态。
sp_resetstatus 'database_name'
下面是结果集:
Database'database_name'status reset!WARNING: You must reboot SQL Server prior to accessing this database!
3. 用 ALTER DATABASE 向数据库添加一个数据文件或日志文件:
USE masterGOCREATE DATABASE db_name ON( NAME = dbname_dat1, FILENAME = 'D:\MSSQL\Data\dbname_dat1.ndf', SIZE = 1000MB, FILEGROWTH = 50MB)GO
--更改该数据库以添加一个 2GB 大小的新数据文件ALTER DATABASE db_nameADD FILE ( NAME = dbname_dat2, FILENAME = 'F:\MSSQL\DATA\dbname_dat2.ndf', SIZE = 2000MB, FILEGROWTH = 50MB)GO--更改该数据库以添加一个1GB 大小的新日志文件ALTER DATABASE db_nameADD LOG FILE ( NAME = db_name_log2, FILENAME = 'F:\MSSQL\Data\db_name_log2.ldf', SIZE = 1000MB, FILEGROWTH = 20MB),GO
4. 停止并重新启动 SQL Server:
用新的数据文件或日志文件所提供的额外空间,SQL Server 应该能完成数据库的恢复。
5. 释放磁盘空间并且重新运行恢复操作,按照下面的步骤收缩日志。
sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。
为从根本上解决这样的问题,你可以按下面的操作配置SQLSERVER 2000:
a.如果不需要恢复到指定的时间点,你可以将数据库的恢复模式配置为简单,这样
UPDATE,DELETE,SELECT就不会记录日志,日志就不会增加的很大:
USE MASTER
GO
ALTER DATABASE DB_NAME SET RECOVERY SIMPLE
b.如果你的恢复模式是全部,你一定要配置日志字段收缩:
USE MASTER
GO
sp_dboption 'databasename','trunc. log on chkpt.',true
sp_dboption 'databasename','autoshrink',true
c.通过每日备份将日志收缩:
BACKUP DATABASE DATABASE_NAME TO BACKUP_DEVICES
BACKUP LOG DATABASE_NAME TO LOG_DEVICES
OR
BACKUP LOG DATABASE_NAME with truncate_only
**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志并没有收缩!
d.每天在备份数据库完成之后,重新启动MS SQLSERVER SERVICE.
USE DATABASE_NAME
go
DBCC SHRINKFILE(2,truncateonly)
**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志已经收缩!
e.手动快速收缩日志:
/ *run below script,you will shrink you database log files
immediately, in my experience,you need to run the script for 3 or
4 minutes before stopping it manually */
use databasename
dbcc shrinkfile(2,notruncate)
dbcc shrinkfile(2,truncateonly)
create table t1(char1 char(4000))
go
declare @i int
select @i=0
while(1=1)
begin
while(@i<100)
begin
INSERT INTO T1 VALUES ('A')
SELECT @I=@I+1
END
TRUNCATE table T1
BACKUP LOG youdatabasename with truncate_only
end
GO
注意 只有在您的主要支持提供者指导下或有疑难解答建议的做法时,才可以使用
sp_resetstatus,
否则,可能会损坏数据库。
由于该过程修改了系统表,系统管理员必须在运行 sp_resetstatus这个过程前,启用系统表更新。要
启 用更新,使用下面的过程:
USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
过程创建后,立即禁用系统表更新:
sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO
只有系统管理员才能执行 sp_resetstatus。执行该过程后,立即关闭 SQL Server。
请参考:
support.microsoft.com/default.aspx?scid=kb;zh-cn;317375
support.microsoft.com/default.aspx?scid=kb;zh-cn;307775
篇5:win 安装 sqlserver 的方法数据库教程
复制代码代码如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
“ProductId”=“69713-640-9722366-45198”
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
“CurrentBuild”=“1.511.1 (Obsolete data - do not use)”
“InstallDate”=dword:3f6c976d
“ProductName”=“Microsoft Windows Server 2003”
“RegDone”=“”
“SoftwareType”=“SYSTEM”
“CurrentVersion”=“5.2”
“CurrentBuildNumber”=“3790”
“BuildLab”=“3790.srv03_rtm.030324-2048”
“CurrentType”=“Uniprocessor Free”
“ProductId”=“69713-640-9722366-45198”
“DigitalProductId”=hex:a4,00,00,00,03,00,00,00,36,39,37,31,33,2d,36,34,30,2d,\
39,37,32,32,33,36,36,2d,34,35,31,39,38,00,5a,00,00,00,41,32,32,2d,30,30,30,\
30,31,00,00,00,00,00,00,00,00,e5,3f,e9,6a,2c,ed,25,35,12,ec,11,c9,8d,01,00,\
00,00,00,00,37,03,6d,3f,44,22,06,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,31,32,32,32,30,00,00,00,00,00,00,00,dc,0f,\
00,00,bf,4a,94,6c,80,00,00,00,15,18,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,34,79,ca,d7
“LicenseInfo”=hex:71,84,c7,56,a0,d6,10,6e,70,b4,9f,e9,10,1a,1e,7a,01,a4,41,09,\
25,20,0e,80,83,80,1f,31,27,86,64,1f,31,dc,22,af,f7,7d,aa,e4,2a,b9,e5,e3,6c,\
e2,01,69,85,70,91,be,a7,9f,95,e5
篇6:减震器工作原理详解
悬架系统中由于弹性元件受冲击产生振动,为改善汽车行驶平顺性,悬架中与弹性元件并联安装减振器,为衰减振动,汽车悬架系统中采用减振器多是液力减振器,其工作原理是当车架(或车身)和车桥间受振动出现相对运动时,减振器内的活塞上下移动,减振器腔内的油液便反复地从一个腔经过不同的孔隙流入另一个腔内,此时孔壁与油液间的摩擦和油液分子间的内摩擦对振动形成阻尼力,使汽车振动能量转化为油液热能,再由减振器吸收散发到大气中。在油液通道截面和等因素不变时,阻尼力随车架与车桥(或车轮)之间的相对运动速度增减,并与油液粘度有关。
减振器与弹性元件承担着缓冲击和减振的任务,阻尼力过大,将使悬架弹性变坏,甚至使减振器连接件损坏。因面要调节弹性元件和减振器这一矛盾。
(1) 在压缩行程(车桥和车架相互靠近),减振器阻尼力较小,以便充分发挥弹性元件的弹性作用,缓和冲击。这时,弹性元件起主要作用。
(2) 在悬架伸张行程中(车桥和车架相互远离),减振器阻尼力应大,迅速减振。
(3) 当车桥(或车轮)与车桥间的相对速度过大时,要求减振器能自动加大液流量,使阻尼力始终保持在一定限度之内,以避免承受过大的冲击载荷。
在汽车悬架系统中广泛采用的是筒式减振器,且在压缩和伸张行程中均能起减振作用叫双向作用式减振器,还有采用新式减振器,它包括充气式减振器和阻力可调式减振器,
1. 活塞杆;2. 工作缸筒;3. 活塞;4. 伸张阀;5. 储油缸筒; 6. 压缩阀;7. 补偿阀;8. 流通阀;9. 导向座;10. 防尘罩;11. 油封
双向作用筒式减振器示意图双向作用筒式减振器工作原理说明。在压缩行程时,指汽车车轮移近车身,减振器受压缩,此时减振器内活塞3向下移动。活塞下腔室的容积减少,油压升高,油液流经流通阀8流到活塞上面的腔室(上腔)。上腔被活塞杆1占去了一部分空间,因而上腔增加的容积小于下腔减小的容积,一部分油液于是就推开压缩阀6,流回贮油缸5。这些阀对油的节约形成悬架受压缩运动的阻尼力。减振器在伸张行程时,车轮相当于远离车身,减振器受拉伸。这时减振器的活塞向上移动。活塞上腔油压升高,流通阀8关闭,上腔内的油液推开伸张阀4流入下腔。由于活塞杆的存在,自上腔流来的油液不足以充满下腔增加的容积,主使下腔产生一真空度,这时储油缸中的油液推开补偿阀7流进下腔进行补充。由于这些阀的节流作用对悬架在伸张运动时起到阻尼作用。
由于伸张阀弹簧的刚度和预紧力设计的大于压缩阀,在同样压力作用下,伸张阀及相应的常通缝隙的通道载面积总和小于压缩阀及相应常通缝隙通道截面积总和。这使得减振器的伸张行程产生的阻尼力大于压缩行程的阻尼力,达到迅速减振的要求。
下图表示了奥迪100轿车前、后悬架减振器结构图。其作用原理如前所述。
篇7:dns工作原理详解
计算机在网络上进行通讯时只能识别如“201.51.0.73”之类的IP地址,而不能认识如www.ccidnet.com之类的域名,但是,当打开浏览器,在地址栏中输入如www.ccidnet.com的域名后,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页,
什么是DNS
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它主要是用来通过用户亲切而友好的名称(如www.ccidnet.com)代替枯燥而难记的IP地址(如“210.51.0.73”)以定位相应的计算机和相应服务。因此,要想让亲切而友好的名称能被网络所认识,则需要在名称和IP地址之间有一位“翻译官”,它能将相关的域名翻译成网络能接受的相应IP地址。DNS就是这样的一位“翻译官”,它的工作原理可用图1来表示。
图1
如何建立DNS
在校园网内部使用DNS,可以建立内部的DNS服务,使我们的校园网络的应用更加具有人性化。
1、欲实现的目标
某学校由于工作的需要,想配置一名为sjsgz.net的域,如图2所示。
图2
在这个域中,为了使用户在浏览器地址栏中键入相应的主机名就会找到相应的服务,为此,需要设置相应的DNS服务器。
2、DNS服务的安装
我们从guanli.sjsgz.net开始,准备在这台计算机上安装DNS服务器服务。安装DNS的步骤如下:
(1)选“开始→设置→控制面板”,打开“添加/删除程序”。
(2)单击“添加/删除Windows组件”,等待Windows组件向导启动。
(3)单击[下一步]按钮弹出Windows组件清单。
(4)单击[网络服务],然后再单击[详细情况]按钮。
(5)单击“DNS(域名系统)”旁的复选框。
(6)单击[确定]按钮返回“Windows组件”对话框。
(7)单击[下一步]安装相应的服务,然后逐一单击[完成]和[关闭]按钮即可完成。
不需要重新启动计算机,单击“开始→程序→管理工具→DNS”,出现如图3所示的窗口,此时可以在左边的窗口中看到代表你的服务器的图标(guanli)。
3、创建“sjsgz.net”区域
(1)用鼠标单击图3中“guanli”旁边的“+”号,然后用鼠标右键单击“guanli”,选“新建区域”以进入新建区域向导中,
(2)当向导提示到要让选择“区域类型”时,此处应该选“标准主要区域”,而在“正向或反向搜索区域中”应选“正向搜索区域”,单击“正向搜索区域”旁边的“+”号,用鼠标右键单击“正向搜索区域”,单击[下一步]按钮。
(3)屏幕出现询问“区域名”,则在“名称”后的文字框中输入“sjsgz.net”,接着向导进入到“区域文件”提示窗口中,默认的,系统会自动选中“创建新文件,文件名为”一项,并在其后的文字框中自动填有“sjsgz.net.dns”的名字(如图4所示),单击[下一步]按钮,然后单击[完成]即可完成区域创建,此时在DNS管理器的左边的“guanli→正向搜索区域”里可以看到“sjsgz.net”区域(如图3所示)。
图3
注意:创建正向搜索区域的目的是为了将主机名翻译为IP地址,你也可以创建反向搜索区域,便于将IP地址翻译成相应的主机名,创建方法和正向搜索区域的创建相似。
4、创建主机
下面我们将以创建图2中Web服务器(www.sjsgz.net)主机为例说明如何创建主机。
(1)在图3所示窗口中的“sjsgz.net”区域上单击右键,选“新建主机”,在其后的对话框中的“名称”栏中输入主机名“www”,在“IP地址”栏输入“10.88.56.2”。
(2)单击[添加主机]按钮,即成功地创建了主机地址记录www.sjsgz.net,在“新建主机”窗口再选“完成”便可回到DNS管理器中。
(3)上述记录建好以后,就可以在DNS管理器中看到相关的DNS映射记录表(如图4所示),这样,就在“www.sisgz.net”与“10.88.56.2”之间建立了映射关系。
图4
5、测试配置
DNS服务器配置完以后,如何检测它是否配置正确呢?可以用一个称作“Nslookup”的诊断程序来进行检测。下面我们就用这个命令对“guanli.sjsgz.net”DNS服务器进行测试。
(1)在命令提示符下输入:Nslookup,启动该程序。此时系统会响应它当前翻译名字所使用的DNS服务器的IP地址。
(2)然后在命令提示符下输入:ls - d sjsgz.net。这个命令的功能是让DNS服务器列出它所知道的有关sjsgz.net的每一条信息。
(3)在命令提示符下输入:Exit,即可退出Nslookup命令。
注意:在安装“DNS服务器”之前,必须用静态的IP地址配置计算机。
在校园网中安装、配置DNS服务器的目的是为了更好地应用网络为教育教学服务、更好地提供一个具有人性化的应用环境。但是有一点需要注意的是,为了配置DNS的动态更新功能,必须配置DNS和DHCP服务器。
篇8:Delphi与SQLServer存储过程编程详解数据库
前言 经常有很多初学者问到在delphi中如何调用 SQL Server的存储过程 ?问题其实很好解决,但问得多了,也就不愿答了,下面我将用实例进行说明,从在SQL Server中创建存储过程到调用的完整实例。 首先,打开 sql server管理器,在pubs 数据库 中建一个 测试 表
前言
经常有很多初学者问到在delphi中如何调用SQLServer的存储过程?问题其实很好解决,但问得多了,也就不愿答了。下面我将用实例进行说明,从在SQL Server中创建存储过程到调用的完整实例。
首先,打开sqlserver管理器,在pubs数据库中建一个测试表,表名为test,字段有id,name,和desc,全部为字符型,如果你不知道建表,那么打开sql查询分析器,贴上以下的代码,然后按执行,就会自动生成test表.
use pubs
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[test]
GO
CREATE TABLE [dbo].[test] (
[id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [char] (12) COLLATE Chinese_PRC_CI_AS NULL ,
[descrip] [char] (30) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
然后,我们来创建一个存储过程,其功能为在test中插入一条新记录.创建存储过程的代码如下,同样的,你也可以复制到查询分析器里直接执行就可以:
CREATE PROCEDURE myInsert
@id char(10) ,
@name varchar(12),
@descrip varchar(30)
AS
begin
insert into test (id,name,descrip) values (@id,@name,@descrip)
if @@rowcount=0
begin
raiserror('error',16,1)
rollback transaction
end
end
GO
接下来,新建一个工程文件,在form1上放置如下控件,并设置属性(括号内):
一个ADOConnection1: TADOConnection;
(LoginPrompt:=false;
connectionstring:=Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=pubs;Data Source=(local);)
一个ADOStoredProc1: TADOStoredProc;属性为:
(connection:=adoconnection1;
procedurename:=myinsert;//上面我们创建的那个)
一个ADOTable1: TADOTable;属性为:
(connection:=adoconnection1;
tablename:=test; //上面我们创建的那个)
一个Datasource1,属性为:
(dataset:=Tadotable;)
一个 DBGrid1: TDBGrid;属性为
(datasource:=datasource1;)
一个Button1,在其Onclick中写到:
with adoStoredproc1 do
begin
Parameters.ParamByName('@id').Value := '2';
parameters.ParamByName('@name').Value := 'myname';
parameters.ParamByName('@descrip').Value :='nosubject';
ExecProc;
end;
Adotable1.Close;
adotable1.Open;
原文转自:www.ltesting.net
★ seo优化总结
★ 数据库自荐信
【详解SQL Server中数据库快照工作原理综合教程(整理8篇)】相关文章:
关于在SQLSERVER里调用COM组件数据库教程2023-03-27
win 安装 sqlserver 的方法数据库教程2022-05-14
网站seo优化学习总结2023-03-17
KMCT分页控件与存储过程分页完美结合存储过程分页篇2022-12-24
浅谈mssql access数据库 top分页方法2023-05-24
存储过程实现分页2022-05-03
体育竞赛管理与编排系统的设计与开发论文2023-08-09
搜索引擎介绍,它的种类与工作原理2023-04-17
高级批处理的教学2022-09-21
数据库管理简历2022-10-08