当前位置:首页 » 编程语言 » mssql定序解法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mssql定序解法

发布时间: 2022-08-26 22:33:15

㈠ 怎么样解决MSsql产生死锁的问题

一、 什么是死锁
死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进程称为死锁进程.

二、 死锁产生的四个必要条件
互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放
请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放
不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放
环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
三、 如何处理死锁
1) 锁模式
共享锁(S)
由读操作创建的锁,防止在读取数据的过程中,其它事务对数据进行更新;其它事务可以并发读取数据。共享锁可以加在表、页、索引键或者数据行上。在SQL SERVER默认隔离级别下数据读取完毕后就会释放共享锁,但可以通过锁提示或设置更高的事务隔离级别改变共享锁的释放时间。
2.独占锁(X)
对资源独占的锁,一个进程独占地锁定了请求的数据源,那么别的进程无法在此数据源上获得任何类型的锁。独占锁一致持有到事务结束。
3.更新锁(U)
更新锁实际上并不是一种独立的锁,而是共享锁与独占锁的混合。当SQL SERVER执行数据修改操作却首先需要搜索表以找到需要修改的资源时,会获得更新锁。
更新锁与共享锁兼容,但只有一个进程可以获取当前数据源上的更新锁,
其它进程无法获取该资源的更新锁或独占锁,更新锁的作用就好像一个序列化阀门(serialization gate),将后续申请独占锁的请求压入队列中。持有更新锁的进程能够将其转换成该资源上的独占锁。更新锁不足以用于更新数据—实际的数据修改仍需要用到独占锁。对于独占锁的序列化访问可以避免转换死锁的发生,更新锁会保留到事务结束或者当它们转换成独占锁时为止。
4. 意向锁(IX,IU,IS)
意向锁并不是独立的锁定模式,而是一种指出哪些资源已经被锁定的机制。
如果一个表页上存在独占锁,那么另一个进程就无法获得该表上的共享表锁,这种层次关系是用意向锁来实现的。进程要获得独占页锁、更新页锁或意向独占页锁,首先必须获得该表上的意向独占锁。同理,进程要获得共享行锁,必须首先获得该表的意向共享锁,以防止别的进程获得独占表锁。
5. 特殊锁模式(Sch_s,Sch_m,BU)
SQL SERVER提供3种额外的锁模式:架构稳定锁、架构修改锁、大容量更新锁。
6.转换锁(SIX,SIU,UIX)
转换锁不会由SQL SERVER 直接请求,而是从一种模式转换到另一种模式所造成的。SQL SERVER 2008支持3种类型的转换锁:SIX、SIU、UIX.其中最常见的是SIX锁,如果事务持有一个资源上的共享锁(S),然后又需要一个IX锁,此时就会出现SIX。
7.键范围锁
键范围锁是在可序列化隔离级别中锁定一定范围内数据的锁。保证在查询数据的键范围内不允许插入数据。
http://www.cnblogs.com/qiaokai/p/5344252.html

㈡ 关于ms-sql中主键自增的插入

sqlserver里,自动增加不用在sql里写,数据库会自动增加的,不用写
也就是说,insert语句里不用写id

试一下吧,sqlserver的自增量和ORACLE不同,不用另外写,能自动加的

要么你就插个null好了

㈢ 什么是网站数据库什么是Access数据库什么是MSSQL数据库什么是MYSQL数据库数据库到底是什么

IT专家网 http://database.ctocio.com.cn/tips/395/7631395.shtml

建立网站如何选择适合自己的数据库
作者: , 出处:IT专家网社区, 责任编辑: 李书琴, 2007-10-29 11:06
大家知道,常用的数据库一般是分为三种: (一)、Access (二)SQL Server(三)MySQL,那么,用户想做一个网站,到底哪一种数据库是适合自己的呢?以下给大家介绍一下常用的数据库有什么区别或是功能方面……
不少企业和个人站长在网站制作时,会对数据库的概念产生迷惑或误解。究竟使用什么样的数据库才好了?合适的才是最好的。下面是一些关于数据库的详细资料。建议打算建立网站的企业和个人站长,新手网站管理员阅读一下。听听92HeZu网专家对于数据库的解释,让大家更好的了解数据库,从而确定合适的建站方案。

