SQL Server 与 Excel数据库教程

脉搏停止跳动 分享 时间: 收藏本文

【简介】感谢网友“脉搏停止跳动”参与投稿,下面是小编为大家推荐的SQL Server 与 Excel数据库教程(共6篇),欢迎大家分享。

篇1:sqlserver 如何创建分区表数据库教程

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 子句。然后,在加载数据之后为分区架构创建群集索引。

篇2:远程管理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的注册方法数据库教程

。。。。。

篇3:如何修复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

篇4: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

篇5:VB6.0与SQLServer――有源数据库连接

VB6.0中数据访问接口有三种:ActiveX数据库对象(ADO)、远程数据对象(RDO)和数据访问对象(DAO),ADO(ActiveX Data Objects)是用于存取数据源的COM组件是Microsoft数据库应用程序开发的接口,是建立在OLEDB之上的高层数据库访问技术。它封装了OLEDB所提供的接口,比起OLEDB的提供者,ADO接口可以使程序员在更高级别上进行数据交互。它提供了统一数据库访问方式OLEDB(Object Linking and Embedding Database)的一个中间层。VB6.0与SQL Server建立连接有两种方法:有源数据库连接和无源数据库连接,区别他们看是否使用了DSN连接。无源数据库连接是不需要配置ODBC数据源,利用ADO就可以通过代码编写的。

下面主要介绍一下有源数据库连接。首先要注册数据源名称(DSN),通过配置ODBC环境进行数据源注册。

数据源分三类:

(1)用户DSN:只有创建数据源的用户才可以使用他们自己创建的数据源而且只能在当前计算机上使用。

(2)系统DSN:任何使用计算机的用户和程序都可以使用,

(3)文件DSN:除了具有系统DSN的功能外,还能被其他用户在其他计算机上使用。

首先,我们选择创建文件DSN,并单击添加。

www.2cto.com

其次,在创建新数据源中选择SQL Server驱动程序。

第三步,输入想要保存此链接的文件数据源的名称。

第四步,选择服务器

然后,设置登录认证

如下选项可以根据需要选择

最后,进行测试数据源。

显示成功,点击确定,文件DSN设置成功!

ODBC(Open Database Connectivity)开放数据库互联,是一种接口规范。利用ODBC可以在应用程序中同时访问多个数据库系统,ODBC最大优点是能以统一的方式处理所有的数据库。

作者 康立贤

篇6:ERP与数据库数据库教程

erp|数据|数据库

ERP即企业资源计划,ERP理论的形成是随着产品复杂性的增加,市场竞争的加剧及信息全球化而产生的,在传统的库存理论中引入了时间分段和反映产品结构的物料清单,从而较好地解决了库存管理和生产控制中的难题,开成了基本MRP(物料需求计划)ERP设计的总体思想即把一握一个中心、两类业务、三条干线,

ERP与数据库数据库教程

,企业的主要目的是赢利,各项业务活动和功能模块要考虑归集到财务的数据,财务应是各项业务的归集中心,这是在系统规划与设计实现时必顺考虑到的。计划与执行贯穿了ERP系统的整个过程。ERP设计的三条干线为供应链管、生产管理、财务管理。这三条干线也就是制造业业务处理的主流业务。
相关专题 数据库教程