當前位置:首頁 » 編程語言 » sqladdfile
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqladdfile

發布時間: 2023-04-14 12:41:45

1. 怎麼用sql語句修改索引所在的文件組

修改文件組的名稱
alter database database_name
modify filegroup old_filegroup_name
name=new_filegroup_name

創建一個文件指定一個文件組
假如原來就存在一個文件組filegroup_1
那麼就這么寫
alter database database_name
add file
(
name='file_name',
filename='d:\file_name.ndf',
size=...,
maxsize=...,
filegrowth=...
)
to filegroup filegroup_1

假如不存在文件組filegroup_1
可以先創建一個,如下
alter database database_name
add filegroup filegroup_1
之後重復上面的alter database...語句即可。

2. sql 語句問題

修改資料庫的時候應該可以添加的是 附屬主數據文件 ,文件的擴展名是 ndf 文件,下面誰 SQL SERVER2000的幫助文檔

Transact-SQL 參考

ALTER DATABASE
在資料庫中添加或刪除文件和文件組。也可用於更改文件和文件組的屬性,例如更改文件的名稱和大小。ALTER DATABASE 提供了更改資料庫名稱、文件組名稱以及數據文件和日誌文件的邏輯名稱的能力。

ALTER DATABASE 支持資料庫選項的設置。在早期版本的 Microsoft® SQL Server™ 中,這些選項可以通過 sp_dboption 存儲過程來設置。在此次發布的版本中,SQL Server 繼續支持 sp_dboption存儲過程,但在未來版本中可能不再支持。可使用 DATABASEPROPERTYEX 函數檢索資料庫選項的當前設置。

語法
ALTER DATABASE database
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}

< filespec > ::=

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

< optionspec > ::=

<state_option>
| < cursor_option >
| < auto_option >
| < sql_option >
| < recovery_option >

< state_option > ::=
{ SINGLE_USER | RESTRICTED_USER | MULTI_USER }
| { OFFLINE | ONLINE }
| { READ_ONLY | READ_WRITE }

< termination > ::=
ROLLBACK AFTER integer [ SECONDS ]
| ROLLBACK IMMEDIATE
| NO_WAIT

< cursor_option > ::=
CURSOR_CLOSE_ON_COMMIT { ON | OFF }
| CURSOR_DEFAULT { LOCAL | GLOBAL }

< auto_option > ::=
AUTO_CLOSE { ON | OFF }
| AUTO_CREATE_STATISTICS { ON | OFF }
| AUTO_SHRINK { ON | OFF }
| AUTO_UPDATE_STATISTICS { ON | OFF }

< sql_option > ::=
ANSI_NULL_DEFAULT { ON | OFF }
| ANSI_NULLS { ON | OFF }
| ANSI_PADDING { ON | OFF }
| ANSI_WARNINGS { ON | OFF }
| ARITHABORT { ON | OFF }
| CONCAT_NULL_YIELDS_NULL { ON | OFF }
| NUMERIC_ROUNDABORT { ON | OFF }
| QUOTED_IDENTIFIER { ON | OFF }
| RECURSIVE_TRIGGERS { ON | OFF }

< recovery_option > ::=
RECOVERY { FULL | BULK_LOGGED | SIMPLE }
| TORN_PAGE_DETECTION { ON | OFF }

參數
database

是要更改的資料庫的名稱。

ADD FILE

指定要添加文件。

TO FILEGROUP

指定要將指定文件添加到的文件組。

filegroup_name

是要添加指定文件的文件組名稱。

ADD LOG FILE

指定要將日誌文件添加到指定的資料庫。

REMOVE FILE

從資料庫系統表中刪除文件描述並刪除物理文件。只有在文件為空時才能刪除。

ADD FILEGROUP

指定要添加文件組。

filegroup_name

是要添加或除去的文件組名稱。

REMOVE FILEGROUP

從資料庫中刪除文件組並刪除該文件組中的所有文件。只有在文件組為空時才能刪除。

MODIFY FILE

指定要更改給定的文件,更改選項包括 FILENAME、SIZE、FILEGROWTH 和 MAXSIZE。一次只能更改這些屬性中的一種。必須在 <filespec> 中指定 NAME,以標識要更改的文件。如果指定了 SIZE,那麼新大小必須比文件當前大小要大。只能為 tempdb 資料庫中的文件指定 FILENAME,而且新名稱只有在 Microsoft SQL Server 重新啟動後才能生效。

若要更改數據文件或日誌文件的邏輯名稱,應在 NAME 選項中指定要改名的邏輯文件名稱,並在 NEWNAME 選項中指定文件的新邏輯名稱。

示例如下:

MODIFY FILE (NAME = logical_file_name, NEWNAME = new_logical_name...)。

可同時運行幾個 ALTER DATABASE database MODIFY FILE 語句以實現多個修改文件操作時性能最優。

MODIFY NAME = new_dbname

