Trong bài thực hành này, tôi giới thiệu một số kiến thức cơ bản ta cần lưu ý khi thực hiện tạo, Backup và Restore Database khi làm việc với SQL Server. Bài thực hành được thực hiện trên SQL Server 2008.\r\n\r\nTrước hết, tôi tạo ra một thư mục ở ổ D tên là MyData, và tạo một Database cũng có tên là MyData trong thư mục này. Database này gồm có:\r\n<ul>\r\n <li>1 file Database chính tên là <span style="color: #008080;">MyData </span>(trong SQL chỉ có duy nhất một file database chính có đuôi là .mdf)</li>\r\n <li>1 file Database secondary tên là <span style="color: #008080;">MyDataFile1 </span>(trong SQL ta có thể tạo được nhiều secondary file có đuôi là .ndf)</li>\r\n <li>1 file Database log tên là <span style="color: #008080;">MyData_log </span>(trong SQL ta có thể tạo được nhiều file log có đuôi là .ldf)</li>\r\n</ul>\r\n<blockquote>Đoạn script tạo Database như sau:\r\nUSE [master]\r\nGO\r\n\r\nCREATE DATABASE [MyData] ON PRIMARY\r\n( NAME = N''MyData'', FILENAME = N''D:\\MyData\\MyData.mdf'' , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),\r\n( NAME = N''MyDataFile1'', FILENAME = N''D:\\MyData\\MyDataFile1.ndf'' , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )\r\nLOG ON\r\n( NAME = N''MyData_log'', FILENAME = N''D:\\MyData\\MyData_log.ldf'' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)\r\nGO</blockquote>\r\nGiả sử tôi đổi tên Database lại thành YourData như bạn thấy trong hình sau:\r\n\r\nSau đó ta truy vấn thông tin về các file vật lý của mỗi Database trong hệ thống như sau:\r\n\r\nTa thấy dù ta đã đổi tên, nhưng các file vật lý vẫn giữ nguyên tên gốc là MyData\r\n\r\nBây giờ tôi thực hiện Backup Database dùng lệnh sau:\r\n\r\nFile Backup đã được tạo thành công như trong hình\r\n\r\nTrong SQL mọi thao tác Backup Restore Database đều được lưu trữ thông tin trong Database msdb. Bây giờ ta xem thông tin về file Backup mới tạo ra dùng câu lệnh sau:\r\n\r\nSELECT database_name, user_name as ExecutedBy, physical_device_name,\r\nbackup_finish_date, backup_finish_date\r\nFROM msdb..backupset bckset\r\nINNER JOIN msdb..backupmediafamily bckfmly\r\nON bckset.media_set_id = bckfmly.media_set_id\r\n\r\nTiếp theo tôi xóa Database và xóa luôn thư mục MyData\r\n\r\nBây giờ tôi chép file Backup sang ổ E và thực hiện Restore Database dùng câu lệnh sau:\r\n\r\nTa thấy xuất hiện lỗi, vì SQL không tìm thấy thư mục MyData, là thư mục vật lý đuợc lưu trong file Backup\r\nĐể khắc phục lỗi này, tôi lại thư mục MyData trong ổ D, và chạy lại câu lệnh Restore, lần này tôi đã thành công.\r\n\r\nNhư vậy, qua bài thực hành này tôi đã nêu ra một số điểm cơ bản bạn cần chú ý khi thực hiện Backup hay Restore Database', 'Làm một bài thực hành đơn giản về Backup & Restore', '', 'inherit', 'open', 'open', '', '330-revision-2', '', '', '2011-05-20 16:00:00', '2011-05-20 16:00:00', '', 330, 'http://sqlvn.com/uncategorized/330-revision-2.html', 0, 'revision', '', 0),(342, 1, '2011-05-20 16:33:32', '2011-05-20 16:33:32', 'Trong bài thực hành này, tôi giới thiệu một số kiến thức cơ bản ta cần lưu ý khi thực hiện tạo, Backup và Restore Database khi làm việc với SQL Server. Bài thực hành được thực hiện trên SQL Server 2008.<!--more-->\r\n\r\nTrước hết, tôi tạo ra một thư mục ở ổ D tên là <span style="color: #008080;">MyData</span>, và tạo một Database cũng có tên là <span style="color: #008080;">MyData </span>trong thư mục này. Database <span style="color: #008080;">MyData </span>gồm có:\r\n<ul>\r\n <li>1 file Database primary tên là <span style="color: #008080;">MyData </span>(trong SQL ta chỉ có thể tạo <span style="color: #008080;">duy nhất một file database Primary có đuôi là .mdf</span>)</li>\r\n <li>1 file Database secondary tên là <span style="color: #008080;">MyDataFile1 </span>(trong SQL ta có thể tạo được nhiều file Secondary có đuôi là .ndf)</li>\r\n <li>1 file Database log tên là <span style="color: #008080;">MyData_log </span>(trong SQL ta có thể tạo được <span style="color: #008080;">nhiều file Log có đuôi là .ldf</span>)</li>\r\n</ul>\r\n<blockquote>Đoạn script tạo Database như sau:\r\n<span style="color: #0000ff;">USE </span>[master]\r\n<span style="color: #0000ff;">GO</span>\r\n\r\n<span style="color: #0000ff;">CREATE DATABASE</span> [MyData] <span style="color: #0000ff;">ON PRIMARY</span>\r\n( NAME = <span style="color: #ff0000;">N''MyData''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyData.mdf''</span> , SIZE = 2048KB , MAXSIZE = <span style="color: #0000ff;">UNLIMITED</span>, FILEGROWTH = 1024KB ),\r\n( NAME = <span style="color: #ff0000;">N''MyDataFile1''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyDataFile1.ndf''</span> , SIZE = 2048KB , MAXSIZE = <span style="color: #0000ff;">UNLIMITED</span>, FILEGROWTH = 1024KB )\r\nLOG ON\r\n( NAME = <span style="color: #ff0000;">N''MyData_log''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyData_log.ldf'' </span>, SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)\r\n<span style="color: #0000ff;">GO</span></blockquote>\r\nKết quả khi tạo xong Database\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleCreateDB.jpg"><img class="alignnone size-full wp-image-333" title="backupRestoreSimpleCreateDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleCreateDB.jpg" alt="" width="336" height="85" /></a>\r\n\r\nGiả sử tôi đổi tên Database lại thành YourData như bạn thấy trong hình sau:\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB.jpg"><img class="alignnone size-full wp-image-334" title="backupRestoreSimpleRenameDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB.jpg" alt="" width="291" height="245" /></a>\r\n\r\nSau đó ta truy vấn thông tin về các file vật lý của mỗi Database trong hệ thống dùng câu lệnh sau:\r\n<blockquote><span style="color: #0000ff;">SELECT </span>database_id, name, physical_name, size <span style="color: #0000ff;">FROM </span><span style="color: #008080;">sys.master_files</span></blockquote>\r\nKết quả trả về cho ta thấy dù đã đổi tên, nhưng các file vật lý vẫn giữ nguyên tên gốc là MyData\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB1.jpg"><img class="alignnone size-full wp-image-335" title="backupRestoreSimpleRenameDB1" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB1.jpg" alt="" width="586" height="61" /></a>\r\n\r\nBây giờ tôi thực hiện Backup Database dùng lệnh sau:\r\n\r\n<span style="color: #0000ff;">BACKUP DATABASE</span> YourData <span style="color: #0000ff;">TO DISK</span>=<span style="color: #ff0000;">''E:\\MyBackup.bak''</span>\r\n\r\n<span style="color: #ff0000;"><a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleBackupDB.jpg"><img class="alignnone size-full wp-image-336" title="backupRestoreSimpleBackupDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleBackupDB.jpg" alt="" width="600" height="144" /></a></span>\r\n\r\nTrong SQL mọi thao tác Backup hay Restore Database đều được lưu trữ thông tin trong Database hệ thống là <span style="color: #008080;">msdb</span>. Bây giờ ta xem thông tin về file Backup mới tạo ra dùng câu lệnh sau:\r\n<blockquote><span style="color: #0000ff;">SELECT </span>database_name, user_name as ExecutedBy, physical_device_name,\r\nbackup_finish_date\r\n<span style="color: #0000ff;">FROM </span>msdb..backupset bckset\r\nINNER JOIN msdb..backupmediafamily bckfmly\r\n<span style="color: #0000ff;">ON </span>bckset.media_set_id = bckfmly.media_set_id</blockquote>\r\nKết quả trả về cho ta các thông tin hữu ích như:\r\n<ul>\r\n <li><strong>database_name</strong>: tên Database, ở đây là YourData</li>\r\n <li><strong>ExecutedB</strong>y: tên user thực hiện Backup, tôi thực hiện Backup bằng User sa nên User sa được lưu lại</li>\r\n <li><strong>physical_device_name</strong>: tên file và vị trí lưu trữ</li>\r\n <li><strong>backup_finish_date</strong>: thời gian thực hiện xong Backup</li>\r\n</ul>\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleViewBackupInfo.jpg"><img class="alignnone size-full wp-image-337" title="backupRestoreSimpleViewBackupInfo" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleViewBackupInfo.jpg" alt="" width="642" height="104" /></a>\r\n\r\nTiếp theo tôi xóa Database <span style="color: #008080;">YourData </span>và xóa luôn thư mục MyData ở ổ D\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleDeleteDB.jpg"><img class="alignnone size-full wp-image-338" title="backupRestoreSimpleDeleteDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleDeleteDB.jpg" alt="" width="261" height="325" /></a>\r\n\r\nBây giờ tôi thực hiện Restore Database từ file Backup dùng lệnh sau:\r\n\r\n<span style="color: #0000ff;">RESTORE DATABASE</span> MyData <span style="color: #0000ff;">FROM DISK</span>=<span style="color: #ff0000;">''E:\\MyBackup.bak''</span>\r\n\r\nTa thấy xuất hiện lỗi, vì SQL không tìm thấy thư mục <span style="color: #008080;">MyData <span style="color: #000000;">ở ổ D</span></span>, là thư mục vật lý đuợc lưu trong file Backup\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreError.jpg"><img class="alignnone size-full wp-image-339" title="backupRestoreSimpleRestoreError" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreError.jpg" alt="" width="1013" height="297" /></a>\r\nĐể khắc phục lỗi này, tôi tạo lại thư mục <span style="color: #008080;">MyData </span>trong ổ D, và chạy lại câu lệnh Restore, lần này tôi đã thành công.\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreOK.jpg"><img class="alignnone size-full wp-image-340" title="backupRestoreSimpleRestoreOK" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreOK.jpg" alt="" width="602" height="129" /></a>\r\n\r\nBài thực hành đến đây là kết thúc.\r\n<p style="text-align: right;">Quang Vinh\r\nmai.quangvinh@sqlvn.com</p>', 'Làm một bài thực hành đơn giản về Backup & Restore', '', 'inherit', 'open', 'open', '', '330-revision-3', '', '', '2011-05-20 16:33:32', '2011-05-20 16:33:32', '', 330, 'http://sqlvn.com/uncategorized/330-revision-3.html', 0, 'revision', '', 0),
(343, 1, '2011-05-20 16:36:10', '2011-05-20 16:36:10', 'Trong bài thực hành này, tôi giới thiệu một số kiến thức cơ bản ta cần lưu ý khi thực hiện tạo, Backup và Restore Database khi làm việc với SQL Server. Bài thực hành được thực hiện trên SQL Server 2008.<!--more-->\r\n\r\nTrước hết, tôi tạo ra một thư mục ở ổ D tên là <span style="color: #008080;">MyData</span>, và tạo một Database cũng có tên là <span style="color: #008080;">MyData </span>trong thư mục này. Database <span style="color: #008080;">MyData </span>gồm có:\r\n<ul>\r\n <li>1 file Database Primary tên là <span style="color: #008080;">MyData </span>(trong SQL ta chỉ có thể tạo <span style="color: #008080;">duy nhất một file data Primary có đuôi là .mdf</span>)</li>\r\n <li>1 file Database Secondary tên là <span style="color: #008080;">MyDataFile1 </span>(trong SQL ta có thể tạo được <span style="color: #008080;">nhiều file data Secondary có đuôi là .ndf</span>)</li>\r\n <li>1 file Database Log tên là <span style="color: #008080;">MyData_log </span>(trong SQL ta có thể tạo được <span style="color: #008080;">nhiều file Log có đuôi là .ldf</span>)</li>\r\n</ul>\r\n<blockquote>Đoạn script tạo Database như sau:\r\n<span style="color: #0000ff;">USE </span>[master]\r\n<span style="color: #0000ff;">GO</span>\r\n\r\n<span style="color: #0000ff;">CREATE DATABASE</span> [MyData] <span style="color: #0000ff;">ON PRIMARY</span>\r\n( NAME = <span style="color: #ff0000;">N''MyData''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyData.mdf''</span> , SIZE = 2048KB , MAXSIZE = <span style="color: #0000ff;">UNLIMITED</span>, FILEGROWTH = 1024KB ),\r\n( NAME = <span style="color: #ff0000;">N''MyDataFile1''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyDataFile1.ndf''</span> , SIZE = 2048KB , MAXSIZE = <span style="color: #0000ff;">UNLIMITED</span>, FILEGROWTH = 1024KB )\r\nLOG ON\r\n( NAME = <span style="color: #ff0000;">N''MyData_log''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyData_log.ldf'' </span>, SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)\r\n<span style="color: #0000ff;">GO</span></blockquote>\r\nKết quả khi tạo xong Database\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleCreateDB.jpg"><img class="alignnone size-full wp-image-333" title="backupRestoreSimpleCreateDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleCreateDB.jpg" alt="" width="336" height="85" /></a>\r\n\r\nGiả sử tôi đổi tên Database lại thành YourData như bạn thấy trong hình sau:\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB.jpg"><img class="alignnone size-full wp-image-334" title="backupRestoreSimpleRenameDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB.jpg" alt="" width="291" height="245" /></a>\r\n\r\nSau đó ta truy vấn thông tin về các file vật lý của mỗi Database trong hệ thống dùng câu lệnh sau:\r\n<blockquote><span style="color: #0000ff;">SELECT </span>database_id, name, physical_name, size <span style="color: #0000ff;">FROM </span><span style="color: #008080;">sys.master_files</span></blockquote>\r\nKết quả trả về cho ta thấy dù đã đổi tên, nhưng các file vật lý vẫn giữ nguyên tên gốc là MyData\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB1.jpg"><img class="alignnone size-full wp-image-335" title="backupRestoreSimpleRenameDB1" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB1.jpg" alt="" width="586" height="61" /></a>\r\n\r\nBây giờ tôi thực hiện Backup Database dùng lệnh sau:\r\n\r\n<span style="color: #0000ff;">BACKUP DATABASE</span> YourData <span style="color: #0000ff;">TO DISK</span>=<span style="color: #ff0000;">''E:\\MyBackup.bak''</span>\r\n\r\n<span style="color: #ff0000;"><a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleBackupDB.jpg"><img class="alignnone size-full wp-image-336" title="backupRestoreSimpleBackupDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleBackupDB.jpg" alt="" width="600" height="144" /></a></span>\r\n\r\nTrong SQL mọi thao tác Backup hay Restore Database đều được lưu trữ thông tin trong Database hệ thống là <span style="color: #008080;">msdb</span>. Bây giờ ta xem thông tin về file Backup mới tạo ra dùng câu lệnh sau:\r\n<blockquote><span style="color: #0000ff;">SELECT </span>database_name, user_name as ExecutedBy, physical_device_name,\r\nbackup_finish_date\r\n<span style="color: #0000ff;">FROM </span>msdb..backupset bckset\r\nINNER JOIN msdb..backupmediafamily bckfmly\r\n<span style="color: #0000ff;">ON </span>bckset.media_set_id = bckfmly.media_set_id</blockquote>\r\nKết quả trả về cho ta các thông tin hữu ích như:\r\n<ul>\r\n <li><strong>database_name</strong>: tên Database, ở đây là YourData</li>\r\n <li><strong>ExecutedB</strong>y: tên user thực hiện Backup, tôi thực hiện Backup bằng User sa nên User sa được lưu lại</li>\r\n <li><strong>physical_device_name</strong>: tên file và vị trí lưu trữ</li>\r\n <li><strong>backup_finish_date</strong>: thời gian thực hiện xong Backup</li>\r\n</ul>\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleViewBackupInfo.jpg"><img class="alignnone size-full wp-image-337" title="backupRestoreSimpleViewBackupInfo" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleViewBackupInfo.jpg" alt="" width="642" height="104" /></a>\r\n\r\nTiếp theo tôi xóa Database <span style="color: #008080;">YourData </span>và xóa luôn thư mục MyData ở ổ D\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleDeleteDB.jpg"><img class="alignnone size-full wp-image-338" title="backupRestoreSimpleDeleteDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleDeleteDB.jpg" alt="" width="261" height="325" /></a>\r\n\r\nBây giờ tôi thực hiện Restore Database từ file Backup dùng lệnh sau:\r\n<blockquote><span style="color: #0000ff;">RESTORE DATABASE</span> MyData <span style="color: #0000ff;">FROM DISK</span>=<span style="color: #ff0000;">''E:\\MyBackup.bak''</span></blockquote>\r\nTa thấy xuất hiện lỗi, vì SQL không tìm thấy thư mục <span style="color: #008080;">MyData <span style="color: #000000;">ở ổ D</span></span>, là thư mục vật lý đuợc lưu trong file Backup\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreError.jpg"><img class="alignnone size-full wp-image-339" title="backupRestoreSimpleRestoreError" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreError.jpg" alt="" width="1013" height="297" /></a>\r\nĐể khắc phục lỗi này, tôi tạo lại thư mục <span style="color: #008080;">MyData </span>trong ổ D, và chạy lại câu lệnh Restore, lần này tôi đã thành công.\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreOK.jpg"><img class="alignnone size-full wp-image-340" title="backupRestoreSimpleRestoreOK" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreOK.jpg" alt="" width="602" height="129" /></a>\r\n\r\nBài thực hành đến đây là kết thúc.\r\n<p style="text-align: right;">Quang Vinh\r\nmai.quangvinh@sqlvn.com</p>', 'Làm một bài thực hành đơn giản về Backup & Restore', '', 'inherit', 'open', 'open', '', '330-revision-4', '', '', '2011-05-20 16:36:10', '2011-05-20 16:36:10', '', 330, 'http://sqlvn.com/uncategorized/330-revision-4.html', 0, 'revision', '', 0),
(344, 1, '2011-05-20 16:36:49', '2011-05-20 16:36:49', 'Trong bài thực hành này, tôi giới thiệu một số kiến thức cơ bản ta cần lưu ý khi thực hiện tạo, Backup và Restore Database khi làm việc với SQL Server. Bài thực hành được thực hiện trên SQL Server 2008.<!--more-->\r\n\r\nTrước hết, tôi tạo ra một thư mục ở ổ D tên là <span style="color: #008080;">MyData</span>, và tạo một Database cũng có tên là <span style="color: #008080;">MyData </span>trong thư mục này. Database <span style="color: #008080;">MyData </span>gồm có:\r\n<ul>\r\n <li>1 file Database Primary tên là <span style="color: #008080;">MyData </span>(trong SQL ta chỉ có thể tạo <span style="color: #008080;">duy nhất một file data Primary có đuôi là .mdf</span>)</li>\r\n <li>1 file Database Secondary tên là <span style="color: #008080;">MyDataFile1 </span>(trong SQL ta có thể tạo được <span style="color: #008080;">nhiều file data Secondary có đuôi là .ndf</span>)</li>\r\n <li>1 file Database Log tên là <span style="color: #008080;">MyData_log </span>(trong SQL ta có thể tạo được <span style="color: #008080;">nhiều file Log có đuôi là .ldf</span>)</li>\r\n</ul>\r\n<blockquote>Đoạn script tạo Database như sau:\r\n<span style="color: #0000ff;">USE </span>[master]\r\n<span style="color: #0000ff;">GO</span>\r\n\r\n<span style="color: #0000ff;">CREATE DATABASE</span> [MyData] <span style="color: #0000ff;">ON PRIMARY</span>\r\n( NAME = <span style="color: #ff0000;">N''MyData''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyData.mdf''</span> , SIZE = 2048KB , MAXSIZE = <span style="color: #0000ff;">UNLIMITED</span>, FILEGROWTH = 1024KB ),\r\n( NAME = <span style="color: #ff0000;">N''MyDataFile1''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyDataFile1.ndf''</span> , SIZE = 2048KB , MAXSIZE = <span style="color: #0000ff;">UNLIMITED</span>, FILEGROWTH = 1024KB )\r\nLOG ON\r\n( NAME = <span style="color: #ff0000;">N''MyData_log''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyData_log.ldf'' </span>, SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)\r\n<span style="color: #0000ff;">GO</span></blockquote>\r\nKết quả khi tạo xong Database\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleCreateDB.jpg"><img class="alignnone size-full wp-image-333" title="backupRestoreSimpleCreateDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleCreateDB.jpg" alt="" width="336" height="85" /></a>\r\n\r\nGiả sử tôi đổi tên Database <span style="color: #008080;">MyData </span>lại thành <span style="color: #008080;">YourData </span>như bạn thấy trong hình sau:\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB.jpg"><img class="alignnone size-full wp-image-334" title="backupRestoreSimpleRenameDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB.jpg" alt="" width="291" height="245" /></a>\r\n\r\nSau đó ta truy vấn thông tin về các file vật lý của mỗi Database trong hệ thống dùng câu lệnh sau:\r\n<blockquote><span style="color: #0000ff;">SELECT </span>database_id, name, physical_name, size <span style="color: #0000ff;">FROM </span><span style="color: #008080;">sys.master_files</span></blockquote>\r\nKết quả trả về cho ta thấy dù đã đổi tên, nhưng các file vật lý vẫn giữ nguyên tên gốc là MyData\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB1.jpg"><img class="alignnone size-full wp-image-335" title="backupRestoreSimpleRenameDB1" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB1.jpg" alt="" width="586" height="61" /></a>\r\n\r\nBây giờ tôi thực hiện Backup Database dùng lệnh sau:\r\n\r\n<span style="color: #0000ff;">BACKUP DATABASE</span> YourData <span style="color: #0000ff;">TO DISK</span>=<span style="color: #ff0000;">''E:\\MyBackup.bak''</span>\r\n\r\n<span style="color: #ff0000;"><a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleBackupDB.jpg"><img class="alignnone size-full wp-image-336" title="backupRestoreSimpleBackupDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleBackupDB.jpg" alt="" width="600" height="144" /></a></span>\r\n\r\nTrong SQL mọi thao tác Backup hay Restore Database đều được lưu trữ thông tin trong Database hệ thống là <span style="color: #008080;">msdb</span>. Bây giờ ta xem thông tin về file Backup mới tạo ra dùng câu lệnh sau:\r\n<blockquote><span style="color: #0000ff;">SELECT </span>database_name, user_name as ExecutedBy, physical_device_name,\r\nbackup_finish_date\r\n<span style="color: #0000ff;">FROM </span>msdb..backupset bckset\r\nINNER JOIN msdb..backupmediafamily bckfmly\r\n<span style="color: #0000ff;">ON </span>bckset.media_set_id = bckfmly.media_set_id</blockquote>\r\nKết quả trả về cho ta các thông tin hữu ích như:\r\n<ul>\r\n <li><strong>database_name</strong>: tên Database, ở đây là YourData</li>\r\n <li><strong>ExecutedB</strong>y: tên user thực hiện Backup, tôi thực hiện Backup bằng User sa nên User sa được lưu lại</li>\r\n <li><strong>physical_device_name</strong>: tên file và vị trí lưu trữ</li>\r\n <li><strong>backup_finish_date</strong>: thời gian thực hiện xong Backup</li>\r\n</ul>\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleViewBackupInfo.jpg"><img class="alignnone size-full wp-image-337" title="backupRestoreSimpleViewBackupInfo" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleViewBackupInfo.jpg" alt="" width="642" height="104" /></a>\r\n\r\nTiếp theo tôi xóa Database <span style="color: #008080;">YourData </span>và xóa luôn thư mục MyData ở ổ D\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleDeleteDB.jpg"><img class="alignnone size-full wp-image-338" title="backupRestoreSimpleDeleteDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleDeleteDB.jpg" alt="" width="261" height="325" /></a>\r\n\r\nBây giờ tôi thực hiện Restore Database từ file Backup dùng lệnh sau:\r\n<blockquote><span style="color: #0000ff;">RESTORE DATABASE</span> MyData <span style="color: #0000ff;">FROM DISK</span>=<span style="color: #ff0000;">''E:\\MyBackup.bak''</span></blockquote>\r\nTa thấy xuất hiện lỗi, vì SQL không tìm thấy thư mục <span style="color: #008080;">MyData <span style="color: #000000;">ở ổ D</span></span>, là thư mục vật lý đuợc lưu trong file Backup\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreError.jpg"><img class="alignnone size-full wp-image-339" title="backupRestoreSimpleRestoreError" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreError.jpg" alt="" width="1013" height="297" /></a>\r\nĐể khắc phục lỗi này, tôi tạo lại thư mục <span style="color: #008080;">MyData </span>trong ổ D, và chạy lại câu lệnh Restore, lần này tôi đã thành công.\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreOK.jpg"><img class="alignnone size-full wp-image-340" title="backupRestoreSimpleRestoreOK" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreOK.jpg" alt="" width="602" height="129" /></a>\r\n\r\nBài thực hành đến đây là kết thúc.\r\n<p style="text-align: right;">Quang Vinh\r\nmai.quangvinh@sqlvn.com</p>', 'Làm một bài thực hành đơn giản về Backup & Restore', '', 'inherit', 'open', 'open', '', '330-revision-5', '', '', '2011-05-20 16:36:49', '2011-05-20 16:36:49', '', 330, 'http://sqlvn.com/uncategorized/330-revision-5.html', 0, 'revision', '', 0),
(345, 1, '2011-05-20 16:38:32', '2011-05-20 16:38:32', 'Trong bài thực hành này, tôi giới thiệu một số kiến thức cơ bản ta cần lưu ý khi thực hiện tạo, Backup và Restore Database khi làm việc với SQL Server. Bài thực hành được thực hiện trên SQL Server 2008.<!--more-->\r\n\r\nTrước hết, tôi tạo ra một thư mục ở ổ D tên là <span style="color: #008080;">MyData</span>, và tạo một Database cũng có tên là <span style="color: #008080;">MyData </span>trong thư mục này. Database <span style="color: #008080;">MyData </span>gồm có:\r\n<ul>\r\n <li>1 file Database Primary tên là <span style="color: #008080;">MyData </span>(trong SQL ta chỉ có thể tạo <span style="color: #008080;">duy nhất một file data Primary có đuôi là .mdf</span>)</li>\r\n <li>1 file Database Secondary tên là <span style="color: #008080;">MyDataFile1 </span>(trong SQL ta có thể tạo được <span style="color: #008080;">nhiều file data Secondary có đuôi là .ndf</span>)</li>\r\n <li>1 file Database Log tên là <span style="color: #008080;">MyData_log </span>(trong SQL ta có thể tạo được <span style="color: #008080;">nhiều file Log có đuôi là .ldf</span>)</li>\r\n</ul>\r\n<blockquote>Đoạn script tạo Database như sau:\r\n<span style="color: #0000ff;">USE </span>[master]\r\n<span style="color: #0000ff;">GO</span>\r\n\r\n<span style="color: #0000ff;">CREATE DATABASE</span> [MyData] <span style="color: #0000ff;">ON PRIMARY</span>\r\n( NAME = <span style="color: #ff0000;">N''MyData''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyData.mdf''</span> , SIZE = 2048KB , MAXSIZE = <span style="color: #0000ff;">UNLIMITED</span>, FILEGROWTH = 1024KB ),\r\n( NAME = <span style="color: #ff0000;">N''MyDataFile1''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyDataFile1.ndf''</span> , SIZE = 2048KB , MAXSIZE = <span style="color: #0000ff;">UNLIMITED</span>, FILEGROWTH = 1024KB )\r\nLOG ON\r\n( NAME = <span style="color: #ff0000;">N''MyData_log''</span>, <span style="color: #0000ff;">FILENAME </span>= <span style="color: #ff0000;">N''D:\\MyData\\MyData_log.ldf'' </span>, SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)\r\n<span style="color: #0000ff;">GO</span></blockquote>\r\nKết quả khi tạo xong Database\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleCreateDB.jpg"><img class="alignnone size-full wp-image-333" title="backupRestoreSimpleCreateDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleCreateDB.jpg" alt="" width="336" height="85" /></a>\r\n\r\nGiả sử tôi đổi tên Database <span style="color: #008080;">MyData </span>lại thành <span style="color: #008080;">YourData </span>như bạn thấy trong hình sau:\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB.jpg"><img class="alignnone size-full wp-image-334" title="backupRestoreSimpleRenameDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB.jpg" alt="" width="291" height="245" /></a>\r\n\r\nSau đó ta truy vấn thông tin về các file vật lý của mỗi Database trong hệ thống dùng câu lệnh sau:\r\n<blockquote><span style="color: #0000ff;">SELECT </span>database_id, name, physical_name, size <span style="color: #0000ff;">FROM </span><span style="color: #008080;">sys.master_files</span></blockquote>\r\nKết quả trả về cho ta thấy dù đã đổi tên, nhưng các file vật lý vẫn giữ nguyên tên gốc là MyData\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB1.jpg"><img class="alignnone size-full wp-image-335" title="backupRestoreSimpleRenameDB1" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRenameDB1.jpg" alt="" width="586" height="61" /></a>\r\n\r\nBây giờ tôi thực hiện Backup Database dùng lệnh sau:\r\n<blockquote><span style="color: #0000ff;">BACKUP DATABASE</span> YourData <span style="color: #0000ff;">TO DISK</span>=<span style="color: #ff0000;">''E:\\MyBackup.bak''</span></blockquote>\r\n<span style="color: #ff0000;"><a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleBackupDB.jpg"><img class="alignnone size-full wp-image-336" title="backupRestoreSimpleBackupDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleBackupDB.jpg" alt="" width="600" height="144" /></a></span>\r\n\r\nTrong SQL mọi thao tác Backup hay Restore Database đều được lưu trữ thông tin trong Database hệ thống là <span style="color: #008080;">msdb</span>. Bây giờ ta xem thông tin về file Backup mới tạo ra dùng câu lệnh sau:\r\n<blockquote><span style="color: #0000ff;">SELECT </span>database_name, user_name as ExecutedBy, physical_device_name,\r\nbackup_finish_date\r\n<span style="color: #0000ff;">FROM </span>msdb..backupset bckset\r\nINNER JOIN msdb..backupmediafamily bckfmly\r\n<span style="color: #0000ff;">ON </span>bckset.media_set_id = bckfmly.media_set_id</blockquote>\r\nKết quả trả về cho ta các thông tin hữu ích như:\r\n<ul>\r\n <li><strong>database_name</strong>: tên Database, ở đây là YourData</li>\r\n <li><strong>ExecutedB</strong>y: tên user thực hiện Backup, tôi thực hiện Backup bằng User sa nên User sa được lưu lại</li>\r\n <li><strong>physical_device_name</strong>: tên file và vị trí lưu trữ</li>\r\n <li><strong>backup_finish_date</strong>: thời gian thực hiện xong Backup</li>\r\n</ul>\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleViewBackupInfo.jpg"><img class="alignnone size-full wp-image-337" title="backupRestoreSimpleViewBackupInfo" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleViewBackupInfo.jpg" alt="" width="642" height="104" /></a>\r\n\r\nTiếp theo tôi xóa Database <span style="color: #008080;">YourData </span>và xóa luôn thư mục MyData ở ổ D\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleDeleteDB.jpg"><img class="alignnone size-full wp-image-338" title="backupRestoreSimpleDeleteDB" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleDeleteDB.jpg" alt="" width="261" height="325" /></a>\r\n\r\nBây giờ tôi thực hiện Restore Database từ file Backup dùng lệnh sau:\r\n<blockquote><span style="color: #0000ff;">RESTORE DATABASE</span> MyData <span style="color: #0000ff;">FROM DISK</span>=<span style="color: #ff0000;">''E:\\MyBackup.bak''</span></blockquote>\r\nTa thấy xuất hiện lỗi, vì SQL không tìm thấy thư mục <span style="color: #008080;">MyData <span style="color: #000000;">ở ổ D</span></span>, là thư mục vật lý đuợc lưu trong file Backup\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreError.jpg"><img class="alignnone size-full wp-image-339" title="backupRestoreSimpleRestoreError" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreError.jpg" alt="" width="1013" height="297" /></a>\r\nĐể khắc phục lỗi này, tôi tạo lại thư mục <span style="color: #008080;">MyData </span>trong ổ D, và chạy lại câu lệnh Restore, lần này tôi đã thành công.\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreOK.jpg"><img class="alignnone size-full wp-image-340" title="backupRestoreSimpleRestoreOK" src="http://sqlvn.com/wp-content/uploads/backupRestoreSimpleRestoreOK.jpg" alt="" width="602" height="129" /></a>\r\n\r\nBài thực hành đến đây là kết thúc.\r\n<p style="text-align: right;">Quang Vinh\r\nmai.quangvinh@sqlvn.com</p>', 'Làm một bài thực hành đơn giản về Backup & Restore', '', 'inherit', 'open', 'open', '', '330-revision-6', '', '', '2011-05-20 16:38:32', '2011-05-20 16:38:32', '', 330, 'http://sqlvn.com/uncategorized/330-revision-6.html', 0, 'revision', '', 0),
(346, 1, '2011-03-24 05:38:11', '2011-03-24 05:38:11', 'Rất vui nhận được những lời góp ý, đề nghị cộng tác, nghiên cứu, chia sẻ kiến thức về SQL Server từ tất cả mọi người.\r\n\r\nfsedfsdf\r\n\r\nsdf\r\n\r\nsad\r\n\r\nfsadf\r\n\r\nsd\r\n\r\nf\r\n\r\nsdf\r\n\r\nsd\r\n\r\nfs\r\n\r\ndf\r\n\r\n ', 'Liên hệ', '', 'inherit', 'open', 'open', '', '9-revision-8', '', '', '2011-03-24 05:38:11', '2011-03-24 05:38:11', '', 9, 'http://sqlvn.com/uncategorized/9-revision-8.html', 0, 'revision', '', 0),
(348, 1, '2011-05-23 15:43:09', '2011-05-23 15:43:09', '', 'QueryCost', '', 'inherit', 'open', 'open', '', 'querycost', '', '', '2011-05-23 15:43:09', '2011-05-23 15:43:09', '', 347, 'http://sqlvn.com/wp-content/uploads/QueryCost.jpg', 0, 'attachment', 'image/jpeg', 0),
(349, 1, '2011-05-23 15:47:08', '2011-05-23 15:47:08', '', 'PageReads', '', 'inherit', 'open', 'open', '', 'pagereads', '', '', '2011-05-23 15:47:08', '2011-05-23 15:47:08', '', 347, 'http://sqlvn.com/wp-content/uploads/PageReads.jpg', 0, 'attachment', 'image/jpeg', 0),
(350, 1, '2011-05-23 15:54:09', '2011-05-23 15:54:09', '', 'ExecutionTime', '', 'inherit', 'open', 'open', '', 'executiontime', '', '', '2011-05-23 15:54:09', '2011-05-23 15:54:09', '', 347, 'http://sqlvn.com/wp-content/uploads/ExecutionTime.jpg', 0, 'attachment', 'image/jpeg', 0),
(351, 1, '2011-05-23 16:01:39', '2011-05-23 16:01:39', 'Trước khi nghĩ đến việc tăng tốc câu truy vấn thì ta phải xem xét hiệu năng (Performance) của nó. Có 3 tiêu chí chính để chúng ta xem xét đó là: <strong><span style="color: #008080;">Query Cost </span></strong><span style="color: #000000;">(Chi phí của câu truy vấn)</span>, <span style="color: #008080;"><strong>Page Reads </strong><span style="color: #000000;">(Số lượng trang được đọc</span></span><span style="color: #000000;">)</span> và <span style="color: #008080;"><strong>Execution Time </strong><span style="color: #000000;">(Thời gian thực thi câu truy vấn</span></span><span style="color: #000000;">)</span>\n\n<span style="color: #000000;"> </span><span style="color: #ff0000;"><strong>\n<p style="display: inline !important;"><span style="font-weight: normal;"><strong> </strong></span></p>\n\n <li style="display: inline !important; padding-left: 30px;"><strong>1. Query Cost</strong></li>\n</strong></span><span style="color: #ff0000;"><strong> </strong></span>\n\nThông số này càng thấp, câu truy vấn chạy càng nhanh. Thông thường ta có thể thấy được thông số này bằng cách thực thi câu truy vấn thông qua SQL management Studio, chọn <span style="color: #008080;">Include Actual Execution Plan</span>, khi rê chuột vào Execution Plan, ta thấy xuất hiện thông số như hình sau\n\n<a href="http://sqlvn.com/wp-content/uploads/QueryCost.jpg"><img class="alignnone size-full wp-image-348" title="QueryCost" src="http://sqlvn.com/wp-content/uploads/QueryCost.jpg" alt="" width="584" height="580" /></a>\n\nTất cả các thông tin trên cho ta biết Query Cost của câu truy vấn. Như hình trên ta để ý thông số <span style="color: #008080;">Estimated I/O Cost</span> và <span style="color: #008080;">Estimated CPU Cost</span>, đây là thông số SQL Server đã ước tính lượng công việc của CPU và ổ cứng để hòan thành công việc, và cần lưu ý là nó không có một đơn vị cụ thể nào, chỉ là các con số cho ta so sánh.\n<p style="padding-left: 30px;"><span style="color: #ff0000;"><strong>2. Page Reads:</strong></span></p>\n\n<ol></ol>\nChính là số lượng trang dữ liệu được truy cập bởi SQL Server khi thực thi câu truy vấn. (mỗi trang dữ liệu trong SQL Server có kích thước 8KB). Ta có thể có được thông tin này bằng cách dùng lệnh <span style="color: #008080;">SET STATISTIC IO ON</span> trước khi thực hiện câu truy vấn. Ví dụ như hình sau:\n\n<a href="http://sqlvn.com/wp-content/uploads/PageReads.jpg"><img class="alignnone size-full wp-image-349" title="PageReads" src="http://sqlvn.com/wp-content/uploads/PageReads.jpg" alt="" width="638" height="179" /></a>\n<p style="padding-left: 30px;"><span style="color: #ff0000;"><strong>3. Query Execution Time:</strong></span></p>\nTiêu chí này cho ta biết thời gian thực thi câu truy vấn, và nó chịu tác động của blocking(locks) và sự tranh giành tài nguyên của máy chủ. Ta có thể có được thông tin này qua câu lệnh <span style="color: #008080;">SET STATISTICS TIME ON</span>, SQL Server sẻ trả về thời gian thực thi theo đơn vị là milisecond giây cho mỗi lần thực thi. Ví dụ như hình sau\n\n<a href="http://sqlvn.com/wp-content/uploads/ExecutionTime.jpg"><img class="alignnone size-full wp-image-350" title="ExecutionTime" src="http://sqlvn.com/wp-content/uploads/ExecutionTime.jpg" alt="" width="351" height="419" /></a>\n\n ', '3 tiêu chí xem hiệu năng của câu truy vấn', '', 'inherit', 'open', 'open', '', '347-revision', '', '', '2011-05-23 16:01:39', '2011-05-23 16:01:39', '', 347, 'http://sqlvn.com/uncategorized/347-revision.html', 0, 'revision', '', 0),
(352, 1, '2011-05-23 16:02:10', '2011-05-23 16:02:10', 'Trước khi nghĩ đến việc tăng tốc câu truy vấn thì ta phải xem xét hiệu năng (Performance) của nó. Có 3 tiêu chí chính để chúng ta xem xét đó là: <strong><span style="color: #008080;">Query Cost </span></strong><span style="color: #000000;">(Chi phí của câu truy vấn)</span>, <span style="color: #008080;"><strong>Page Reads </strong><span style="color: #000000;">(Số lượng trang được đọc</span></span><span style="color: #000000;">)</span> và <span style="color: #008080;"><strong>Execution Time </strong><span style="color: #000000;">(Thời gian thực thi câu truy vấn</span></span><span style="color: #000000;">)</span>\r\n\r\n<span style="color: #000000;"> </span><span style="color: #ff0000;"><strong>\r\n<p style="display: inline !important;"><span style="font-weight: normal;"><strong></strong></span></p>\r\n\r\n <li style="display: inline !important; padding-left: 30px;"><strong>1. Query Cost</strong></li>\r\n</strong></span><span style="color: #ff0000;"><strong> </strong></span>\r\n\r\nThông số này càng thấp, câu truy vấn chạy càng nhanh. Thông thường ta có thể thấy được thông số này bằng cách thực thi câu truy vấn thông qua SQL management Studio, chọn <span style="color: #008080;">Include Actual Execution Plan</span>, khi rê chuột vào Execution Plan, ta thấy xuất hiện thông số như hình sau\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/QueryCost.jpg"><img class="alignnone size-full wp-image-348" title="QueryCost" src="http://sqlvn.com/wp-content/uploads/QueryCost.jpg" alt="" width="584" height="580" /></a>\r\n\r\nTất cả các thông tin trên cho ta biết Query Cost của câu truy vấn. Như hình trên ta để ý thông số <span style="color: #008080;">Estimated I/O Cost</span> và <span style="color: #008080;">Estimated CPU Cost</span>, đây là thông số SQL Server đã ước tính lượng công việc của CPU và ổ cứng để hòan thành công việc, và cần lưu ý là nó không có một đơn vị cụ thể nào, chỉ là các con số cho ta so sánh.\r\n<p style="padding-left: 30px;"><span style="color: #ff0000;"><strong>2. Page Reads:</strong></span></p>\r\n\r\n<ol></ol>\r\nChính là số lượng trang dữ liệu được truy cập bởi SQL Server khi thực thi câu truy vấn. (mỗi trang dữ liệu trong SQL Server có kích thước 8KB). Ta có thể có được thông tin này bằng cách dùng lệnh <span style="color: #008080;">SET STATISTIC IO ON</span> trước khi thực hiện câu truy vấn. Ví dụ như hình sau:\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/PageReads.jpg"><img class="alignnone size-full wp-image-349" title="PageReads" src="http://sqlvn.com/wp-content/uploads/PageReads.jpg" alt="" width="638" height="179" /></a>\r\n<p style="padding-left: 30px;"><span style="color: #ff0000;"><strong>3. Query Execution Time:</strong></span></p>\r\nTiêu chí này cho ta biết thời gian thực thi câu truy vấn, và nó chịu tác động của blocking(locks) và sự tranh giành tài nguyên của máy chủ. Ta có thể có được thông tin này qua câu lệnh <span style="color: #008080;">SET STATISTICS TIME ON</span>, SQL Server sẻ trả về thời gian thực thi theo đơn vị là milisecond giây cho mỗi lần thực thi. Ví dụ như hình sau\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/ExecutionTime.jpg"><img class="alignnone size-full wp-image-350" title="ExecutionTime" src="http://sqlvn.com/wp-content/uploads/ExecutionTime.jpg" alt="" width="351" height="419" /></a>\r\n<p style="text-align: right;">Quang Vinh\r\nmai.quangvinh@sqlvn.com</p>', '3 tiêu chí xem hiệu năng của câu truy vấn', '', 'inherit', 'open', 'open', '', '347-revision-2', '', '', '2011-05-23 16:02:10', '2011-05-23 16:02:10', '', 347, 'http://sqlvn.com/uncategorized/347-revision-2.html', 0, 'revision', '', 0),
(353, 1, '2011-05-23 16:02:36', '2011-05-23 16:02:36', 'Trước khi nghĩ đến việc tăng tốc câu truy vấn thì ta phải xem xét hiệu năng (Performance) của nó. Có 3 tiêu chí chính để chúng ta xem xét đó là: <strong><span style="color: #008080;">Query Cost </span></strong><span style="color: #000000;">(Chi phí của câu truy vấn)</span>, <span style="color: #008080;"><strong>Page Reads </strong><span style="color: #000000;">(Số lượng trang được đọc</span></span><span style="color: #000000;">)</span> và <span style="color: #008080;"><strong>Execution Time </strong><span style="color: #000000;">(Thời gian thực thi câu truy vấn</span></span><span style="color: #000000;">)</span>\r\n\r\n<span style="color: #000000;"> </span><span style="color: #ff0000;"><strong> </strong></span>\r\n\r\n<strong>\r\n<p style="display: inline !important;"><span style="font-weight: normal;"><strong> </strong></span></p>\r\n\r\n <li style="display: inline !important; padding-left: 30px;"><strong>1. Query Cost</strong></li>\r\n</strong>\r\n\r\n<strong> </strong><span style="color: #ff0000;"><strong> </strong></span>\r\n\r\nThông số này càng thấp, câu truy vấn chạy càng nhanh. Thông thường ta có thể thấy được thông số này bằng cách thực thi câu truy vấn thông qua SQL management Studio, chọn <span style="color: #008080;">Include Actual Execution Plan</span>, khi rê chuột vào Execution Plan, ta thấy xuất hiện thông số như hình sau\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/QueryCost.jpg"><img class="alignnone size-full wp-image-348" title="QueryCost" src="http://sqlvn.com/wp-content/uploads/QueryCost.jpg" alt="" width="584" height="580" /></a>\r\n\r\nTất cả các thông tin trên cho ta biết Query Cost của câu truy vấn. Như hình trên ta để ý thông số <span style="color: #008080;">Estimated I/O Cost</span> và <span style="color: #008080;">Estimated CPU Cost</span>, đây là thông số SQL Server đã ước tính lượng công việc của CPU và ổ cứng để hòan thành công việc, và cần lưu ý là nó không có một đơn vị cụ thể nào, chỉ là các con số cho ta so sánh.\r\n<p style="padding-left: 30px;"><span style="color: #ff0000;"><strong>2. Page Reads:</strong></span></p>\r\nChính là số lượng trang dữ liệu được truy cập bởi SQL Server khi thực thi câu truy vấn. (mỗi trang dữ liệu trong SQL Server có kích thước 8KB). Ta có thể có được thông tin này bằng cách dùng lệnh <span style="color: #008080;">SET STATISTIC IO ON</span> trước khi thực hiện câu truy vấn. Ví dụ như hình sau:\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/PageReads.jpg"><img class="alignnone size-full wp-image-349" title="PageReads" src="http://sqlvn.com/wp-content/uploads/PageReads.jpg" alt="" width="638" height="179" /></a>\r\n<p style="padding-left: 30px;"><span style="color: #ff0000;"><strong>3. Query Execution Time:</strong></span></p>\r\nTiêu chí này cho ta biết thời gian thực thi câu truy vấn, và nó chịu tác động của blocking(locks) và sự tranh giành tài nguyên của máy chủ. Ta có thể có được thông tin này qua câu lệnh <span style="color: #008080;">SET STATISTICS TIME ON</span>, SQL Server sẻ trả về thời gian thực thi theo đơn vị là milisecond giây cho mỗi lần thực thi. Ví dụ như hình sau\r\n\r\n<a href="http://sqlvn.com/wp-content/uploads/ExecutionTime.jpg"><img class="alignnone size-full wp-image-350" title="ExecutionTime" src="http://sqlvn.com/wp-content/uploads/ExecutionTime.jpg" alt="" width="351" height="419" /></a>\r\n<p style="text-align: right;">Quang Vinh\r\nmai.quangvinh@sqlvn.com</p>', '', '', 'inherit', 'open', 'open', '', '347-revision-3', '', '', '2011-05-23 16:02:36', '2011-05-23 16:02:36', '', 347, 'http://sqlvn.com/uncategorized/347-revision-3.html', 0, 'revision', '', 0);
13/03/2013
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment