A. 代碼頁的sql相關
支持兩類字元數據類型:
Unicode 數據類型
nchar、nvarchar 和 ntext。這些數據類型使用 Unicode 字元表示法。代碼頁不適用於這些數據類型。
非 Unicode 字元數據類型
char、varchar 和 text。這些數據類型使用單位元組或雙位元組代碼頁中定義的字元表示法。
有關字元數據的存儲方式以及代碼頁、Unicode 和排序次序操作的更多信息,請參見在 MSDN 頁中的 Developing International Software for Windows 95 and Windows NT 4.0。
國際化數據和 Unicode
當只使用字元數據和代碼頁時,在一個資料庫內很難以多種語言存儲數據。很難為資料庫找到一種代碼頁,能夠存儲所需全部語言特有的字元。對於運行各種代碼頁的不同客戶端所讀取和更新的特殊字元,要確保正確地轉換也很困難。支持國際化客戶端的資料庫應始終使用 Unicode 數據,而不應使用非 Unicode 數據類型。
例如,北美洲客戶的資料庫必須處理三種主要語言:
墨西哥使用的西班牙文名稱和地址。
魁北克使用的法文名稱和地址。
加拿大的其餘地區和美國使用的英文名稱和地址。
當只使用字元列和代碼頁時須小心,以確保資料庫所安裝的代碼頁能夠處理這三種語言的字元。當其中一種語言的字元由運行另一種語言的代碼頁的客戶端讀取時,必須更加小心以確保能夠正確轉換字元。
B. 如何在一條sql語句中連接遠程資料庫,sql server 2000
建議使用鏈接伺服器
在一條sql語句中連接遠程資料庫可以使用OpenRowSet函數,下例即在語句中以Jet4.0介面鏈接了遠程資料庫Northwind.mdb,其他資料庫可參考其介面參數修改。
USE Northwind
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c
INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders)
AS o
ON c.CustomerID = o.CustomerID
GO
以下是SQL Server 2005 聯機叢書資料,對Sql server 2000 依然有效。
OPENROWSET (Transact-SQL)
包含訪問 OLE DB 數據源中的遠程數據所需的全部連接信息。當訪問鏈接伺服器中的表時,這種方法是一種替代方法,並且是一種使用 OLE DB 連接並訪問遠程數據的一次性的臨時方法。對於較頻繁引用 OLE DB 數據源的情況,請改為使用鏈接伺服器。有關詳細信息,請參閱鏈接伺服器。可以在查詢的 FROM 子句中像引用表名那樣引用 OPENROWSET 函數。依據 OLE DB 訪問介面的功能,還可以將 OPENROWSET 函數引用為 INSERT、UPDATE 或 DELETE 語句的目標表。盡管查詢可能返回多個結果集,但 OPENROWSET 只返回第一個結果集。
OPENROWSET 還通過內置的 BULK 訪問介面支持大容量操作,正是有了該訪問介面,才能從文件讀取數據並將數據作為行集返回。
Transact-SQL 語法約定
語法
OPENROWSET
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog. ] [ schema. ] object
| 'query'
}
| BULK 'data_file' ,
{ FORMATFILE = 'format_file_path' [ <bulk_options> ]
| SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )
<bulk_options> ::=
[ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
[ , ERRORFILE = 'file_name' ]
[ , FIRSTROW = first_row ]
[ , LASTROW = last_row ]
[ , MAXERRORS = maximum_errors ]
[ , ROWS_PER_BATCH = rows_per_batch ]
參數
' provider_name '
字元串,表示在注冊表中指定的 OLE DB 訪問介面的友好名稱(或 PROGID)。provider_name 沒有默認值。
' datasource '
對應於特定 OLE DB 數據源的字元串常量。datasource 是要傳遞給訪問介面的 IDBProperties 介面的 DBPROP_INIT_DATASOURCE 屬性,該屬性用於初始化訪問介面。通常,該字元串包含資料庫文件的名稱、資料庫伺服器的名稱,或者訪問介面能理解的用於定位資料庫的名稱。
' user_id '
字元串常量,它是傳遞給指定 OLE DB 訪問介面的用戶名。user_id 為連接指定安全上下文,並作為 DBPROP_AUTH_USERID 屬性傳入以初始化訪問介面。user_id 不能是 Microsoft Windows 登錄名稱。
' password '
字元串常量,它是傳遞給 OLE DB 訪問介面的用戶密碼。在初始化訪問介面時,password 作為 DBPROP_AUTH_PASSWORD 屬性傳入。password 不能是 Microsoft Windows 密碼。
' provider_string '
訪問介面特定的連接字元串,作為 DBPROP_INIT_PROVIDERSTRING 屬性傳入以初始化 OLE DB 訪問介面。通常 provider_string 封裝初始化訪問介面所需的所有連接信息。有關 SQL Native Client OLE DB 訪問介面可識別的關鍵字列表,請參閱Initialization and Authorization Properties。
catalog
指定對象所在的目錄或資料庫的名稱。
schema
架構的名稱或指定對象的對象所有者名稱。
object
對象名,它唯一地標識出將要操作的對象。
' query '
字元串常量,發送到訪問介面並由訪問介面執行。SQL Server 的本地實例不處理該查詢,但處理由訪問介面返回的查詢結果(傳遞查詢)。有些訪問介面並不通過表名而是通過命令語言提供其表格格式數據,將傳遞查詢用於這些訪問介面是非常有用的。只要查詢訪問介面支持 OLE DB Command 對象及其強制介面,那麼在遠程伺服器上就支持傳遞查詢。有關詳細信息,請參閱 SQL Native Client (OLE DB) Reference。
BULK
使用 OPENROWSET 的 BULK 行集訪問介面讀取文件中的數據。在 SQL Server 2005 中,OPENROWSET 無需將數據文件中的數據載入到目標表,便可讀取這些數據。這樣便可在單個 SELECT 語句中使用 OPENROWSET。
BULK 選項的參數可對何時開始和結束數據讀取、如何處理錯誤以及如何解釋數據提供有效控制。例如,可以指定以類型為 varbinary、varchar 或 nvarchar 的單行單列行集的形式讀取數據文件。默認行為詳見隨後的參數說明。
有關如何使用 BULK 選項的信息,請參閱本主題後面的「備注」部分。有關 BULK 選項所需許可權的信息,請參閱本主題後面的「許可權」部分。
注意:
當用於以完整恢復模式導入數據時,OPENROWSET (BULK ...) 不優化日誌記錄。
有關為大容量導入准備數據的信息,請參閱准備用於大容量導出或大容量導入的數據。
' data_file '
數據文件的完整路徑,該文件的數據將被復制到目標表中。
FORMATFILE = 'format_file_path'
指定格式化文件的完整路徑。SQL Server 2005 支持兩種格式化文件類型:XML 和非 XML。
格式化文件對定義結果集中的列類型是必需的。唯一的例外情況是指定 SINGLE_CLOB、SINGLE_BLOB 或 SINGLE_NCLOB 時;在這種情況下,不需要格式化文件。
有關格式化文件的信息,請參閱使用格式化文件大容量導入數據。
< bulk_options >
指定 BULK 選項的一個或多個參數。
CODEPAGE = { 'ACP '| 'OEM '| 'RAW '| 'code_page' }
指定該數據文件中數據的代碼頁。僅當數據含有字元值大於 127 或小於 32 的 char、varchar 或 text 列時,CODEPAGE 才是適用的。
CODEPAGE 值 說明
ACP
將數據類型為 char、varchar 或 text 的列由 ANSI/Microsoft Windows 代碼頁 (ISO 1252) 轉換為 SQL Server 代碼頁。
OEM(默認值)
將數據類型為 char、varchar 或 text 的列由系統 OEM 代碼頁轉換為 SQL Server 代碼頁。
RAW
不執行從一個代碼頁到另一個代碼頁的轉換。這是執行最快的選項。
code_page
指示編碼數據文件中的字元數據所在的源代碼頁;例如,850。該代碼頁對 SQL Server 2005 資料庫引擎正確解釋輸入數據是必需的。
ERRORFILE = 'file_name'
指定用於收集格式有誤且不能轉換為 OLE DB 行集的行的文件。這些行將按原樣從數據文件復制到此錯誤文件中。
錯誤文件在開始執行命令時創建。如果該文件已存在,將引發一個錯誤。此外,還創建了一個擴展名為 .ERROR.txt 的控制文件。此文件引用錯誤文件中的每一行並提供錯誤診斷。糾正錯誤後即可載入數據。
FIRSTROW = first_row
指定要載入的第一行的行號。默認值為 1,指示指定數據文件的第一行。通過對行終止符進行計數來確定行號。
LASTROW = last_row
指定要載入的最後一行的行號。默認值為 0,指示指定數據文件中的最後一行。
MAXERRORS = maximum_errors
指定格式化文件中定義的、在 OPENROWSET 引發異常之前可以發生的語法錯誤或格式有誤行的最大數目。在達到 MAXERRORS 之前,OPENROWSET 會忽略每個錯誤行,不載入它,並將其計為一個錯誤。
maximum_errors 的默認值為 10。
注意:
MAX_ERRORS 不適用於 CHECK 約束,也不適用於 money 和 bigint 數據類型的轉換。
ROWS_PER_BATCH = rows_per_batch
指定數據文件中近似的數據行數量。該值應與實際行數相同。
OPENROWSET 始終以單批形式導入數據文件。但如果將 rows_per_batch 的值指定為 > 0,則查詢處理器在查詢計劃中分配資源時將使用 rows_per_batch 的值作為提示。
默認情況下,ROWS_PER_BATCH 未知。指定 ROWS_PER_BATCH = 0 相當於忽略 ROWS_PER_BATCH。
SINGLE_BLOB
將 data_file 的內容作為類型為 varbinary(max) 的單行單列行集返回。
重要提示:
我們建議您僅使用 SINGLE_BLOB 選項(而不是 SINGLE_CLOB 和 SINGLE_NCLOB)導入 XML 數據,因為只有 SINGLE_BLOB 支持所有的 Windows 編碼轉換。
SINGLE_CLOB
通過以 ASCII 格式讀取 data_file,使用當前資料庫的排序規則將內容作為類型為 varchar(max) 的單行單列行集返回。
SINGLE_NCLOB
通過以 UNICODE 格式讀取 data_file,使用當前資料庫的排序規則將內容作為類型為 nvarchar(max) 的單行單列行集返回。
備注
只有在以下情況下才能使用 OPENROWSET 訪問 OLE DB 數據源中的遠程數據:指定訪問介面的 DisallowAdhocAccess 注冊表選項已顯式設置為 0,並啟用了 Ad Hoc Distributed Queries 高級配置選項。如果未設置這些選項,則默認行為不允許即席訪問。
訪問遠程 OLE DB 數據源時,伺服器不會自動委託可信連接的登錄標識,客戶端通過此登錄標識才能連接到正在查詢的伺服器。必須配置身份驗證委託。有關詳細信息,請參閱為委託配置鏈接伺服器。
如果 OLE DB 訪問介面在指定的數據源中支持多個目錄和架構,那麼就需要目錄及架構名稱。如果 OLE DB 訪問介面並不支持多個目錄和架構,那麼可以忽略 catalog 和 schema 的值。如果訪問介面只支持架構名稱,那麼必須指定一個格式為 schema.object 的兩部分名稱。如果訪問介面只支持目錄名稱,那麼必須指定一個格式為 catalog.schema.object 的三部分名稱。必須為使用 SQL Native Client OLE DB 訪問介面的傳遞查詢指定三部分名稱。有關詳細信息,請參閱 Transact-SQL 語法約定 (Transact-SQL)。
OPENROWSET 不接受參數變數。
使用帶有 BULK 選項的 OPENROWSET
以下 Transact-SQL 增強功能支持 OPENROWSET(BULK…) 函數:
與 SELECT 一起使用的 FROM 子句可以調用 OPENROWSET(BULK…) 而非表名,同時可以實現完整的 SELECT 功能。
帶有 BULK 選項的 OPENROWSET 在 FROM 子句中需要有一個相關名稱,也稱為范圍變數或別名。可以指定列別名。如果未指定列別名列表,則格式化文件必須具有列名。指定列別名會覆蓋格式化文件中的列名,例如:
FROM OPENROWSET(BULK...) AS table_alias
FROM OPENROWSET(BULK...) AS table_alias(column_alias,...n)
SELECT...FROM OPENROWSET(BULK...) 語句將直接查詢文件中的數據,無需將數據導入表中。SELECT...FROM OPENROWSET(BULK...) 語句還可以通過使用格式化文件指定列名和數據類型,從而列出大容量列別名。
INSERT...SELECT * FROM OPENROWSET(BULK...) 語句將數據文件中的數據大容量導入 SQL Server 表中。有關詳細信息,請參閱使用 BULK INSERT 或 OPENROWSET(BULK...) 導入大容量數據。
OPENROWSET BULK 選項與 INSERT 語句一起使用時,BULK 子句支持表提示。除了 TABLOCK 等常規表提示之外,BULK 子句還可以接受下列專用表提示:IGNORE_CONSTRAINTS(僅忽略 CHECK 和 FOREIGN KEY 約束)、IGNORE_TRIGGERS、KEEPDEFAULTS 和 KEEPIDENTITY。有關詳細信息,請參閱表提示 (Transact-SQL)。
有關如何使用 INSERT...SELECT * FROM OPENROWSET(BULK...) 語句的信息,請參閱導入和導出大容量數據。有關何時在事務日誌中記錄由大容量導入執行的行插入操作的信息,請參閱在大容量導入中按最小方式記錄日誌的前提條件。
注意:
使用 OPENROWSET 時,請務必了解 SQL Server 2005 是如何處理模擬的。有關安全注意事項的信息,請參閱使用 BULK INSERT 或 OPENROWSET(BULK...) 導入大容量數據。
大容量導出或導入 SQLXML 文檔
若要大容量導出或導入 SQLXML 數據,請在格式化文件中使用下列數據類型之一。
數據類型 效果
SQLCHAR 或 SQLVARYCHAR
在客戶端代碼頁或排序規則隱含的代碼頁中發送數據。
SQLNCHAR 或 SQLNVARCHAR
以 Unicode 格式發送數據。
SQLBINARY 或 SQLVARYBIN
不經任何轉換即發送數據。
許可權
OPENROWSET 許可權由傳遞給 OLE DB 訪問介面的用戶名的許可權確定。若要使用 BULK 選項,則需要有 ADMINISTER BULK OPERATIONS 許可權。
示例
A. 將 OPENROWSET 用於 SELECT 和 SQL Native Client OLE DB 訪問介面
以下示例使用 SQL Native Client OLE DB 訪問介面 (SQLNCLI) 訪問 HumanResources.Department 表,該表位於遠程伺服器 Seattle1 上的 AdventureWorks 資料庫中。使用 SELECT 語句定義返回的行集。訪問介面字元串包含 Server 和 Trusted_Connection 關鍵字。這些關鍵字由 SQL Native Client OLE DB 訪問介面識別。
復制代碼
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks.HumanResources.Department
ORDER BY GroupName, Name') AS a;
B. 使用 Microsoft OLE DB Provider for Jet
以下示例通過 Microsoft OLE DB Provider for Jet 訪問 Microsoft Access Northwind 資料庫中的 Customers 表。
注意:
該示例假定已經安裝了 Access。若要運行該示例,則必須安裝 Northwind 資料庫。有關如何安裝 Northwind 資料庫的詳細信息,請參閱下載 Northwind 和 pubs 示例資料庫。
復制代碼
SELECT CustomerID, CompanyName
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
'admin';'',Customers)
GO
C. 使用 OPENROWSET 和 INNER JOIN 中的另一個表
以下示例從 SQL Server Northwind 資料庫的本地實例中的 Customers 表以及存儲在同一計算機上的 Access Northwind 資料庫中的 Orders 表選擇所有數據。
注意:
該示例假定已經安裝了 Access。若要運行該示例,則必須安裝 Northwind 資料庫。有關如何安裝 Northwind 資料庫的詳細信息,請參閱下載 Northwind 和 pubs 示例資料庫。
復制代碼
USE Northwind
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c
INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders)
AS o
ON c.CustomerID = o.CustomerID
GO
D. 使用 OPENROWSET 將文件數據大容量插入 varbinary(max) 列中
以下示例創建一個用於演示的小型表,並將名為 Text1.txt 的文件(位於 C: 根目錄)中的文件數據插入 varbinary(max) 列中。
復制代碼
USE AdventureWorks
GO
CREATE TABLE myTable(FileName nvarchar(60),
FileType nvarchar(60), Document varbinary(max))
GO
INSERT INTO myTable(FileName, FileType, Document)
SELECT 'Text1.txt' AS FileName,
'.txt' AS FileType,
* FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document
GO
E. 將 OPENROWSET BULK 訪問介面用於格式化文件以檢索文本文件中的行
以下示例使用格式化文件檢索用製表符分隔的文本文件 values.txt 中的行,該文件包含下列數據:
復制代碼
1 Data Item 1
2 Data Item 2
3 Data Item 3
格式化文件 values.fmt 說明 values.txt 中的列:
復制代碼
9.0
2
1 SQLCHAR 0 10 "\t" 1 ID SQL_Latin1_General_Cp437_BIN
2 SQLCHAR 0 40 "\r\n" 2 Description SQL_Latin1_General_Cp437_BIN
下面的語句是檢索此數據的查詢:
復制代碼
SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt',
FORMATFILE = 'c:\test\values.fmt') AS a;
C. 向SQL Server中導入數據時總是在最後一步出現錯誤,查看報告里是下面的內容,這是什麼情況怎麼解決啊
你的源文件excel中有錯誤。
錯誤在於price2這個列名是兩列的合並列名。
請將他們分開命名再導入。
D. 將txt文件導入SQL中提示錯誤
你把你的txt貼一部分出來,並把你的table結構發出來看看 。順便看看TXT里有沒有什麼亂碼
E. 解釋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
F. 如何在sql中設置多個查詢語句窗口同時執行
同一個SQL可以寫多個查詢語句,多個查詢語句的結果是一起出來的。如:
SELECT col1,col2 FROM a_table WHERE ...
UNION
SELECT col1,col2 FROM b_table WHERE ...
G. sql 資料庫執行次序的問題
CREATE DATABASE
創建一個新資料庫及存儲該資料庫的文件,或從先前創建的資料庫的文件中附加資料庫。
說明 有關與 DISK INIT 向後兼容性的更多信息,請參見"Microsoft® SQL Server™ 向後兼容性詳細信息"中的設備(級別 3)。
語法
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> 項列表,<filespec> 項用以定義主文件組的數據文件。主文件組的文件列表後可跟以逗號分隔的 <filegroup> 項列表(可選),<filegroup> 項用以定義用戶文件組及其文件。
n
佔位符,表示可以為新資料庫指定多個文件。
LOG ON
指定顯式定義用來存儲資料庫日誌的磁碟文件(日誌文件)。該關鍵字後跟以逗號分隔的 <filespec> 項列表,<filespec> 項用以定義日誌文件。如果沒有指定 LOG ON,將自動創建一個日誌文件,該文件使用系統生成的名稱,大小為資料庫中所有數據文件總大小的 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 的倍數。
參考資料:SQL聯機叢書
H. 繁體SQL 資料庫 簡體SQL SERVER 2000
解決的辦法是指名排序方式,告訴查詢分析器應該怎樣排序即可。這里會需要用到一個關鍵字 COLLATE
Coliate 在SQLServer聯機叢書中是這樣解釋的
COLLATE
一個子句,可應用於資料庫定義或列定義以定義排序規則,或應用於字元串表達式以應用排序規則投影。
語法
COLLATE < collation_name >
< collation_name > ::=
{ Windows_collation_name } | { SQL_collation_name }
參數
collation_name
是應用於表達式、列定義或資料庫定義的排序規則的名稱。collation_name 可以只是指定的 Windows_collation_name 或 SQL_collation_name。
Windows_collation_name
是 Windows 排序規則的排序規則名稱。請參見 Windows 排序規則名稱。
SQL_collation_name
是 SQL 排序規則的排序規則名稱。請參見 SQL 排序規則名稱。
那麼我們怎麼可以知道當前的排序規則名稱是什麼呢,其實這個排序規則名稱是我們在創建資料庫(實例)的時候就可以進行選擇的,不過通常情況下我們都會默認原來的設定,不會對其進行變更,所以如果是簡體中文的SQLServer就會默認的使用簡體中文的排序規則,而如果是繁體中文的SQLServer 就會默認的使用繁體中文的排序規則。我們在察看資料庫(實例)的屬性時,常規頁簽的最下面一行就是當前的排序規則。在默認的情況下,簡體中文的排序規則名稱是:Chinese_PRC_CI_AS,而繁體中文的排序規則名稱則是:Chinese_Taiwan_Stroke_CI_AS,所以我們如果在有簡體繁體排序規則名稱混用的時候,只要聲明一下你當前要使用哪種排序規則進行比較就可以了,例如針對上面的那個SQL語句,下面兩種方法都可以解決那個錯誤提示的問題
SELECT Table1.*,Table2.*
FROM Table1
INNER JOIN Table2 ON Table2.FK = Table1.PK COLLATE Chinese_PRC_CI_AS
SELECT Table1.*,Table2.*
FROM Table1
INNER JOIN Table2 ON Table2.FK = Table1.PK COLLATE Chinese_Taiwan_Stroke_CI_AS
說了半天如何解決排序規則沖突引起的問題,如果還有興趣的話,下面把SQL Server聯機叢書裡面關於排序規則的概念貼出來給大家分享一下,省得大家再去找:
Microsoft® SQL Server™ 2000 支持多種排序規則。排序規則對控制正確使用語言(如馬其頓語或波蘭語)或字母表(如西歐語言使用的拉丁字母表 Latin1_General)字元的規則進行編碼。
每個 SQL Server 排序規則指定三個屬性:
用於 Unicode 數據類型(nchar、nvarchar 和 ntext)的排序次序。排序次序定義字元的排序序列,以及在比較操作中對字元取值的方法。
用於非 Unicode 字元數據類型(char、varchar 和 text)的排序次序。
用於存儲非 Unicode 字元數據的代碼頁。
說明 不能指定與 Unicode 數據類型(nchar、nvarchar 和 ntext)對應的代碼頁。用於 Unicode 字元的雙位元組位模式由 Unicode 標準定義且不能更改。
可在任何級別上指定 SQL Server 2000 排序規則。安裝 SQL Server 2000 實例時,可指定該實例的默認排序規則。每次創建資料庫時,可指定用於該資料庫的默認排序規則。如果未指定排序規則,資料庫的默認排序規則即是實例的默認排序規則。無論何時定義字元列、變數或參數,都可指定這些對象的排序規則。如果未指定排序規則,將使用資料庫的默認排序規則創建這些對象。
如果 SQL Server 實例的所有用戶都使用同一種語言,則應選擇支持該語言的排序規則。例如,若所有用戶都講法語,則選擇法語排序規則。
如果 SQL Server 實例的用戶使用多種語言,則應選擇能對多語種需求提供最佳支持的排序規則。例如,如果用戶一般都講西歐語言,則選擇 Latin1_General 排序規則。當支持使用多種語言的用戶時,對所有字元數據都使用 Unicode 數據類型 nchar、nvarchar 和 ntext 最為重要。Unicode 旨在消除非 Unicode char、varchar 和 text 數據類型的代碼頁轉換困難。因為排序規則定義用於比較操作的排序次序和 Unicode 字元的排序,所以當用 Unicode 數據類型實現所有的列時,排序規則仍會產生不同。即使當使用 Unicode 數據類型存儲字元數據時,也應選擇支持大多數用戶的排序規則,以防使用非 Unicode 數據類型實現列或變數。
SQL Server 排序規則定義資料庫引擎存儲和操作字元及 Unicode 數據的方式。然而,當數據移入應用程序後,在應用程序中進行的字元排序和比較將由計算機上選定的 Windows 區域設置控制。應用程序使用的字元數據排序規則是由 Windows 區域設置控制的項目之一,區域設置還定義其它項目,如數字、時間、日期和貨幣格式。對於 Microsoft Windows NT® 4.0、Microsoft Windows® 98 和 Microsoft Windows 95,可使用控制面板中的"區域設置"應用程序指定 Windows 區域設置。對於 Microsoft Windows 2000,可使用"控制面板"中的"區域選項"應用程序指定區域設置。有關 Windows 區域設置的更多信息,請參見 Microsoft Web 站點 MSDN® 頁中的 Developing International Software for Windows 95 and Windows NT 4.0。
多個排序規則可對非 Unicode 數據使用相同的代碼頁。例如,代碼頁 1251 定義西里爾語字元集。多個排序規則(如 Cyrillic_General、Ukrainian 和 Macedonian)都使用該代碼頁。雖然這些排序規則都使用相同的位集來表示非 Unicode 字元數據,但在處理字典定義時所應用的排序和比較規則略有不同,而字典定義確定語言或字母表中與排序規則相關的正確字元序列。
因為 SQL Server 2000 排序規則控制 Unicode 和非 Unicode 排序次序,所以不會遇到由為 Unicode 和非 Unicode 數據指定不同的排序規則而引起的問題。在 SQL Server 的早期版本中,對代碼頁號、字元排序次序和 Unicode 排序規則分別進行指定。SQL Server 的早期版本還支持每個代碼頁有不同數目的排序次序,並為某些代碼頁提供 Windows 區域設置中沒有的排序次序。在 SQL Server 7.0 中,還可以指定為非 Unicode 數據選擇的排序次序以外的其它 Unicode 排序次序。這會導致在使用與非 Unicode 數據相對的 Unicode 數據時,排序和比較操作返回不同的結果。
I. SQL的問題
排序規則根據特定語言和區域設置的標准指定對字元串數據進行排序和比較的規則。以 ORDER BY 子句為例:如果按升序排列,說英語的人認為字元串 Chiapas 應排在 Colima 之前。但是,對於在墨西哥說西班牙語的人來說,他們會認為以 Ch 開頭的單詞應顯示在以 C 開頭的單詞列表的末尾。排序規則規定了這些排序和比較規則。Latin_1 General 排序規則在 ORDER BY ASC 子句中將 Chiapas 排在 Colima 之前,而 Traditional_Spanish 排序規則將 Chiapas 排在 Colima 之後。
為非 Unicode 字元數據(例如 char、varchar 和 text 數據)指定排序規則後,某個特定的代碼頁將與此排序規則相關聯。例如,如果用 Latin1_General 排序規則定義表中的 char 列,則 SQL Server 將使用 1252 代碼頁的碼位解釋和顯示該列中的數據。有關代碼頁和排序規則的詳細信息,請參閱排序規則和代碼頁體系結構。
為 Unicode 數據(例如 nchar、nvarchar 和 ntext)指定的排序規則沒有與特定的代碼頁相關聯,因為 Unicode 數據幾乎可以處理世界上所有語言的所有字元。
字元集是由一對方括弧「[]」括起來的字元集合。使用字元集,你可以告訴正則表達式引擎僅僅匹配多個字元中的一個。如果你想匹配一個「a」或一個 「e」,使用<<[ae]>>。你可以使用<<gr[ae]y>>匹配gray或grey。這在你不確定你要搜索的字元是採用美國英語還是英國英語時特別有用。相反,<<gr[ae]y>>將不會匹配graay或graey。字元集中的字元順序並沒有什麼關系,結果都是相同的。
你可以使用連字元「-」定義一個字元范圍作為字元集。<<[0-9]>>匹配0到9之間的單個數字。你可以使用不止一個范圍。<<[0-9a-fA-F] >>匹配單個的十六進制數字,並且大小寫不敏感。你也可以結合范圍定義與單個字元定義。<<[0-9a-fxA-FX]> >匹配一個十六進制數字或字母X。
J. SQL讀取txt內容
http://www.dedecms.com/knowledge/data-base/sql-server/2012/0821/11295.html
你看看這個,希望對你有幫助。