重命名資料庫。

MODIFY FILEGROUP filegroup_name { filegroup_property | NAME = new_filegroup_name }

指定要修改的文件組和所需的改動。

如果指定 filegroup_name 和 NAME = new_filegroup_name,則將此文件組的名稱改為 new_filegroup_name。

如果指定 filegroup_name 和 filegroup_property,則表示給定文件組屬性將應用於此文件組。filegroup_property 的值有:

READONLY
指定文件組為只讀。不允許更新其中的對象。主文件組不能設置為只讀。只有具有排它資料庫訪問許可權的用戶才能將文件組標記為只讀。

READWRITE
逆轉 READONLY 屬性。允許更新文件組中的對象。只有具有排它資料庫訪問許可權的用戶才能將文件組標記為讀/寫。

DEFAULT
將文件組指定為默認資料庫文件組。只能有一個資料庫文件組是默認的。CREATE DATABASE 語句將主文件組設置為初始的默認文件組。如果在 CREATE TABLE、ALTER TABLE 或者 CREATE INDEX 語句中沒有指定文件組,則新表及索引將在默認文件組—中創建。
WITH <termination>

指定當資料庫從一種狀態轉換到另一種狀態時,何時回滾未完成的事務。只能指定一條 termination 子句,而且該子句應跟在 SET 子句後面。

ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE
設定是在指定秒數之後回滾還是立即回滾。如果省略了 termination 子句,那麼將允許事務自主提交或回滾。

NO_WAIT
指定如果請求的資料庫語句或選項更改只有等待事務自主提交或回滾才能立即完成,該請求將失敗。
COLLATE < collation_name >

指定資料庫的排序規則。排序規則名稱既可以是 Windows 排序規則名稱,也可以是 SQL 排序規則名稱。如果沒有指定排序規則,則將 SQL Server 實例的默認排序規則指派為資料庫的排序規則。

有關 Windows 和 SQL 排序規則名稱的更多信息,請參見 COLLATE。

<filespec>

控制文件屬性。

NAME
指定文件的邏輯名稱。

logical_file_name
是在 Microsoft SQL Server 中引用文件時所用的名稱。該名稱在資料庫中必須唯一,並應遵循標識符規則。該名稱可以是字元或 Unicode 常量、常規標識符或定界標識符。有關更多信息,請參見使用標識符。

FILENAME
指定操作系統中的文件名。當和 MODIFY FILE一起使用時,只能對 tempdb 資料庫中的文件指定 FILENAME。新 tempdb 文件名只有在 SQL Server 停止並重新啟動後才能生效。

'os_file_name'
由操作系統使用的文件的路徑和文件名。該文件必須駐留在安裝 SQL Server 的伺服器上。數據文件和日誌文件不應置於壓縮的文件系統中。
如果文件位於原始分區上,那麼 os_file_name 必須僅指定該原始分區的驅動器字母。每個原始分區上只能存放一個文件。原始分區上的文件不會自動增長;因此,os_file_name 指定原始分區時,不需要指定 MAXSIZE 和 FILEGROWTH 參數。

SIZE
指定文件大小。

size
是文件的大小。後綴 KB、MB、GB 和 TB 可用於指定千位元組、兆位元組、千兆位元組或兆兆位元組。默認值為 MB。指定一個整數,不要包含小數位。size 的最小值是 512 KB,如果 size 未指定,默認值是 1 MB。當隨 ADD FILE 一起指定時,size 是文件的初始大小。當隨 MODIFY FILE 一起指定時,size 是文件的新大小,而且必須大於文件的當前大小。

MAXSIZE
指定最大的文件大小。

max_size
是最大的文件大小。後綴 KB、MB、GB 和 TB 可用於指定千位元組、兆位元組、千兆位元組或兆兆位元組。默認值為 MB。指定一個整數,不要包含小數位。如果沒有指定 max_size,那麼文件大小將一直增長,直至磁碟填滿為止。當磁碟即將填滿時,Microsoft Windows NT® 應用程序日誌將向管理員發出警告。

UNLIMITED
指定文件大小可一直增加直至磁碟已滿。

FILEGROWTH
指定文件增長的增量。

growth_increment
每次需要新的空間時為文件添加的空間大小。值為 0 表示不增長。該值可按 MB、KB 或 % 的形式指定。指定一個整數,不要包含小數位。如果指定了 %,那麼文件增量為文件發生增長時文件大小的指定百分比。如果未在數量後面指定 MB、KB 或 %,則默認值為 MB。如果 FILEGROWTH 未指定,默認值為 10%,且最小值為 64 KB。指定的大小舍入為最接近的 64 KB 的倍數。
<state_option>

控制用戶對資料庫的訪問,資料庫是否處於聯機狀態,以及是否允許寫操作。

