sp_detach_db
從伺服器分離資料庫,並可以選擇在分離前在所有的表上運行 UPDATE STATISTICS。
文法
sp_detach_db [ @dbname = ] 'dbname'
[ , [ @skipchecks = ] 'skipchecks' ]
參數
[@dbname =] 'dbname'
要分離的資料庫名稱。dbname 的資料類型為 sysname,預設值為 NULL。
[@skipchecks =] 'skipchecks'
skipchecks 的資料類型為 nvarchar(10),預設值為 NULL。如果為 true,則跳過 UPDATE STATISTICS。
如果為 false,則運行 UPDATE STATISTICS。對於要移動到唯讀媒體上的資料庫,此選項很有用。
傳回碼值
0(成功)或 1(失敗)
結果集
無
注釋
使用 sp_attach_db 或 sp_attach_single_file_db 保留並重新附加分離檔案。檔案也可以移動並附加到其它伺服器上。
許可權
只有 sysadmin 固定伺服器角色的成員才能執行 sp_detach_db。
樣本
下面的樣本分離 pubs 資料庫,並將 skipchecks 設為 true。
EXEC sp_detach_db 'pubs', 'true'
sp_attach_db
將資料庫附加到伺服器。
文法
sp_attach_db [ @dbname = ] 'dbname'
, [ @filename1 = ] 'filename_n' [ ,...16 ]
參數
[@dbname =] 'dbname'
要附加到伺服器的資料庫的名稱。該名稱必須是唯一的。dbname 的資料類型為 sysname,預設值為 NULL。
[@filename1 =] 'filename_n'
資料庫檔案的實體名稱,包括路徑。filename_n 的資料類型為 nvarchar(260),預設值為 NULL。最多可以指定 16 個檔案名稱。參數名稱以 @filename1 開始,遞增到 @filename16。檔案名稱列表至少必須包括主檔案,主檔案包含指向資料庫中其它檔案的系統資料表。該列表還必須包括資料庫分離後所有被移動的檔案。
傳回碼值
0(成功)或 1(失敗)
結果集
無
注釋
只應對以前使用顯式 sp_detach_db 操作從資料庫伺服器分離的資料庫執行 sp_attach_db。如果必須指定多於 16 個檔案,請使用帶有 FOR ATTACH 子句的 CREATE DATABASE。
如果將資料庫附加到的伺服器不是該資料庫從中分離的伺服器,並且啟用了分離的資料庫以進行複製,則應該運行 sp_removedbreplication 從資料庫刪除複製。
許可權
只有 sysadmin 和 dbcreator 固定伺服器角色的成員才能執行本過程。
樣本
下面的樣本將 pubs 中的兩個檔案附加到當前伺服器。
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf',
@filename2 = N'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs_log.ldf'
sp_attach_single_file_db
將只有一個資料檔案的資料庫附加到當前伺服器。
文法
sp_attach_single_file_db [ @dbname = ] 'dbname'
, [ @physname = ] 'physical_name'
參數
[@dbname =] 'dbname'
要附加到伺服器的資料庫的名稱。dbname 的資料類型為 sysname,預設值為 NULL。
[@physname =] 'phsyical_name'
據庫檔案的實體名稱,包括數路徑。physical_name 的資料類型為 nvarchar(260),預設值為 NULL。
傳回碼值
0(成功)或 1(失敗)
結果集
無
注釋
當使用 sp_attach_single_file_db 將資料庫附加到伺服器時,它建立一個新的記錄檔並執行額外的清除工作,從新附加的資料庫中刪除複製。
僅對以前使用顯式 sp_detach_db 操作從伺服器分離的資料庫執行 sp_attach_single_file_db。
許可權
只有 sysadmin 和 dbcreator 固定伺服器角色的成員才能執行本過程。
樣本
下面的樣本分離 pubs,然後將 pubs 中的一個檔案附加到當前伺服器。
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf'
sp_helpfile
返回與當前資料庫關聯的檔案的實體名稱及特性。使用此預存程序確定附加到伺服器或從伺服器分離的檔案名稱。
文法
sp_helpfile [ [ @filename = ] 'name' ]
參數
[@filename =] 'name'
是當前資料庫中任意檔案的邏輯名稱。name 的資料類型為 sysname,預設值為 NULL。如果不指定 name,會列出當前資料庫中所有檔案的特性。
傳回碼值
0(成功)或 1(失敗)
結果集
| 列名 |
資料類型 |
描述 |
| name |
sysname |
邏輯檔案名稱。 |
| fileid |
smallint |
檔案的數位識別碼符。 |
| filename |
nchar(260) |
物理檔案名稱。 |
| filegroup |
sysname |
檔案所屬的組。為便於分配和管理,可以將資料庫檔案分成檔案組。記錄檔不屬於檔案組。 |
| size |
nvarchar(18) |
檔案大小。 |
| maxsize |
nvarchar(18) |
檔案可達到的最大值。此欄位中的 UNLIMITED 值表示檔案可以一直增大直到磁碟滿為止。 |
| growth |
nvarchar(18) |
檔案的增量。表示每次需要新的空間時給檔案增加的空間大小。 |
| usage |
varchar(9) |
檔案用法。資料檔案只能用於 data only,而記錄檔只能用於 log only。 |
許可權
執行許可權預設賦予 public 角色。
樣本
下面的樣本返回有關 pubs 中的檔案的資訊。
USE pubs
EXEC sp_helpfile