大家知道,常用的数据库一般是分为三种: (一)、Access (二)SQL Server(三)MySQL,那么,用户想做一个网站,到底哪一种数据库是适合自己的呢?以下给大家介绍一下常用的数据库有什么区别或是功能方面。

Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。

SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。92HeZu网全部双线合租空间均可使用Access数据库,同时也支持SQL Server。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。

SQL Server 特点:

1.真正的客户机/服务器体系结构。

2.图形化用户界面,使系统管理和数据库管理更加直观、简单。

3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。

4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与microsoft BackOffice产品集成。

5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。

6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。

7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。

MySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,92HeZu网免费赠送MySQL。目前MySQL被广泛地应用在Internet上的中小型网站中。提供由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库

MySQL特点:

1.MySql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。

2.MySql可运行在不同的操作系统下。简单地说,MySql可以支持Windows95/98/NT/2000以及UNIX、Linux和SUN OS等多种操作系统平台。

3.MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证。

4.MySql支持ODBC for Windows。MySql支持所有的ODBC 2.5函数和其他许多函数,这样就可以用Access连接MySql服务器,从而使得MySql的应用被大大扩展。

5.MySql支持大型的数据库。虽然对于用Php编写的网页来说只要能够存放上百条以上的记录数据就足够了,但MySql可以方便地支持上千万条记录的数据库。

6.MySql拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。

7.强大的查询功能。MySql支持查询的SELECT和WHERE语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便。

8.PHP为MySql提供了强力支持,PHP中提供了一整套的MySql函数,对MySql进行了全方位的支持。