SINGLE_USER | RESTRICTED_USER | MULTI_USER
控制哪些用戶可以訪問資料庫。如果指定為 SINGLE_USER,那麼同一時間只能有一個用戶訪問資料庫。如果指定為 RESTRICTED_USER,那麼只有 db_owner、dbcreator 或 sysadmin 角色的成員可以使用資料庫。MULTI_USER 使資料庫返回到正常操作狀態。

OFFLINE | ONLINE
控制資料庫是聯機還是離線。

READ_ONLY | READ_WRITE
指定資料庫是否處於只讀模式。在只讀模式下,用戶可以從資料庫中讀取數據,但不能修改數據。當指定 READ_ONLY 時,資料庫不能處於使用狀態。master 資料庫是一個例外,當該資料庫設置為 READ_ONLY 時,只有系統管理員才能使用該資料庫。READ_WRITE 使資料庫返回到讀寫操作狀態。
<cursor_option>

控制游標選項。

CURSOR_CLOSE_ON_COMMIT ON | OFF
如果指定為 ON,在事務提交或回滾時所有打開的游標都將關閉。如果指定為 OFF,那麼在事務提交時打開的游標仍保持打開;而回滾事務時關閉所有除定義為 INSENSITIVE 或 STATIC 之外的游標。

CURSOR_DEFAULTLOCAL | GLOBAL
控制游標作用域默認為 LOCAL 還是 GLOBAL。
<auto_option>

控制自動選項。

AUTO_CLOSE ON | OFF
如果指定為 ON,那麼最後一個用戶退出後,資料庫將干凈地關閉,其佔用的資源將釋放。如果指定為 OFF,那麼最後一個用戶退出後資料庫仍保持打開。

AUTO_CREATE_STATISTICS ON | OFF
如果指定為 ON,那麼所有優化查詢需要但缺少的統計信息都會在查詢優化時自動生成。

AUTO_SHRINK ON | OFF
如果指定為 ON,資料庫文件將定期自動收縮。

AUTO_UPDATE_STATISTICS ON | OFF
如果指定為 ON,所有查詢優化所需的過時的統計信息在都將在優化時自動重建。如果指定為 OFF,統計信息必須手工更新。
<sql_option>

控制 ANSI 遵從性選項。

ANSI_NULL_DEFAULT ON | OFF
如果指定為 ON,CREATE TABLE 在確定列是否允許空值時遵從 SQL-92 規則。

ANSI_NULLS ON | OFF
如果指定為 ON,所有與空值的比較運算結果為 UNKNOWN。如果指定為 OFF,非 UNICODE 值與空值的比較運算在兩者均為 NULL 時結果為 TRUE。

ANSI_PADDING ON | OFF
如果指定為 ON,在比較或插入前,字元串將填充為同一長度。如果指定為 OFF,字元串將不填充。

ANSI_WARNINGS ON | OFF
如果指定為 ON,當出現諸如被零除的情況時將產生錯誤或警告。

ARITHABORT ON | OFF
如果指定為 ON,在執行查詢時如果發生溢出或被零除,該查詢將終止。

CONCAT_NULL_YIELDS_NULL ON | OFF
如果指定為 ON,當串聯操作的兩個操作數中任意一個為 NULL 時,結果也為 NULL。如果指定為 OFF,空值將按空字元串對待。默認設置為 OFF。

QUOTED_IDENTIFIER ON | OFF
如果指定為 ON,雙引號將可用於包含定界標識符。

NUMERIC_ROUNDABORT ON | OFF
如果指定為 ON,當表達式中出現精度損失時將產生錯誤。

RECURSIVE_TRIGGERS ON | OFF
如果指定為 ON,將允許遞歸激發觸發器。RECURSIVE_TRIGGERS OFF(默認值)只禁止直接遞歸。若要也禁用間接遞歸,請使用 sp_configure 將 nested triggers 伺服器選項設置為 0。
<recovery_options>

控制資料庫恢復選項。

RECOVERY FULL | BULK_LOGGED | SIMPLE
如果指定為 FULL,系統將對介質錯誤提供完全保護。如果數據文件損壞,介質恢復可以還原所有已提交的事務。
如果指定為 BULK_LOGGED,將在介質錯誤保護程度與某些大規模或大容量操作的最優性能及日誌存儲空間最少佔用量之間進行權衡。這些操作包括 SELECT INTO、大容量裝載操作(bcp 和 BULK INSERT)、CREATE INDEX 以及文本和圖象操作(WRITETEXT 和 UPDATETEXT)。

在大容量日誌記錄恢復模型下,對整個類只做最少的日誌記錄,並且無法逐個操作地控制日誌記錄行為。

如果指定為 SIMPLE,系統將提供佔用日誌空間最小的備份策略。伺服器故障恢復不再需要的日誌空間可被自動重用。

重要 簡單恢復模型比其它兩種模型更容易管理,但數據文件損壞時造成數據丟失的可能性更大。最近的資料庫備份或差異資料庫備份之後的更改都將丟失,必須手工重新輸入。

