Tìm kiếm PhanVien.Com Web
Download PhanVien.Com Toolbar
Danh mục thông tin

Attach cơ sở dữ liệu trong Microsoft SQL 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_db.

Attach cơ sở dữ liệu trong Microsoft SQL Server 2008

Trong SQL Server  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:

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  SQL Server  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 SQL Server  2008 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 
             Microsoft SQL ServerMSSQL10.SQL2008MSSQLDATA 
             Summary Database DataData File for Monthly Archive 
             Microsoft  SQL Server  2008 Data FileMyDB1.mdf', 
    SIZE = 10, 
    MAXSIZE = 50, 
    FILEGROWTH = 5 ) 
LOG ON
( NAME = MyDB1_log, 
    FILENAME = 'C:Program Files 
             Microsoft  SQL ServerMSSQL10.SQL2008MSSQLDATA 
             Summary Database DataData File for Monthly Archive 
             Microsoft SQL Server  2008 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à attachlại bằng cách sử dụng sp_detach_db và sp_attach_db. Chạy đoạn mã T-SQLsau đâ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 SQL Server  2008 Data FileMyDB1.mdf',
'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
           Data File for Monthly ArchiveMicrosoft SQL Server  2008 Data FileMyDB1.ldf'
GO

Bạn có thể attach cơ 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 SQL Server  2008 Data FileMyDB1.mdf'
),
(
FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data 
            Data File for Monthly ArchiveMicrosoft SQL Server  2008 Data FileMyDB1.ldf'
) for Attach

go

Bây giờ hãy detach cơ sở dữ liệu  MyDB1 sau đó xóafile .LDF, tiếp theo attach lại sử dụng thủ tục lưu trữ  hệ thốngsp_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 SQL Server  2008 Data FileMyDB1.ldf"'
go

Lưu ý: Trong đoạn mã trên tôi sử dụngxp_cmdshell để xóa file .LDF. Bạn sẽ nhận thông báo  lỗi sau đây nếuxp_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 thesecurity configuration for this server. A system  administrator canenable the use of 'xp_cmdshell' by using sp_configure. For moreinformation about enabling 'xp_cmdshell', see "Surface AreaConfiguration" in SQL Server  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 SQL Server  2008 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 SQL Server  2008 Data FileMyDB1.ldf" may be incorrect.
New log file 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data
              Data File for Monthly ArchiveMicrosoft SQL Server  2008 Data FileMyDB1_log.LDF' was created.

Bạn có thể attach riêng file .MDF của cơ sở dữ liệutrên bằng cách sử dụng lệnh “Create database” với mệnh đề “ForATTACH_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 SQL Server  2008 Data FileMyDB1_log.ldf"'
go

Lưu ý: Khi file log được tạo lại, SQL Server  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 SQL Server  2008 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 SQL Server  2008 Data FileMyDB1_log.LDF" may be incorrect.
New log file 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database
         DataData File for Monthly ArchiveMicrosoft SQL Server  2008 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ếptheo, các bạn sẽ được giới thiệu  cách làm việc  với nhiều file .MDF và.LDF.

Tìm bài viết khác
Theo QUANTRIMANG.COM
Updated: 04/09/2009 | Views: 18 | Comments: 0

Comments - Attach cơ sở dữ liệu trong Microsoft SQL Server 2008

Hiện tại chưa có bình luận nào về bài viết Attach cơ sở dữ liệu trong Microsoft SQL Server 2008!

Bạn có ý kiến gì về bài viết Attach cơ sở dữ liệu trong Microsoft SQL Server 2008 này? Hãy gởi suy nghĩ, bình luận, đánh giá, lời khuyên ... của bạn về bài viết Attach cơ sở dữ liệu trong Microsoft SQL Server 2008 bạn tại đây.

Other articles

Similar Articles Attach cơ sở dữ liệu trong Microsoft SQL Server 2008

Older than Attach cơ sở dữ liệu trong Microsoft SQL Server 2008 in Cơ Sở Dữ Liệu

Newer than Attach cơ sở dữ liệu trong Microsoft SQL Server 2008 in Cơ Sở Dữ Liệu

Recently Published - Cơ Sở Dữ Liệu
Day ao thuat
Latest Comments in Cơ Sở Dữ Liệu
By TuấnBQ. Bài viết này rất hay, và em cũng hy vọng sẽ có các bài tiếp theo về .....
Most Comments in Cơ Sở Dữ Liệu
Monthly Most Views - Cơ Sở Dữ Liệu
  English Tiếng Việt 
Bạn đang xem bài viết Attach cơ sở dữ liệu trong Microsoft SQL Server 2008 được gởi trong chủ đề Cơ Sở Dữ Liệu - Công Nghệ Thông Tin. Bài viết Attach cơ sở dữ liệu trong Microsoft SQL Server 2008 này được lưu trên Server thành hai bản: Attach cơ sở dữ liệu trong Microsoft SQL Server 2008 có dấuAttach cơ sở dữ liệu trong Microsoft SQL Server 2008 không dấu. Bạn có thể gởi ý kiến bình luận, đóng góp về bài viết Attach cơ sở dữ liệu trong Microsoft SQL Server 2008 này tại phần gởi bình luận ở cuối nội dung bài viết. Lưu ý nội dung của bài viết Attach cơ sở dữ liệu trong Microsoft SQL Server 2008 này có thể không còn phù hợp với thời điểm hiện tại. Nếu phát hiện điều này, xin bạn báo cho BQT biết để gỡ bỏ nó.
Home Page | Privacy | Contact | Friend Links | Search | Sitemap | Up
Copyright © 2008 PhanVien.Com . All rights reserved.