|
||||||||
|
||||||||
|
|
Công Cụ | Xếp Bài |
31-10-2009, 10:10 AM | #1 |
Guest
Trả Lời: n/a
|
Attach cơ sở dữ liệu trong Microsoft SQL Server 2008
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. 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:
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í 'Crogram 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 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:go CREATE DATABASE MyDB1 ON ( NAME = MyDB1_dat, FILENAME = 'Crogram 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 = 'Crogram 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 use master 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:go sp_detach_db 'MyDB1' go sp_attach_db 'MyDb1', 'Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf', 'Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf' GO use master 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:go sp_detach_db 'MyDB1' go CREATE DATABASE MyDB1 ON ( FILENAME = 'Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf' ), ( FILENAME = 'Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf' ) for Attach go use master 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:go sp_detach_db 'MyDB1' go exec master..xp_cmdshell 'del "Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf"' go 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 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 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.go sp_configure 'show advanced options',1 go reconfigure with override go sp_configure 'xp_cmdshell',1 go reconfigure with override go 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', 'Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf' go Kết quả 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:File activation failure. The physical file name "Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf" may be incorrect. New log file 'Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF' was created. use master 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.go sp_detach_db 'MyDB1' go exec master..xp_cmdshell 'del "Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.ldf"' go CREATE DATABASE MyDB1 ON ( FILENAME = 'Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf' ) for ATTACH_REBUILD_LOG Kết quả: Kết luậnFile activation failure. The physical file name "Crogram FilesMicrosoft SQL Server MSSQL10.SQL2008MSSQLDATASummary Database DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF" may be incorrect. New log file 'Crogram FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1_log.LDF' was created. 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. Tác giả: Database Journal |
|
|