默認恢復模型由 model 資料庫的恢復模型確定。若要更改新資料庫的默認值,請用 ALTER DATABASE 設置 model 資料庫的恢復選項。

TORN_PAGE_DETECTION ON | OFF
如果指定為 ON,將可以檢測到未完成的頁。默認設置為 ON。
注釋
若要刪除資料庫,請使用 DROP DATABASE 語句。若要更改資料庫名稱,請使用 sp_renamedb。有關減小資料庫大小的更多信息,請參見 DBCC SHRINKDATABASE。

在對資料庫應用不同的或新的排序規則時,應確保符合以下條件:

您是當前資料庫的唯一用戶。

沒有依賴資料庫排序規則的架構綁定對象。
如果資料庫中存在以下依賴資料庫排序規則的對象,則 ALTER DATABASE database COLLATE 語句將失敗。SQL Server 將針對每一個阻塞 ALTER 操作的對象返回一個錯誤信息:

通過 SCHEMABINDING 創建的用戶定義函數和視圖。

計算列。

CHECK 約束。

表值函數返回包含字元列的表,這些列繼承了默認的資料庫排序規則。
改變資料庫的排序規則不會在任何數據對象的系統名稱中產生重復名稱。
如果改變排序規則後出現重復的名稱,則下列命名空間可能導致改變資料庫排序規則的操作失敗:

對象名(如過程、表、觸發器或視圖)。

架構名(如組、角色或用戶)。

標量類型名(如系統和用戶定義類型)。

全文目錄名稱。

對象內的列名或參數名。

表范圍內的索引名。
由新的排序規則產生的重復名稱將導致改變操作失敗,SQL Server 將返回錯誤信息,指出重復名稱所在的命名空間。

當 BACKUP 語句正在執行時,不能添加或刪除文件。

若要在 size 參數中指定兆位元組的分數,應通過乘以數字 1024 將該值轉換為千位元組。例如,應指定 1536 KB 而不是 1.5MB(1.5 x 1024 = 1536)。

許可權
ALTER DATABASE 許可權默認授予 sysadmin 和 dbcreator 固定伺服器角色成員以及 db_owner 固定資料庫角色成員。這些許可權是不可傳遞的。

示例
A. 向資料庫中添加文件
下例創建資料庫,並更改該資料庫以添加一個 5 MB 大小的新數據文件。

