㈠ 怎麼樣解決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