92合租( http://www.92hezu.com ) 为广大用户量身定多种不同的虚拟主机及数据库,所有数据库定时备份,在线数据库还原,导入等功能,使用方便,安全,稳定!三种数据库各有特点,92HeZu网建议大家在选择数据库的时候可以根据自己的学习、工作情况来选择。假如你是一个新手,可以选择一个易操作、没有太多辅助功能的数据库系统,如ACCESS。通过对数据库系统的实际操作,可以获得一些感性认识,也会遇到一些问题,这些问题正是激发学习兴趣的动力。虽然从DBMS理论的角度来讲,ACCESS还不算完整,但是它们确实很实用。如果你是为实际工作选择数据库,则可以根据业务规模、流程、数据量、现有技术人员的技术水平、软件环境等因素来综合考虑,如可选择MySql、Sqlserver。

㈣ 请问怎么修改MS SQL数据库的编码方式啊

sql server 2000的unicode编码有特殊性,仅仅在rails中使用utf8编码,和把全部rails项目文件格式改成utf8之外,还是不够的。仅仅这样做,只是部分中文字符能够正确处理,而且存入sql server2000中的中文数据,也完全是乱码。正确的配置方法应该如下。

1. ms sql server2000中数据字段全部要选择成n打头的类型,比如ntext,nvarchar等。

2.安装ADO Driver
安装one -click installer 来安装ruby 的话就已经安装了所有连接SQL Server使用的需求包.但是,并没有安装ADO Driver.
这样来安装它:

在Ruby目录下找到这个目录: \ruby\lib\ruby\site_ruby\1.8\DBD .例如:我的Ruby安装在D:\ruby中,所以是这个目录D:\ruby\lib\ruby\site_ruby\1.8\DBD 在该目录中创建一个ADO文件夹. 下载Ruby-DBI,将lib/dbd_ado/ADO.rb文件拷贝到X:/ruby/lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb

3. 配置database.yml:Java代码
development:
adapter: sqlserver
database: database_name
host: server_name
username: user_name
password: your_pw_here

development:
adapter: sqlserver
database: database_name
host: server_name
username: user_name
password: your_pw_here

4.在environment.rb添加下面代码
require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8

在这里稍微解释下第四部分的设置。sql server 2000中使用的unicode 并非是utf8,ado的默认链接编码都是当前系统设置的code pages相关的。

一般的windows设置都是非unicode的,比如简体中文windows系统下一般都是gb2312, 在rails中database.yml设置encoding: utf8,对于sql server没有任何用处。

为了迫使sql server接受utf8数据,必须修改ado链接的code pages值为utf8,才能让ado部分代码在接受rails传入的utf8数据之后,不做任何额外的处理. 否则的话,ado部分代码会根据当前系统的默认code pages值来处理这里字符数据。

于是在中文windows系统上,从utf8的rails项目中传入的数据,会被当作gb2312编码的数据来传递到sql server2000中,于是sql server2000中存入的数据会成为乱码,也有部分数据在处理过程中出错,导致sql 语句执行出错。比如常见的中文字符右边的单引号会不见的情况。

不设置 WIN32OLE.codepage = WIN32OLE::CP_UTF8,你的整个系统编码配置是这样的
rails(utf8)<-->ado(根据当前系统cp来取得编码,或是gb2312或是其他)<-->sql server 2000 (unicode)
整个系统编码不一至

WIN32OLE.codepage = WIN32OLE::CP_UTF8 这句代码就是为了更改cp值.整个系统编码配置是这样的
rails(utf8)<-->ado(utf8)<-->sql server 2000 (unicode)
整个系统编码一至,整个系统中不会再出现任何乱码.

注:以上转自:jack发表在javaeye网站上的文章,地址:http://www.javaeye.com/topic/53877

database.yml也可以用以下的配置试试(用下面这种的话第1条或许不用,没试过)

㈤ asp+mssql

1、现在的程序中一定会有两个文件,一个为“.ldf” 和 “.mdf”的文件 这个就是数据库文件。然后在sqlserver中导入,最后设置一下conn文件就可以了。

2、如果上两个文件不存在的话 那么可以在这个程序目录中搜索数据库的备份文件,然后还原。

㈥ access转sql(mssql或者my sql)数据问题

ACCESS转SQL在Windows环境中其实并不需要其他辅助工具。Windows默认支持Access转SQL。
1.打开您的控制面板-管理工具-数据源[如果没有,请在控制面板-程序和功能中选择打开与关闭Windows功能中自行添加]
2.打开 ODBC数据源管理器-添加-Microsoft Access Driver(*.mdb)。其中数据源名随便填写。然后选择您数据库对象的位置。
3.打开您的MSSQL数据库-新建一个空数据库。然后导入数据,数据源选择Microsoft Access。选择对应文件即可完成。

MSSQL 是微软的 SQL Server,运行于windows 2000,2003等平台。
MYSQL 是个开源的数据库Server,可运行在windows平台、unix\\linux平台,其标准版是免费。

MSSQL与MYSQL的主要区别[不同点]:

1. mysql支持enum,和set类型,sql server不支持。
2. mysql不支持nchar,nvarchar,ntext类型。
3.mysql的递增语句是AUTO_INCREMENT,而mssql是identity(1,1)。
4.msms默认到处表创建语句的默认值表示是((0)),而在mysql里面是不允许带两括号的。
5.mysql需要为表指定存储类型。
6.mssql识别符是[],[type]表示他区别于关键字,但是mysql却是 `,也就是按键1左边的那个符号。
7.mssql支持getdate()方法获取当前时间日期,但是mysql里面可以分日期类型和时间类型,获取当前日期是cur_date(),当前完整时间是 now()函数。
8.mssql不支持replace into 语句,但是在最新的sql20008里面,也支持merge语法。
9.mysql支持insert into table1 set t1 = ‘’, t2 = ‘’ ,但是mssql不支持这样写。
10.mysql支持insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1)。
11.mssql不支持limit语句,是非常遗憾的,只能用top 取代limt 0,N,row_number() over()函数取代limit N,M。
12.mysql在创建表时要为每个表指定一个存储引擎类型,而mssql只支持一种存储引擎
13.mysql不支持默认值为当前时间的datetime类型(mssql很容易做到),在mysql里面是用timestamp类型
14.mssql里面检查是否有这个表再删除,需要这样:
if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'uc_newpm')   and   OBJECTPROPERTY(id,   N'IsUserTable')   =   1) ,
但是在mysql里面只需要 DROP TABLE IF EXISTS cdb_forums。
15.mysql支持无符号型的整数,那么比不支持无符号型的mssql就能多出一倍的最大数存储。
16.mysql不支持在mssql里面使用非常方便的varchar(max)类型,这个类型在mssql里面既可做一般数据存储,也可以做blob数据存储。
17.mysql创建非聚集索引只需要在创建表的时候指定为key就行,比如:KEY displayorder (fid,displayorder) 在mssql里面必须要:create unique nonclustered index index_uc_protectedmembers_username_appid on dbo.uc_protectedmembers
(username asc,appid asc)。
18.mysql text字段类型不允许有默认值。
19.mysql的一个表的总共字段长度不超过65XXX。
20.一个很表面的区别就是mysql的安装特别简单,而且文件大小才110M(非安装版),相比下微软的MSSQL就是庞然大物。
21.mysql的管理工具有几个比较好的,mysql_front,和官方那个套件,不过都没有SSMS的使用方便,这是mysql很大的一个缺点。
22.mysql的存储过程只是出现在最新的版本中,稳定性和性能可能不如mssql。
23.同样的负载压力,mysql要消耗更少的CPU和内存,mssql的确是很耗资源。
24.php连接mysql和mssql的方式都差不多,只需要将函数的mysql替换成mssql即可。
25.mysql支持date,time,year类型,mssql到2008才支持date和time。

㈦ mssql中如何按ID顺序显示数据

你没有指定排序,那么返回结果的顺序就会根据查询优化器决定的查询顺序返回,如果你要按ID升序就加个order by 即可

㈧ 解释SQL语句功能 越详细越好

就是创建一个新的数据库,自己看看帮助很简单的!

语法
CREATE DATABASE database_name
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]

< filespec > ::=

[ PRIMARY ]
( [ NAME = logical_file_name , ]
FILENAME = 'os_file_name'
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] ) [ ,...n ]

< filegroup > ::=

FILEGROUP filegroup_name < filespec > [ ,...n ]

参数
database_name

新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name 最多可以包含 128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则 Microsoft® SQL Server™ 会通过向 database_name 追加后缀来生成逻辑名。该操作要求 database_name 在 123 个字符之内,以便生成的日志文件逻辑名少于 128 个字符。

ON

指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。当后跟以逗号分隔的用以定义主文件组的数据文件的 <filespec> 项列表时,该关键字是必需的。主文件组的文件列表后可跟以逗号分隔的 <filegroup> 项列表(可选),<filegroup> 项用以定义用户文件组及其文件。

n

占位符,表示可以为新数据库指定多个文件。

LOG ON

指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的用以定义日志文件的 <filespec> 项列表。如果没有指定 LOG ON,则会自动创建一个日志文件,其名称由系统生成,大小为下列两个值中的较大者:0.5 MB 和数据库中所有数据文件大小总和的 25%。

FOR LOAD

支持该子句是为了与早期版本的 Microsoft SQL Server 兼容。数据库在打开 dbo use only 数据库选项的情况下创建,并且将其状态设置为正在装载。SQL Server 7.0 版中不需要该子句,因为 RESTORE 语句可以作为还原操作的一部分重新创建数据库。

FOR ATTACH

指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 <filespec> 条目。至于其它 <filespec> 条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须为这些文件指定 <filespec> 条目。附加的数据库必须使用与 SQL Server 相同的代码页和排序次序创建。应使用 sp_attach_db 系统存储过程,而不要直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 <filespec> 项目时,才需要使用 CREATE DATABASE FOR ATTACH。

如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。

collation_name

指定数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。

有关 Windows 和 SQL 排序规则名称的更多信息,请参见 COLLATE。

PRIMARY

指定关联的 <filespec> 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户文件组的对象。主文件组的第一个 <filespec> 条目成为主文件,该文件包含数据库的逻辑起点及其系统表。一个数据库只能有一个主文件。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。

NAME

为由 <filespec> 定义的文件指定逻辑名称。如果指定了 FOR ATTACH,则不需要指定 NAME 参数。

logical_file_name

用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。logical_file_name 在数据库中必须唯一,并且符合标识符的规则。该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符。

FILENAME

为 <filespec> 定义的文件指定操作系统文件名。

'os_file_name'

操作系统创建 <filespec> 定义的物理文件时使用的路径名和文件名。os_file_name 中的路径必须指定 SQL Server 实例上的目录。os_file_name 不能指定压缩文件系统中的目录。

如果文件在原始分区上创建,则 os_file_name 必须只指定现有原始分区的驱动器字母。每个原始分区上只能创建一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。

SIZE

指定 <filespec> 中定义的文件的大小。如果主文件的 <filespec> 中没有提供 SIZE 参数,那么 SQL Server 将使用 model 数据库中的主文件大小。如果次要文件或日志文件的 <filespec> 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。

size

<filespec> 中定义的文件的初始大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值为 512 KB。如果没有指定 size,则默认值为 1 MB。为主文件指定的大小至少应与 model 数据库的主文件大小相同。

MAXSIZE

指定 <filespec> 中定义的文件可以增长到的最大大小。

max_size

<filespec> 中定义的文件可以增长到的最大大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件将增长到磁盘变满为止。

说明 在磁盘即将变满时,Microsoft Windows NT® S/B 系统日志会警告 SQL Server 系统管理员。

UNLIMITED

指定 <filespec> 中定义的文件将增长到磁盘变满为止。

FILEGROWTH

指定 <filespec> 中定义的文件的增长增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。

growth_increment

每次需要新的空间时为文件添加的空间大小。指定一个整数,不要包含小数位。0 值表示不增长。该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。如果没有指定 FILEGROWTH,则默认值为 10%,最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。

注释
使用一条 CREATE DATABASE 语句即可创建数据库以及存储该数据库的文件。SQL Server 分两步实现 CREATE DATABASE 语句:

SQL Server 使用 model 数据库的复本初始化数据库及其元数据。

然后,SQL Server 使用空页填充数据库的剩余部分,除了包含记录数据库中空间使用情况以外的内部数据页。
因此,model 数据库中任何用户定义对象均复制到所有新创建的数据库中。可以向 model 数据库中添加任何对象,例如表、视图、存储过程、数据类型等,以将这些对象添加到所有数据库中。

每个新数据库都从 model 数据库继承数据库选项设置(除非指定了 FOR ATTACH)。例如,在 model 和任何创建的新数据库中,数据库选项 select into/bulk 都设置为 OFF。如果使用 ALTER DATABASE 更改 model 数据库的选项,则这些选项设置会在创建的新数据库中生效。如果在 CREATE DATABASE 语句中指定了 FOR ATTACH,则新数据库将继承原始数据库的数据库选项设置。

一台服务器上最多可以指定 32,767 个数据库。

有三种类型的文件用来存储数据库:

主文件包含数据库的启动信息。主文件还可以用来存储数据。每个数据库都包含一个主文件。

次要文件保存所有主要数据文件中容纳不下的数据。如果主文件大到足以容纳数据库中的所有数据,就不需要有次要数据文件。而另一些数据库可能非常大,需要多个次要数据文件,也可能使用多个独立磁盘驱动器上的次要文件,以将数据分布在多个磁盘上。

事务日志文件保存用来恢复数据库的日志信息。每个数据库必须至少有一个事务日志文件(尽管可以有多个)。事务日志文件最小为 512 KB。
每个数据库至少有两个文件,一个主文件和一个事务日志文件。

尽管 'os_file_name' 可以是任何有效的操作系统文件名,但如果使用以下建议的扩展名,则可以更加清楚地反映文件的用途。

文件类型 文件扩展名
主要数据文件 .mdf
次要数据文件 .ndf
事务日志文件 .ldf