USE master
GO
CREATE DATABASE Test1 ON
(
NAME = Test1dat1,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat1.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
GO
ALTER DATABASE Test1
ADD FILE
(
NAME = Test1dat2,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
GO

B. 向資料庫中添加由兩個文件組成的文件組
下例在示例 A 中所創建的 Test1 資料庫中創建一個文件組,並將兩個 5 MB 的文件添加到該文件組。然後下例將 Test1FG1 設置為默認文件組。

USE master
GO
ALTER DATABASE Test1
ADD FILEGROUP Test1FG1
GO

ALTER DATABASE Test1
ADD FILE
( NAME = test1dat3,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat3.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB),
( NAME = test1dat4,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\t1dat4.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP Test1FG1

ALTER DATABASE Test1
MODIFY FILEGROUP Test1FG1 DEFAULT
GO

C. 向資料庫中添加兩個日誌文件
下例向資料庫中添加兩個 5 MB 大小的日誌文件。

USE master
GO
ALTER DATABASE Test1
ADD LOG FILE
( NAME = test1log2,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test2log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB),
( NAME = test1log3,
FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\test3log.ldf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
GO

D. 從資料庫中刪除文件
下例將示例 B 中添加到資料庫 Test1 中的一個文件刪除。

USE master
GO
ALTER DATABASE Test1
REMOVE FILE test1dat4
GO

E. 更改文件
下例將示例 B 中添加到資料庫 Test1 中的一個文件增加大小。

USE master
GO
ALTER DATABASE Test1
MODIFY FILE
(NAME = test1dat3,
SIZE = 20MB)
GO

F. 將主文件組設置為默認文件組
假定原來另一個文件組設置為默認文件組,下例將主文件組設置為默認文件組。

USE master
GO
ALTER DATABASE MyDatabase
MODIFY FILEGROUP [PRIMARY] DEFAULT
GO

請參見

CREATE DATABASE

DROP DATABASE

sp_helpdb

sp_helpfile

sp_helpfilegroup

sp_renamedb

sp_spaceused

使用恢復模型

&;1988-2000 Microsoft Corporation。保留所有權利。

3. 使用sql語句在d:\學號+姓名的文件夾里創建資料庫stums,設置數據文件的初始大

1、第一題
create database ReadBook
on
(name=ReadBook_data,
filename='d:\sqlserver\readbook.mdf',
size=2,
filegrowth=1,
maxsize = 5
)
log on
(name=ReadBook_log,
filename='d:\sqlserver\readbook.ldf',
size=1,
filegrowth=1,
maxsize = 5
)
2、第二題
alter database ReadBook
add filegroup bookgroup
go
alter database ReadBook
add file
( name='book2_dat',
filename='d:\sqlserver\book2_dat',
size=5,
maxsize=50,
filegrowth=5)
3、第三題
alter database ReadBook
remove file book2_dat
4、第四題
alter database ReadBook
remove filegroup bookgroup

4. 如何利用SQL Server 2012資料庫操作事務管理

一、啟用FileTable
1、修改資料庫引擎的屬性
打開「SQL Server配置管理器」,修改SQL Server資料庫引擎的屬性。使用此頁可針對此 Microsoft SQL Server 2012安裝啟用 FILESTREAM。

(1)針對 Transact-SQL 訪問啟用 FILESTREAM
選中此項可針對 Transact-SQL 訪問啟用 FILESTREAM。 必須選中此控制選項,才能使用其他控制選項。如果不啟用此選項,就不能添加FileStream文件組。
(2)針對文件 I/O 流訪問啟用 FILESTREAM
選中此項可針對 FILESTREAM 啟用 Win32 流訪問。
(3)Windows 共享名
使用此控制選項可輸入將用來存儲 FILESTREAM 數據的 Windows 共享的名稱。默認為該SQL Server實例的名稱。
(4)允許遠程客戶端針對 FILESTREAM 數據啟用流訪問
選中此控制選項可允許遠程客戶端訪問此伺服器上的此 FILESTREAM 數據。

2、修改伺服器的屬性
打開「SQL Server Management Studio」,修改該實例的配置。默認配置如下:

上述選項解釋如下:
(1)「FILESTREAM 訪問級別」顯示 SQL Server 實例上支持的 FILESTREAM 的當前級別。若要更改訪問級別,請選擇以下值之一:
已禁用
無法將二進制大型對象 (BLOB) 數據存儲在文件系統中。此為默認值。即filestream access level=0
已啟用 Transact-SQL 訪問
可使用 Transact-SQL 訪問 FILESTREAM 數據,但不能通過文件系統進行訪問。即filestream access level=1
已啟用完全訪問
FILESTREAM 數據可使用 Transact-SQL 以及通過文件系統進行訪問。即filestream access level=0
注意:在首次啟用 FILESTREAM 時,您可能需要重新啟動計算機才能配置驅動程序。
(2)「FILESTREAM 共享名稱」顯示在安裝過程中選擇的 FILESTREAM 共享的只讀名稱。

在本次實驗中,我們將「FILESTREAM 訪問級別」 設定為:已啟用完全訪問。
如果是通過T-SQL腳本執行,則運行以下腳本:
EXEC sys.sp_configure N'filestream access level', N'2'
RECONFIGURE WITH OVERRIDE

注意:設置完成之後,重啟實例。

3、配置防火牆
若要在防火牆保護的環境中使用 FILESTREAM,客戶端和伺服器都必須能夠將 DNS 名稱解析為包含 FILESTREAM 文件的伺服器。FILESTREAM 要求 Windows 文件共享埠 139 和 445 處於打開狀態。

二、配置文件組
1、添加文件組
完成上述操作之後,就可以為該資料庫添加專用於FileStream的文件組。

如果是通過腳本操作,請運行以下腳本:
ALTER DATABASE [db01] ADD FILEGROUP [FileStreamFileGroup] CONTAINS FILESTREAM

2、添加文件
完成上述操作之後,就可以為該資料庫添加FilStream類型的資料庫文件。

在本例中,系統並沒有為「FileStream數據」的文件類型創建mdf或ndf文件,而是在文件夾C:\SqlData下面自動創建以邏輯名稱命名的文件夾,即 C:\SqlData\FileData。其中filestream.hdr 文件是 FILESTREAM 容器的頭文件。當這個資料庫被刪除時,mdf、ndf、log連同這個文件夾都會被刪除。

如果是通過腳本操作,請運行以下腳本:
ALTER DATABASE [db01] ADD FILE ( NAME = N'FileData', FILENAME = N'C:\SqlData\FileData' ) TO FILEGROUP [FileStreamFileGroup]
注意:在上例中,在運行腳本之前,必須存在C:\SqlData,建議使用右側的選擇按鈕選擇路徑。如果路徑不存在,就會報錯:

同時不能存在重復的文件夾,即不能存在C:\SqlData\FileData。否則也會報錯:

3、啟動非事務訪問
FileTable 使 Windows 應用程序可以獲取 FILESTREAM 數據的 Windows 文件句柄而不需要 SQL Server 事務。為了允許對 SQL Server 中存儲的文件進行此非事務性訪問,必須為要包含 FileTable 的每個資料庫在資料庫級別上指定所需的非事務性訪問級別。

選項解釋如下:
(1)FILESTREAM 非事務訪問
為從文件系統到 FileTables 中存儲的 FILESTREAM 數據的非事務性訪問指定以下選項之一:OFF、READ_ONLY 或 FULL。
如果在伺服器上未啟用 FILESTREAM,則該值將設置為 OFF 並且被禁用。在本次實驗中,將其設置為FULL。
(2)FILESTREAM 目錄名稱
為與所選資料庫相關聯的 FILESTREAM 數據指定目錄名稱。在 FileTable 文件夾層次結構中,此資料庫級目錄將成為在實例級別為 FILESTREAM 指定的共享名稱的子級以及在資料庫中創建的 FileTable 的父級。
如果啟用非事務性訪問時沒有提供目錄名稱,則在以後必須提供它,這樣才能在資料庫中創建 FileTable。

如果是通過腳本執行,如下:
ALTER DATABASE db01
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'ImageFiles' )
注意:更改現有資料庫時,調用帶 DIRECTORY_NAME FILESTREAM 選項的 ALTER DATABASE (Transact-SQL) 語句。使用這些選項更改目錄名稱時,資料庫必須以獨占方式鎖定,沒有打開的文件句柄。

說明:為檢查是否在資料庫上啟用了非事務性訪問,可以查詢目錄視圖,腳本如下:
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options

三、創建FileTable
1、創建第一個FileTable
「SQL Server Management Studio」只提供一個腳本模板,要想創建FileTable還是得用腳本完成:
USE db01
CREATE TABLE ImageTable1 AS FILETABLE
官方的範本為:
USE [db01]
CREATE TABLE [dbo].[ImageTable1] AS FILETABLE ON [PRIMARY] FILESTREAM_ON [FileStreamFileGroup]
WITH
(FILETABLE_DIRECTORY = N'ImageTable1', FILETABLE_COLLATE_FILENAME = Chinese_PRC_CI_AS)

2、創建第二個FileTable
CREATE TABLE ImageTable2 AS FILETABLE

3、獲取共享路徑
文件表創建之後,就會相應的產生一個文件表共享目錄,該目錄路徑可以通過內建函數獲取:
SELECT FileTableRootPath('ImageTable1')
本次實驗所返回的結果為:\\SQL1\SqlFile\ImageFiles\ImageTable1

4、查看
通過Windows資源管理器,可見已經創建了以GUID命名的文件夾。

通過SQL Server Management Studio,查看錶的結構。

四、操作
1、向文件夾中添加文件
通過 「Windows資源管理器」,向文件夾\\SQL1\SqlFile\ImageFiles\ImageTable1中添加一個文件A01.GIF。然後運行腳本:
select * from ImageTable1
結果如下:

可見, SQL Server自動在Table中添加了記錄。

2、文件改名
運行以下腳本:
update ImageTable1 set name='Cup.GIF' where name='A01.GIF'
通過「Windows資源管理器」,查看文件夾\\SQL1\SqlFile\ImageFiles\ImageTable1,可見文件A01.GIF已經被改名為Cup.GIF 。

3、查看共享文件夾
我們可以繼續復制其他文件,然後通過「Windows資源管理器」,查看文件夾。

4、刪除文件
可以使用腳本刪除,例如:
Delete ImageTable1 where name='Cup.GIF'
或者,通過「Windows資源管理器」直接刪除該文件。

五、備份和還原

1、備份資料庫
使用 SQL Server 備份資料庫時,FILESTREAM 數據將與資料庫中的結構化數據一起備份。

2、部分備份
如果不想將 FILESTREAM 數據與關系數據一起備份,則可以使用部分備份將 FILESTREAM 文件組排除在外。

5. sql2012怎麼輸入對象名稱

一、啟用FileTable
1、修改資料庫引擎的屬性
打開「SQL Server配置管理器」,修改SQL Server資料庫引擎的屬性。使用此頁可針對此 Microsoft SQL Server 2012安裝啟用 FILESTREAM。

(1)針對 Transact-SQL 訪問啟用 FILESTREAM
選中此項可針對 Transact-SQL 訪問啟用 FILESTREAM。 必須選中此控制選項,才能使用其他控制選項。如果不啟用此選項,就不能添加FileStream文件組。
(2)針對文件 I/O 流訪問啟用 FILESTREAM
選中此項可針對 FILESTREAM 啟用 Win32 流訪問。
(3)Windows 共享名
使用此控制選項可輸入將用來存儲 FILESTREAM 數據的 Windows 共享的名稱。默認為該SQL Server實例的名稱。
(4)允許遠程客戶端針對 FILESTREAM 數據啟用流訪問
選中此控制選項可允許遠程客戶端訪問此伺服器上的此 FILESTREAM 數據。

2、修改伺服器的屬性
打開「SQL Server Management Studio」,修改該實例的配置。默認配置如下:

上述選項解釋如下:
(1)「FILESTREAM 訪問級別」顯示 SQL Server 實例上支持的 FILESTREAM 的當前級別。若要更改訪問級別,請選擇以下值之一:
已禁用
無法將二進制大型對象 (BLOB) 數據存儲在文件系統中。此為默認值。即filestream access level=0
已啟用 Transact-SQL 訪問
可使用 Transact-SQL 訪問 FILESTREAM 數據,但不能通過文件系統進行訪問。即filestream access level=1
已啟用完全訪問
FILESTREAM 數據可使用 Transact-SQL 以及通過文件系統進行訪問。即filestream access level=0
注意:在首次啟用 FILESTREAM 時,您可能需要重新啟動計算機才能配置驅動程序。
(2)「FILESTREAM 共享名稱」顯示在安裝過程中選擇的 FILESTREAM 共享的只讀名稱。

在本次實驗中,我們將「FILESTREAM 訪問級別」 設定為:已啟用完全訪問。
如果是通過T-SQL腳本執行,則運行以下腳本:
EXEC sys.sp_configure N'filestream access level', N'2'
RECONFIGURE WITH OVERRIDE

注意:設置完成之後,重啟實例。

3、配置防火牆
若要在防火牆保護的環境中使用 FILESTREAM,客戶端和伺服器都必須能夠將 DNS 名稱解析為包含 FILESTREAM 文件的伺服器。FILESTREAM 要求 Windows 文件共享埠 139 和 445 處於打開狀態。

二、配置文件組
1、添加文件組
完成上述操作之後,就可以為該資料庫添加專用於FileStream的文件組。

如果是通過腳本操作,請運行以下腳本:
ALTER DATABASE [db01] ADD FILEGROUP [FileStreamFileGroup] CONTAINS FILESTREAM

2、添加文件
完成上述操作之後,就可以為該資料庫添加FilStream類型的資料庫文件。

在本例中,系統並沒有為「FileStream數據」的文件類型創建mdf或ndf文件,而是在文件夾C:\SqlData下面自動創建以邏輯名稱命名的文件夾,即 C:\SqlData\FileData。其中filestream.hdr 文件是 FILESTREAM 容器的頭文件。當這個資料庫被刪除時,mdf、ndf、log連同這個文件夾都會被刪除。

如果是通過腳本操作,請運行以下腳本:
ALTER DATABASE [db01] ADD FILE ( NAME = N'FileData', FILENAME = N'C:\SqlData\FileData' ) TO FILEGROUP [FileStreamFileGroup]
注意:在上例中,在運行腳本之前,必須存在C:\SqlData,建議使用右側的選擇按鈕選擇路徑。如果路徑不存在,就會報錯:

同時不能存在重復的文件夾,即不能存在C:\SqlData\FileData。否則也會報錯:


3、啟動非事務訪問
FileTable 使 Windows 應用程序可以獲取 FILESTREAM 數據的 Windows 文件句柄而不需要 SQL Server 事務。為了允許對 SQL Server 中存儲的文件進行此非事務性訪問,必須為要包含 FileTable 的每個資料庫在資料庫級別上指定所需的非事務性訪問級別。

選項解釋如下:
(1)FILESTREAM 非事務訪問
為從文件系統到 FileTables 中存儲的 FILESTREAM 數據的非事務性訪問指定以下選項之一:OFF、READ_ONLY 或 FULL。
如果在伺服器上未啟用 FILESTREAM,則該值將設置為 OFF 並且被禁用。在本次實驗中,將其設置為FULL。
(2)FILESTREAM 目錄名稱
為與所選資料庫相關聯的 FILESTREAM 數據指定目錄名稱。在 FileTable 文件夾層次結構中,此資料庫級目錄將成為在實例級別為 FILESTREAM 指定的共享名稱的子級以及在資料庫中創建的 FileTable 的父級。
如果啟用非事務性訪問時沒有提供目錄名稱,則在以後必須提供它,這樣才能在資料庫中創建 FileTable。

如果是通過腳本執行,如下:
ALTER DATABASE db01
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'ImageFiles' )
注意:更改現有資料庫時,調用帶 DIRECTORY_NAME FILESTREAM 選項的 ALTER DATABASE (Transact-SQL) 語句。使用這些選項更改目錄名稱時,資料庫必須以獨占方式鎖定,沒有打開的文件句柄。

說明:為檢查是否在資料庫上啟用了非事務性訪問,可以查詢目錄視圖,腳本如下:
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options

三、創建FileTable
1、創建第一個FileTable
「SQL Server Management Studio」只提供一個腳本模板,要想創建FileTable還是得用腳本完成:
USE db01
CREATE TABLE ImageTable1 AS FILETABLE
官方的範本為:
USE [db01]
CREATE TABLE [dbo].[ImageTable1] AS FILETABLE ON [PRIMARY] FILESTREAM_ON [FileStreamFileGroup]
WITH
(FILETABLE_DIRECTORY = N'ImageTable1', FILETABLE_COLLATE_FILENAME = Chinese_PRC_CI_AS)

2、創建第二個FileTable
CREATE TABLE ImageTable2 AS FILETABLE

3、獲取共享路徑
文件表創建之後,就會相應的產生一個文件表共享目錄,該目錄路徑可以通過內建函數獲取:
SELECT FileTableRootPath('ImageTable1')
本次實驗所返回的結果為:\\SQL1\SqlFile\ImageFiles\ImageTable1

4、查看
通過Windows資源管理器,可見已經創建了以GUID命名的文件夾。

通過SQL Server Management Studio,查看錶的結構。


四、操作
1、向文件夾中添加文件
通過 「Windows資源管理器」,向文件夾\\SQL1\SqlFile\ImageFiles\ImageTable1中添加一個文件A01.GIF。然後運行腳本:
select * from ImageTable1
結果如下:

可見, SQL Server自動在Table中添加了記錄。

2、文件改名
運行以下腳本:
update ImageTable1 set name='Cup.GIF' where name='A01.GIF'
通過「Windows資源管理器」,查看文件夾\\SQL1\SqlFile\ImageFiles\ImageTable1,可見文件A01.GIF已經被改名為Cup.GIF 。

3、查看共享文件夾
我們可以繼續復制其他文件,然後通過「Windows資源管理器」,查看文件夾。


4、刪除文件
可以使用腳本刪除,例如:
Delete ImageTable1 where name='Cup.GIF'
或者,通過「Windows資源管理器」直接刪除該文件。

五、備份和還原

1、備份資料庫
使用 SQL Server 備份資料庫時,FILESTREAM 數據將與資料庫中的結構化數據一起備份。


2、部分備份
如果不想將 FILESTREAM 數據與關系數據一起備份,則可以使用部分備份將 FILESTREAM 文件組排除在外。


六、相關說明
詳見 http://msdn.microsoft.com/zh-cn/library/gg492086.aspx
1、AlwaysOn
在包含 FILESTREAM 或 FileTable 數據的資料庫屬於某一 AlwaysOn 可用性組時:
FILESTREAM 和 FileTable 函數接受或返回虛擬網路名稱 (VNN),而非計算機名稱。有關這些函數的詳細信息,請參閱 Filestream 和 FileTable 函數 (Transact-SQL)。
通過文件系統 API 對 FILESTREAM 或 FileTable 數據進行的所有訪問都應該使用 VNN,而非計算機名稱。

2、表分區
FileTable 不支持分區。通過對多個 FILESTREAM 文件組的支持,在大多數方案中可以解決純向上擴展問題,而不必使用分區(不像 SQL 2008 FILESTREAM)。

3、復制
FileTable 不支持復制和相關功能(包括事務性復制、合並復制、更改數據捕獲和更改跟蹤)。

4、視圖
可以像為任何其他表一樣為 FileTable 創建視圖。但是對於為 FileTable 創建的視圖有以下注意事項:
視圖將不具有任何 FileTable 語義,也就是說,視圖中的列(包括「文件屬性」列)的行為與常規視圖列一樣,不具有任何特殊語義,對於表示文件/目錄的行也是如此。
可以基於「可更新視圖」語義更新視圖,但是基礎表約束可能拒絕更新,就像在表中一樣。
可以通過將文件的路徑添加為視圖中的顯式列,在視圖中顯示該路徑。例如:
CREATE VIEW MP3FILES AS SELECT column1, column2, …, GetFileNamespacePath() AS PATH, column3,… FROM Documents

6. SQL怎麼改變資料庫的大小用代碼

SQL改變資料庫的大小可以參考下面的代碼:

ALTER DATABASE add_group

MODIFY FILE

(NAME = add_data,

SIZE = 10MB);

DBCC SHRINKFILE (add_data, 7);

(6)sqladdfile擴展閱讀:

SQL語句

更新:update table1 set field1=value1 where 范圍

查找:select * from table1 where field1 like 』%value1%』 (所有包含『value1』這個模式的字元串)

排序:select * from table1 order by field1,field2 [desc]

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

更新數據記錄:

sql="update 數據表 set欄位名=欄位值 where 條件表達式"

sql="update 數據表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件表達式"

7. sql創建文件組的命令

--【添加文件組】
alter
database
zhh
add
filegroup
[201109]
--添加文件並把其指向指定文件組
alter
database
zhh
add
file(
name=n'201109',
filename='e:\201109.ndf',
size=3mb,
maxsize=100mb,
filegrowth=5mb
)to
filegroup
[201109]
--刪除文件
alter
database
zhh
remove
file
[201109]
--remove
--修改文件
use
master;
go
alter
database
adventureworks
modify
file
(name
=
test1dat3,
size
=
20mb);
go
--移動文件
use
master;
go
alter
database
adventureworks
modify
file
(
name
=
test1dat2,
filename
=
n'c:\t1dat2.ndf'
);
go