Attachco cơsởdữliệuMicrosoftSQLServer2008
Nguồn : 3c.com.vn
Attach cơsởdữliệutrongMicrosoftSQL
Server 2008
Bài viết này sẽ minh họa các
phương pháp sử dụng khác nhau của mệnh
đề “For Attach” nhằm vượt qua những điểm
hạn chế gặp phải khi sử dụng sp_attach_db
và sp_attach_single_file_d
b.
Trong SQLServer 7.0, Microsoft đã giới
thiệu hai thủ tục lưu trữ hệ thống là
sp_attach_db và
sp_attach_single_file_db, giúp các nhà
quản trị cơsởdữliệu thuận tiện hơn khi
thực hiện các tác vụ sau:
• Attach trực tiếp các file .MDF và .LDF vào máy chủ bằng cách sử
dụng thủ tục lưu trữ hệ thống sp_attach_db.
• Chỉ Attach các file .MDF bằng cách sử dụng thủ tục lưu trữ hệ thống
sp_attach_single_file_db.
• Detach cơsởdữliệu khỏi máy chủ bằng cách sử dụng
sp_detach_db. Copy các file .MDF tới máy chủ khác rồi sau đó
attach lại vào cả hai máy chủ bằng cách sử dụng thủ tục lưu trữ hệ
thống sp_attach_db.
Mặc dù cả hai thủ tục này đều hữu ích với các chuyên viên quản trị cơsở
dữ liệu, thế nhưng vẫn có những hạn chế nhất định, đó là:
• Bạn không thể attach nhiều file log
• Bạn không thể attach nhiều hơn 16 file
Trong phiên bản SQLServer 2008, Microsoft công bố rằng các thủ tục lưu
trữ hệ thống trên sẽ bị “bỏ xó”. Thay vào đó, Microsoft bổ sung mệnh đề
“
For Attach” trong câu lệnh “Create Database” của SQL.
Bài viết này sẽ minh họa các phương pháp sử dụng khác nhau của mệnh
đề “For Attach” nhằm vượt qua những điểm hạn chế gặp phải khi sử dụng
sp_attach_db và sp_attach_single_file_db.
Giả dụ chúng ta có cơ sởdữliệu “MyDB1” với một file .MDF và một file
.LDF tại vị trí 'C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database DataData File for
Monthly ArchiveMicrosoft SQLServer2008 Data File'. Khởi tạo cơ sởdữ
liệu bằng cách sử dụng đoạn mã Transact SQL sau đây.
Use Master
go
CREATE DATABASE MyDB1
ON
( NAME = MyDB1_dat,
FILENAME = 'C:Program Files
MicrosoftSQL ServerMSSQL10.SQL2008MSSQLDATA
Summary Database DataData File for Monthly Archive
MicrosoftSQLServer2008 Data FileMyDB1.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = MyDB1_log,
FILENAME = 'C:Program Files
MicrosoftSQL ServerMSSQL10.SQL2008MSSQLDATA
Summary Database DataData File for Monthly Archive
MicrosoftSQLServer2008 Data FileMyDB1.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
Bây giờ hãy thử detach cơ sởdữliệu này và attach lại bằng cách sử dụng
sp_detach_db và sp_attach_db. Chạy đoạn mã T-SQL sau đây:
use master
go
sp_detach_db 'MyDB1'
go
sp_attach_db 'MyDb1',
'C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1.mdf',
'C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1.ldf'
GO
Bạn có thể attachcơsởdữliệu trên bằng cách sử dụng lệnh “Create
database” với mệnh đề “For Attach” như sau:
use master
go
sp_detach_db 'MyDB1'
go
CREATE DATABASE MyDB1
ON
(
FILENAME = 'C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1.mdf'
),
(
FILENAME = 'C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1.ldf'
) for Attach
go
Bây giờ hãy detach cơ sởdữliệu MyDB1 sau đó xóa file .LDF, tiếp theo
attach lại sử dụng thủ tục lưu trữ hệ thống sp_attach_single_file_db bằng
cách thực thi đoạn mã T-SQL sau:
use master
go
sp_detach_db 'MyDB1'
go
exec master xp_cmdshell 'del "C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1.ldf"'
go
Lưu ý: Trong đoạn mã trên tôi sử dụng xp_cmdshell để xóa file .LDF. Bạn
sẽ nhận thông báo lỗi sau đây nếu xp_cmdshell chưa được kích hoạt:
Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component
'xp_cmdshell' because this component is turned off as part of the security
configuration for this server. A system administrator can enable the use of
'xp_cmdshell' by using sp_configure. For more information about enabling
'xp_cmdshell', see "Surface Area Configuration" in SQLServer Books
Online.
Bạn có thể kích hoạt xp_cmdshell bằng cách dùng đoạn mã T-SQL sau:
use master
go
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'xp_cmdshell',1
go
reconfigure with override
go
Ngoài ra, bạn có thể xóa file .LDF bằng cách dùng lệnh “Del” từ dấu nhắc
lệnh MS-DOS.
Bây giờ hãy attach riêng file .MDF bằng cách sử dụng
sp_attach_single_file_db. Chạy câu lệnh sau đây:
use master
go
sp_attach_single_file_db 'MyDB1',
'C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1.mdf'
go
Kết quả
File activation failure. The physical file name
"C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1.ldf" may be incorrect.
New log file 'C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1_log.LDF' was created.
Bạn có thể attach riêng file .MDF của cơ sởdữliệu trên bằng cách sử dụng
lệnh “Create database” với mệnh đề “For ATTACH_REBUILD_LOG” như
sau:
use master
go
sp_detach_db 'MyDB1'
go
exec master xp_cmdshell 'del
"C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1_log.ldf"'
go
Lưu ý: Khi file log được tạo lại, SQLServer tự động thêm hậu tố “_log” vào
tên file.
CREATE DATABASE MyDB1
ON
(
FILENAME = 'C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
Data File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1.mdf'
) for ATTACH_REBUILD_LOG
Kết quả:
File activation failure. The physical file name "C:Program FilesMicrosoft
SQL Server
MSSQL10.SQL2008MSSQLDATASummary Database DataData File for
Monthly ArchiveMicrosoft SQLServer2008 Data FileMyDB1_log.LDF"
may be incorrect.
New log file 'C:Program FilesMicrosoft SQL
ServerMSSQL10.SQL2008MSSQLDATASummary Database
DataData File for Monthly ArchiveMicrosoft SQLServer2008 Data
FileMyDB1_log.LDF' was created.
Kết luận
Bài viết trên đã minh họa cách sử dụng câu lệnh “Create Database” với
mệnh đề “For Attach” và “for ATTACH_REBUILD_LOG” đối với một file
.MDF đơn và một file .LDF đơn. Trong bài viết tiếp theo, các bạn sẽ được
giới thiệu cách làm việc với nhiều file .MDF và .LDF.
. Attachco cơ sở dữ liệu Microsoft SQL Server 2008
Nguồn : 3c.com.vn
Attach cơ sở dữ liệu trong Microsoft SQL
Server 2008
Bài viết.
ServerMSSQL10 .SQL2 008MSSQLDATASummary Database DataData File for
Monthly ArchiveMicrosoft SQL Server 2008 Data File'. Khởi tạo cơ sở dữ
liệu bằng