Sau khi di chuyển dữ liệu từ Access vào SQL Server, giờ bạn đã có một cơ sở dữ liệu máy khách/máy chủ, có thể là một giải pháp tại chỗ hoặc giải pháp điện toán đám mây Azure hỗn hợp. Dù theo cách nào thì giờ Access sẽ là tầng trình bày còn SQL Server là tầng dữ liệu. Hiện tại là thời điểm phù hợp để bạn cân nhắc lại các khía cạnh trong giải pháp của mình, đặc biệt là hiệu năng truy vấn, tính bảo mật và tính liên tục của hoạt động doanh nghiệp nhằm cải thiện và mở rộng giải pháp cơ sở dữ liệu.
Người dùng Access có thể cảm thấy khó khăn khi lần đầu tiếp cận hướng dẫn sử dụng SQL Server và Azure. Vì vậy, chúng tôi đã cung cấp một công cụ hướng dẫn để giới thiệu cho bạn những điểm chính quan trọng. Sau khi xem xong nội dung hướng dẫn này, bạn sẽ sẵn sàng để khám phá những tiến bộ trong công nghệ cơ sở dữ liệu và bước vào một hành trình dài hơn.
Trong bài viết này
Quản lý cơ sở dữ liệu Thúc đẩy tính liên tục của hoạt động doanh nghiệp |
Truy vấn và nội dung liên quan |
Kiểu dữ liệu |
Nội dung khác |
Thúc đẩy tính liên tục của hoạt động doanh nghiệp
Bạn muốn duy trì hoạt động của giải pháp Access với ít gián đoạn nhất có thể nhưng các tùy chọn có thể dùng với cơ sở dữ liệu phụ trợ Access lại rất hạn chế. Sao lưu cơ sở dữ liệu Access là hành động cần thiết để bảo vệ dữ liệu nhưng việc này sẽ yêu cầu người dùng của bạn chuyển sang trạng thái ngoại tuyến. Vì vậy sẽ xảy ra thời gian ngừng hoạt động ngoài dự kiến do việc nâng cấp bảo trì phần cứng/phần mềm, mất điện hoặc mạng, lỗi phần cứng, vi phạm bảo mật hoặc thậm chí là do cuộc tấn công qua mạng. Để giảm thiểu thời gian ngừng hoạt động cũng như sự tác động đến doanh nghiệp, bạn có thể sao lưu cơ sở dữ liệu SQL Server ngay cả khi SQL Server đang được sử dụng. Ngoài ra, SQL Server còn cung cấp các chiến lược về độ khả dụng cao (HA) và phục hồi sau thảm họa (DR). Hai công nghệ kết hợp này được gọi là HADR. Để biết thêm thông tin, hãy xem mục Tính liên tục của hoạt động doanh nghiệp và phục hồi cơ sở dữ liệu và Thúc đẩy tính liên tục của hoạt động doanh nghiệp với SQL Server (ebook).
Sao lưu khi đang sử dụng
SQL Server sử dụng quy trình sao lưu trực tuyến có thể diễn ra khi cơ sở dữ liệu đang hoạt động. Bạn có thể thực hiện sao lưu toàn bộ, sao lưu một phần hoặc sao lưu tệp. Hoạt động sao lưu sẽ sao chép dữ liệu và nhật ký giao dịch nhằm đảm bảo có thể thực hiện thao tác khôi phục hoàn toàn. Đặc biệt trong giải pháp tại chỗ, hãy lưu ý đến những khác biệt giữa các tùy chọn phục hồi đơn giản và đầy đủ cũng như cách chúng ảnh hưởng đến sự tăng trưởng nhật ký giao dịch. Để biết thêm thông tin, hãy xem mục Mô hình phục hồi.
Hầu hết các thao tác sao lưu đều diễn ra ngay lập tức, ngoại trừ các thao tác quản lý tệp và thu nhỏ cơ sở dữ liệu. Ngược lại, nếu bạn cố gắng tạo hoặc xóa tệp cơ sở dữ liệu trong khi đang thực hiện thao tác sao lưu, thao tác đó sẽ không thành công. Để biết thêm thông tin, hãy xem mục Tổng quan về sao lưu.
HADR
Hai kỹ thuật phổ biến nhất để đạt được độ khả dụng cao và tính liên tục của hoạt động doanh nghiệp là phản chiếu và phân cụm. SQL Server tích hợp công nghệ phản chiếu và phân cụm với "Phiên bản phân cụm chuyển đổi dự phòng luôn bật" và "Nhóm dự phòng luôn bật".
Phản chiếu là giải pháp về tính liên tục cấp cơ sở dữ liệu, hỗ trợ chuyển đổi dự phòng gần như ngay lập tức bằng cách duy trì một cơ sở dữ liệu dự phòng, một bản sao hoặc bản sao phản chiếu đầy đủ của cơ sở dữ liệu hiện hoạt trên phần cứng riêng. Giải pháp này có thể hoạt động ở chế độ đồng bộ (an toàn cao), trong đó giao dịch đến được cam kết với tất cả máy chủ cùng một lúc, hoặc ở chế độ không đồng bộ (hiệu năng cao), trong đó giao dịch đến được cam kết với cơ sở dữ liệu hiện hoạt, rồi được sao chép tới bản sao phản chiếu tại một số điểm được xác định trước. Phản chiếu là giải pháp cấp cơ sở dữ liệu và chỉ hoạt động với các cơ sở dữ liệu sử dụng mô hình phục hồi đầy đủ.
Phân cụm là giải pháp cấp máy chủ, kết hợp các máy chủ vào một bộ lưu trữ dữ liệu duy nhất mà người dùng sẽ thấy giống một phiên bản đơn. Người dùng kết nối với phiên bản này và không bao giờ cần biết máy chủ nào trong phiên bản đang hiện hoạt. Nếu một máy chủ gặp lỗi hoặc cần được chuyển sang trạng thái ngoại tuyến để bảo trì thì trải nghiệm người dùng cũng sẽ không thay đổi. Mỗi máy chủ trong cụm đều được trình quản lý cụm giám sát bằng thông báo hoạt động, vì vậy, trình quản lý cụm sẽ phát hiện thời điểm máy chủ hiện hoạt trong cụm chuyển sang trạng thái ngoại tuyến và tìm cách chuyển sang máy chủ tiếp theo trong cụm một cách liền mạch, mặc dù vẫn có chậm trễ dao động về thời gian trong khi chuyển đổi.
Để biết thêm thông tin, hãy xem mục Phiên bản phân cụm chuyển đổi dự phòng luôn bật và Nhóm dự phòng luôn bật: giải pháp về độ khả dụng cao và phục hồi sau thảm họa.
Bảo mật SQL Server
Mặc dù bạn có thể bảo vệ cơ sở dữ liệu Access bằng cách sử dụng Trung tâm Tin cậy và mã hóa cơ sở dữ liệu, SQL Server vẫn có nhiều tính năng bảo mật nâng cao hơn. Hãy xem ba chức năng nổi bật dành cho người dùng Access. Để biết thêm thông tin, hãy xem mục Bảo vệ SQL Server.
Xác thực cơ sở dữ liệu
Có bốn phương pháp xác thực cơ sở dữ liệu trong SQL Server, bạn có thể chỉ định từng phương pháp trong số đó ở chuỗi kết nối ODBC. Để biết thêm thông tin, hãy xem mục Liên kết tới hoặc nhập dữ liệu từ Cơ sở dữ liệu Azure SQL Server. Mỗi phương pháp đều có lợi ích riêng.
Xác thực tích hợp Windows Sử dụng thông tin xác thực Windows cho xác thực người dùng, vai trò bảo mật và giới hạn người dùng về các tính năng và dữ liệu. Bạn có thể tận dụng thông tin xác thực miền và dễ dàng quản lý quyền người dùng trong ứng dụng của mình. Bạn có thể tùy ý nhập Tên chính của dịch vụ (SPN). Để biết thêm thông tin, hãy xem mục Chọn chế độ xác thực.
Xác thực SQL Server Người dùng cần kết nối với thông tin xác thực đã được thiết lập trong cơ sở dữ liệu bằng cách nhập ID đăng nhập và mật khẩu vào lần đầu tiên họ truy nhập cơ sở dữ liệu trong một phiên. Để biết thêm thông tin, hãy xem mục Chọn chế độ xác thực.
Xác thực tích hợp Azure Active Directory Kết nối với Cơ sở dữ liệu Azure SQL Server bằng Azure Active Directory. Khi bạn đã đặt cấu hình cho xác thực Azure Active Directory, bạn không cần phải đăng nhập và nhập mật khẩu nữa. Để biết thêm thông tin, xem mục Kết nối với Cơ sở dữ liệu SQL bằng cách Sử dụng Xác thực Azure Active Directory.
Xác thực mật khẩu Active Directory Kết nối với thông tin xác thực đã được thiết lập trong Azure Active Directory bằng cách nhập tên đăng nhập và mật khẩu. Để biết thêm thông tin, xem mục Kết nối với Cơ sở dữ liệu SQL bằng cách Sử dụng Xác thực Azure Active Directory.
Mẹo Sử dụng Phát hiện mối đe dọa để nhận cảnh báo về hoạt động bất thường trong cơ sở dữ liệu cho biết mối đe dọa bảo mật tiềm ẩn đối với cơ sở dữ liệu Azure SQL Server. Để biết thêm thông tin, hãy xem mục Phát hiện mối đe dọa trong cơ sở dữ liệu SQL.
Bảo mật ứng dụng
SQL Server có hai tính năng bảo mật cấp ứng dụng mà bạn có thể tận dụng với Access.
Che Dữ liệu Động Che giấu thông tin nhạy cảm bằng cách che thông tin đó khỏi những người dùng không có đặc quyền. Ví dụ: bạn có thể che một phần hoặc toàn bộ số An sinh xã hội.
Mặt nạ dữ liệu một phần |
Mặt nạ dữ liệu toàn bộ |
Có vài cách để xác định mặt nạ dữ liệu và bạn có thể áp dụng những cách đó cho các kiểu dữ liệu khác nhau. Che dữ liệu được áp dụng theo chính sách ở cấp bảng và cột với tập hợp người dùng đã xác định và được áp dụng trong thời gian thực với truy vấn. Để biết thêm thông tin, hãy xem mục Che Dữ liệu Động.
Bảo mật Cấp hàng Bạn có thể kiểm soát quyền truy nhập vào các hàng cơ sở dữ liệu cụ thể chứa thông tin nhạy cảm dựa trên đặc tính người dùng bằng cách sử dụng Bảo mật Cấp hàng. Hệ thống cơ sở dữ liệu áp dụng những hạn chế về truy nhập này, điều này khiến cho hệ thống bảo mật trở nên đáng tin cậy và mạnh mẽ hơn.
Có hai loại xác lập bảo mật:
-
Xác lập bộ lọc lọc hàng từ truy vấn. Bộ lọc này vô hình và người dùng cuối không hề biết về bất kỳ hoạt động lọc nào.
-
Xác lập chặn ngăn chặn hành động trái phép và trả về lỗi nếu không thực hiện được hành động.
Để biết thêm thông tin, hãy xem mục Bảo mật cấp hàng.
Bảo vệ dữ liệu với mã hóa
Bảo vệ dữ liệu đang lưu trữ, đang truyền và đang sử dụng mà không ảnh hưởng đến hiệu năng của cơ sở dữ liệu. Để biết thêm thông tin, hãy xem mục Mã hóa SQL Server.
Mã hóa dữ liệu đang lưu trữ Để bảo vệ dữ liệu cá nhân trước các cuộc tấn công phương tiện ngoại tuyến ở tầng lưu trữ vật lý, hãy sử dụng mã hóa dữ liệu đang lưu trữ, còn được gọi là Mã hóa dữ liệu vô hình (TDE) Điều này có nghĩa là dữ liệu của bạn được bảo vệ ngay cả khi phương tiện vật lý bị mất cắp hoặc xử lý không đúng cách. TDE thực hiện mã hóa và giải mã theo thời gian thực cho cơ sở dữ liệu, nội dung sao lưu và nhật ký giao dịch mà không yêu cầu bất kỳ thay đổi nào với ứng dụng của bạn.
Mã hóa dữ liệu đang truyền Để bảo vệ chống lại việc rình mò thông tin và “cuộc tấn công xen giữa”, bạn có thể mã hóa dữ liệu được truyền qua mạng. SQL Server hỗ trợ Transport Layer Security (TLS) 1.2 cho thông tin liên lạc bảo mật cao. Giao thức Luồng dữ liệu dạng bảng (TDS) cũng được sử dụng để bảo vệ thông tin liên lạc qua các mạng không đáng tin cậy.
Mã hóa dữ liệu đang được sử dụng trên máy khách Để bảo vệ dữ liệu cá nhân trong khi sử dụng, hãy tìm đến tính năng “Always Encrypted”. Dữ liệu cá nhân được mã hóa và giải mã bằng một trình điều khiển trên máy tính khách mà không tiết lộ khóa mã hóa cho bộ máy cơ sở dữ liệu. Vì vậy, dữ liệu đã mã hóa chỉ hiển thị với những người có trách nhiệm quản lý dữ liệu đó, chứ không hiển thị với những người dùng có đặc quyền cao khác nhưng không được phép truy nhập. Tùy vào loại mã hóa được chọn mà Always Encrypted có thể giới hạn một số chức năng cơ sở dữ liệu như tìm kiếm, nhóm và lập chỉ mục cột được mã hóa.
Giải quyết mối lo ngại về quyền riêng tư
Trước mối lo ngại lan rộng về quyền riêng tư, Liên minh châu Âu đã xác định các yêu cầu pháp lý thông qua Quy định Chung về Bảo vệ Dữ liệu (GDPR). May mắn thay, bộ phụ trợ của SQL Server rất phù hợp để đáp ứng các yêu cầu này. Bạn hãy nghĩ đến việc thực thi GDPR trong một khung công việc gồm ba bước.
Bước 1: Đánh giá và quản lý rủi ro về tuân thủ
GDPR yêu cầu bạn xác định và liệt kê thông tin cá nhân của bạn trong bảng và tệp. Thông tin này có thể là bất kỳ nội dung gì, từ tên, ảnh, địa chỉ email, chi tiết ngân hàng, bài đăng trên website mạng xã hội, thông tin y tế hoặc thậm chí là địa chỉ IP.
Công cụ Phát hiện và Phân loại Dữ liệu SQL mới, được tích hợp sẵn vào SQL Server Management Studio sẽ giúp bạn khám phá, phân loại, đánh nhãn và báo cáo về dữ liệu nhạy cảm bằng cách áp dụng hai thuộc tính siêu dữ liệu cho cột:
-
Nhãn Để xác định độ nhạy cảm của dữ liệu.
-
Loại thông tin Để cung cấp độ chi tiết bổ sung về các loại dữ liệu được lưu trữ trong cột.
Bạn có thể sử dụng cơ chế khám phá khác, đó là tìm kiếm toàn bộ văn bản, bao gồm việc sử dụng các xác lập CONTAINS và FREETEXT và các hàm có giá trị tập hàng như CONTAINSTABLE và FREETEXTTABLE để dùng với câu lệnh SELECT. Sử dụng tính năng tìm kiếm toàn bộ văn bản, bạn có thể tìm kiếm trong bảng để khám phá các từ, cụm từ hoặc biến thể của từ như từ đồng nghĩa hay các phiên bản biến đổi. Để biết thêm thông tin, hãy xem mục Tìm kiếm toàn bộ văn bản.
Bước 2: Bảo vệ thông tin cá nhân
GDPR yêu cầu bạn bảo vệ thông tin cá nhân và giới hạn quyền truy nhập vào thông tin đó. Ngoài các bước chuẩn mà bạn thực hiện để quản lý quyền truy nhập vào mạng và tài nguyên của mình, như cài đặt tường lửa, bạn có thể sử dụng các tính năng bảo mật của SQL Server để giúp kiểm soát quyền truy nhập dữ liệu:
-
Xác thực SQL Server để quản lý danh tính người dùng và ngăn chặn truy nhập trái phép.
-
Bảo mật Cấp hàng để hạn chế quyền truy nhập vào các hàng trong bảng dựa trên mối quan hệ giữa người dùng và dữ liệu đó.
-
Che Dữ liệu Động để giới hạn quyền tiếp cận dữ liệu cá nhân bằng cách che dữ liệu đó khỏi người dùng không có đặc quyền.
-
Mã hóa để đảm bảo dữ liệu cá nhân được bảo vệ trong khi truyền và lưu trữ, cũng như được bảo vệ trước việc xâm phạm, bao gồm cả ở phía máy chủ.
Để biết thêm thông tin, hãy xem mục Bảo mật SQL Server.
Bước 3: Phản hồi yêu cầu một cách hiệu quả
GDPR yêu cầu bạn lưu giữ bản ghi về việc xử lý dữ liệu cá nhân và đảm bảo có thể cung cấp các bản ghi này cho cơ quan giám sát khi được yêu cầu. Nếu xảy ra sự cố, bao gồm phát hành dữ liệu ngoài ý muốn, các biện pháp kiểm soát bảo vệ sẽ cho phép bạn ứng phó nhanh chóng. Bạn phải nhanh chóng cung cấp dữ liệu khi cần báo cáo. Ví dụ: GDPR yêu cầu vi phạm về dữ liệu cá nhân phải được báo cáo cho cơ quan giám sát “không muộn hơn 72 giờ sau khi biết về vi phạm đó”.
SQL Server 2017 hỗ trợ bạn thực hiện các tác vụ báo cáo theo một số cách:
-
Kiểm tra SQL Server giúp bạn đảm bảo luôn có các bản ghi ổn định về hoạt động xử lý và truy nhập cơ sở dữ liệu. Tính năng này thực hiện kiểm tra chi tiết để theo dõi các hoạt động cơ sở dữ liệu nhằm giúp bạn hiểu rõ và xác định mối đe dọa tiềm ẩn, nghi ngờ lạm dụng hoặc vi phạm bảo mật. Bạn luôn sẵn sàng thực hiện giám định dữ liệu.
-
Bảng thời gian SQL Server là bảng dành cho người dùng theo phiên bản hệ thống, được thiết kế để lưu giữ toàn bộ lịch sử thay đổi dữ liệu. Bạn có thể sử dụng những bảng này để dễ dàng tạo báo cáo và phân tích theo thời điểm.
-
Đánh giá lỗ hổng SQL giúp bạn phát hiện các sự cố về bảo mật và quyền. Khi phát hiện sự cố, bạn cũng có thể truy sâu xuống báo cáo quét cơ sở dữ liệu để tìm hành động giải quyết.
Để biết thêm thông tin, hãy xem mục Tạo nền tảng tin cậy (ebook) và Hành trình tuân thủ GDPR.
Tạo ảnh cơ sở dữ liệu
Ảnh cơ sở dữ liệu là dạng xem tĩnh, chỉ đọc của cơ sở dữ liệu SQL Server tại một thời điểm. Mặc dù bạn có thể sao chép tệp cơ sở dữ liệu Access để tạo ảnh cơ sở dữ liệu một cách hiệu quả nhưng Access không có phương pháp được tích hợp sẵn như SQL Server. Bạn có thể sử dụng ảnh cơ sở dữ liệu để viết báo cáo dựa trên dữ liệu tại thời điểm tạo ảnh cơ sở dữ liệu. Bạn cũng có thể sử dụng ảnh cơ sở dữ liệu để duy trì dữ liệu lịch sử, chẳng hạn như một ảnh cơ sở dữ liệu cho mỗi quý tài chính mà bạn dùng để tổng hợp báo cáo cuối kỳ. Chúng tôi đề xuất các biện pháp tốt nhất sau:
-
Đặt tên cho ảnh Mỗi ảnh cơ sở dữ liệu đều cần có một tên cơ sở dữ liệu duy nhất. Thêm mục đích và khung thời gian vào tên để xác định dễ hơn. Ví dụ: để chụp ảnh cơ sở dữ liệu AdventureWorks 6 giờ một lần, ba lần một ngày trong khoảng 6 giờ SA đến 6 giờ CH dựa trên đồng hồ 24 giờ, hãy đặt tên cho chúng là ảnh_AdventureWorks_0600, ảnh_AdventureWorks_1200 và ảnh_AdventureWorks_1800.
-
Giới hạn số lượng ảnh Mỗi ảnh cơ sở dữ liệu đều tồn tại cho đến khi bị bỏ một cách rõ ràng. Vì mỗi ảnh sẽ tiếp tục phát triển, bạn nên bảo vệ dung lượng đĩa bằng cách xóa ảnh cũ sau khi tạo ảnh mới. Ví dụ: nếu bạn đang thực hiện báo cáo hàng ngày, hãy duy trì ảnh cơ sở dữ liệu trong 24 giờ, rồi bỏ và thay thế bằng ảnh mới.
-
Kết nối với ảnh chính xác Để sử dụng ảnh cơ sở dữ liệu, bộ ngoại vi của Access cần biết vị trí chính xác. Khi thay thế ảnh mới vào ảnh hiện có, bạn cần chuyển hướng Access sang ảnh mới. Thêm lô-gic vào bộ ngoại vi của Access để đảm bảo bạn đang kết nối với ảnh cơ sở dữ liệu chính xác.
Sau đây là cách tạo ảnh cơ sở dữ liệu:
CREATE DATABASE AdventureWorks_dbss1800 ON
( NAME = AdventureWorks_Data, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks_snapshot_0600' )
AS SNAPSHOT OF AdventureWorks;
Để biết thêm thông tin, hãy xem mục Ảnh cơ sở dữ liệu (SQL Server).
Kiểm soát đồng thời
Khi nhiều người tìm cách sửa đổi dữ liệu trong cơ sở dữ liệu cùng lúc, cần có hệ thống kiểm soát để đảm bảo sửa đổi do người này thực hiện không ảnh hưởng bất lợi đến sửa đổi của người khác. Điều này được gọi là kiểm soát đồng thời và có hai chiến lược khóa cơ bản: bi quan và lạc quan. Khóa có thể ngăn người dùng sửa đổi dữ liệu theo cách ảnh hưởng đến người dùng khác. Khóa cũng giúp đảm bảo tính toàn vẹn của cơ sở dữ liệu, đặc biệt là với các truy vấn có thể tạo ra kết quả không mong muốn nếu không được kiểm soát. Có những sự khác biệt quan trọng trong cách Access và SQL Server thực thi các chiến lược kiểm soát đồng thời này.
Trong Access, chiến lược khóa mặc định là lạc quan và sẽ cấp quyền sở hữu khóa cho người đầu tiên tìm cách ghi vào bản ghi. Access hiển thị hộp thoại Xung đột ghi với người còn lại đang tìm cách ghi vào bản ghi đó tại cùng thời điểm. Để giải quyết xung đột, người còn lại đó có thể lưu bản ghi, sao chép bản ghi vào bảng tạm hoặc bỏ thay đổi.
Bạn cũng có thể sử dụng thuộc tính RecordLocks để thay đổi chiến lược kiểm soát đồng thời. Thuộc tính này ảnh hưởng đến biểu mẫu, báo cáo cũng như truy vấn và có ba cài đặt:
-
Không khóa Trong một biểu mẫu, nhiều người dùng có thể tìm cách chỉnh sửa đồng thời cùng một bản ghi nhưng hộp thoại Xung đột ghi có thể xuất hiện. Trong báo cáo, bản ghi không bị khóa khi xem trước hoặc in báo cáo. Trong truy vấn, bản ghi không bị khóa khi đang chạy truy vấn. Đây là cách Access thực thi khóa lạc quan.
-
Tất cả bản ghi Mọi bản ghi trong bảng hoặc truy vấn cơ sở đều bị khóa khi biểu mẫu đang được mở trong Dạng xem biểu mẫu hoặc Dạng xem biểu dữ liệu, khi báo cáo đang được xem trước hoặc in hay khi truy vấn đang chạy. Người dùng có thể đọc bản ghi trong khi bản ghi bị khóa.
-
Bản ghi được chỉnh sửa Đối với biểu mẫu và truy vấn, trang trong bản ghi sẽ bị khóa ngay khi bất cứ người dùng nào bắt đầu chỉnh sửa trường bất kỳ trong bản ghi và tiếp tục được khóa cho đến khi người dùng đó di chuyển sang bản ghi khác. Do đó, chỉ lần lượt từng người dùng có thể chỉnh sửa bản ghi. Đây là cách Access thực thi khóa bi quan.
Để biết thêm thông tin, hãy xem mục Hộp thoại Xung đột ghi và Thuộc tính RecordLocks.
Trong SQL Server, kiểm soát đồng thời hoạt động như sau:
-
Bi quan Sau khi người dùng thực hiện hành động khiến khóa được áp dụng, những người dùng khác không thể thực hiện các hành động có thể xung đột với khóa cho tới khi chủ sở hữu mở khóa. Kiểm soát đồng nhất này chủ yếu được dùng trong các môi trường có mức cạnh tranh cao về dữ liệu.
-
Lạc quan Trong kiểm soát đồng bộ lạc quan, người dùng không khóa dữ liệu khi đọc. Khi người dùng cập nhật dữ liệu, hệ thống sẽ kiểm tra xem có người dùng khác thay đổi dữ liệu sau khi người dùng này đọc không. Nếu người dùng khác đã cập nhật dữ liệu, lỗi sẽ xuất hiện. Thông thường, người dùng nhận được lỗi sẽ quay lui giao dịch, rồi bắt đầu lại. Kiểm soát đồng nhất này chủ yếu được dùng trong các môi trường có mức cạnh tranh thấp về dữ liệu.
Bạn có thể chỉ định loại kiểm soát đồng bộ bằng cách chọn một số cấp độ cách ly giao dịch, điều này xác định cấp độ bảo vệ cho giao dịch trước những sửa đổi được thực hiện bởi các giao dịch khác bằng cách sử dụng câu lệnh SET TRANSACTION:
SET TRANSACTION ISOLATION LEVEL
{ READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SNAPSHOT
| SERIALIZABLE
}
Cấp độ cách ly |
Mô tả |
Đọc nội dung chưa cam kết |
Giao dịch chỉ được cách ly đủ để đảm bảo rằng dữ liệu bị hỏng về mặt vật lý không được đọc. |
Đọc nội dung đã cam kết |
Giao dịch có thể đọc dữ liệu được một giao dịch khác đọc trước đó mà không cần chờ giao dịch đầu tiên hoàn tất. |
Đọc nội dung có thể lặp lại |
Việc đọc và ghi khóa xảy ra trên dữ liệu được chọn cho đến cuối giao dịch nhưng có thể xảy ra hoạt động đọc giả. |
Ảnh |
Sử dụng phiên bản hàng để cung cấp tính nhất quán về đọc ở cấp giao dịch. |
Khả năng chuỗi hóa |
Các giao dịch được cách ly hoàn toàn với nhau. |
Để biết thêm thông tin, hãy xem mục Hướng dẫn về khóa giao dịch và tạo phiên bản hàng.
Cải thiện hiệu suất truy vấn
Sau khi truy vấn chuyển qua Access của bạn hoạt động, hãy tận dụng các cách tinh vi làm cho truy vấn hoạt động hiệu quả hơn của SQL Server.
Không giống cơ sở dữ liệu Access, SQL Server cung cấp các truy vấn song song để tối ưu hóa việc thực thi truy vấn và thao tác lập chỉ mục cho máy tính có nhiều bộ vi xử lý (CPU). Vì SQL Server có thể thực hiện thao tác truy vấn hay lập chỉ mục song song bằng cách sử dụng một số luồng trình làm việc hệ thống, thao tác này có thể được hoàn tất nhanh chóng và hiệu quả.
Truy vấn là một thành phần quan trọng trong việc cải thiện hiệu suất tổng thể cho giải pháp cơ sở dữ liệu của bạn. Các truy vấn không hợp lệ sẽ chạy vô thời hạn, hết thời gian chờ và sử dụng hết các tài nguyên như CPU, bộ nhớ và băng thông mạng. Điều này cản trở tính sẵn dùng của thông tin quan trọng trong doanh nghiệp. Thậm chí chỉ một truy vấn không hợp lệ cũng có thể gây ra các sự cố hiệu năng nghiêm trọng đối với cơ sở dữ liệu.
Để biết thêm thông tin, hãy xem mục Truy vấn nhanh hơn với SQL Server(ebook).
Tối ưu hóa truy vấn
Một số công cụ hoạt động cùng nhau để giúp bạn phân tích và cải thiện hiệu năng của truy vấn: Trình tối ưu hóa truy vấn, kế hoạch thực thi và Kho Truy vấn.
Trình tối ưu hóa truy vấn
Trình tối ưu hóa truy vấn là một trong những thành phần quan trọng nhất của SQL Server. Sử dụng Trình tối ưu hóa truy vấn nhằm phân tích truy vấn và xác định cách hiệu quả nhất để truy nhập dữ liệu cần thiết. Đầu vào của Trình tối ưu hóa truy vấn bao gồm truy vấn, sơ đồ cơ sở dữ liệu (định nghĩa về bảng và chỉ mục) và số liệu thống kê về cơ sở dữ liệu. Đầu ra của Trình tối ưu hóa truy vấn là kế hoạch thực thi.
Để biết thêm thông tin, hãy xem mục Trình tối ưu hóa truy vấn SQL Server.
Kế hoạch thực thi
Kế hoạch thực thi là một định nghĩa sắp xếp trình tự các bảng nguồn để truy nhập và các phương pháp được dùng để trích xuất dữ liệu từ mỗi bảng. Tối ưu hóa là quy trình chọn một kế hoạch thực thi từ nhiều kế hoạch khả thi có thể xuất hiện. Mỗi kế hoạch thực thi khả thi đều có chi phí liên kết về lượng tài nguyên điện toán được sử dụng và Trình tối ưu hóa truy vấn sẽ chọn kế hoạch có chi phí ước tính thấp nhất.
Đồng thời, SQL Server phải điều chỉnh linh động với những điều kiện luôn thay đổi trong cơ sở dữ liệu. Sự thụt lùi trong kế hoạch thực thi truy vấn có thể tác động lớn tới hiệu năng. Một số thay đổi trong cơ sở dữ liệu có thể khiến kế hoạch thực thi trở nên không hiệu quả hoặc không hợp lệ, tùy thuộc vào trạng thái mới của cơ sở dữ liệu. SQL Server phát hiện những thay đổi khiến kế hoạch thực thi trở nên không hợp lệ và đánh dấu kế hoạch đó là không hợp lệ.
Sau đó, cần phải tái biên dịch kế hoạch mới để cho kết nối tiếp theo thực thi truy vấn. Các điều kiện khiến kế hoạch trở nên không hợp lệ bao gồm:
-
Thay đổi thực hiện với bảng hoặc dạng xem được truy vấn tham chiếu (ALTER TABLE và ALTER VIEW).
-
Thay đổi với chỉ mục được kế hoạch thực thi sử dụng.
-
Thông tin cập nhật về số liệu thống kê được kế hoạch thực thi sử dụng, được tạo một cách rõ ràng từ câu lệnh, như UPDATE STATISTICS, hoặc được tạo tự động.
Để biết thêm thông tin, hãy xem mục Kế hoạch thực thi.
Kho Truy vấn
Kho Truy vấn cung cấp thông tin chuyên sâu về sự lựa chọn và hiệu năng của kế hoạch thực thi. Tính năng này đơn giản hóa việc khắc phục sự cố về hiệu năng bằng cách giúp bạn nhanh chóng tìm thấy các điểm khác nhau về hiệu năng do việc thay đổi kế hoạch thực thi. Kho Truy vấn tập hợp dữ liệu đo từ xa, chẳng hạn như lịch sử truy vấn, các kế hoạch, số liệu thống kê về thời gian chạy và số liệu thống kê về việc chờ. Sử dụng câu lệnh ALTER DATABASE để thực thi Kho Truy vấn:
ALTER DATABASE AdventureWorks2012 SET QUERY_STORE = ON;
Để biết thêm thông tin, hãy xem mục Giám sát hiệu năng bằng cách sử dụng Kho Truy vấn.
Sửa Kế hoạch Tự động
Có lẽ cách dễ nhất để cải thiện hiệu năng truy vấn là sử dụng Sửa Kế hoạch Tự động, một tính năng sẵn có trong Cơ sở dữ liệu Azure SQL. Bạn chỉ cần bật tính năng này và để cho tính năng hoạt động. Tính năng này sẽ liên tục thực hiện việc giám sát và phân tích kế hoạch thực thi, phát hiện các kế hoạch thực thi có vấn đề và tự động khắc phục các sự cố về hiệu năng. Dưới nền, Sửa Kế hoạch Tự động sử dụng chiến lược gồm bốn bước là tìm hiểu, điều chỉnh, xác minh và lặp lại.
Để biết thêm thông tin, hãy xem mục Tinh chỉnh tự động.
Xử lý Truy vấn Thích nghi
Bạn cũng có thể tải truy vấn nhanh hơn chỉ với việc nâng cấp lên SQL Server 2017, trong đó có một tính năng mới tên là xử lý truy vấn thích nghi. SQL Server điều chỉnh các lựa chọn kế hoạch truy vấn dựa trên đặc tính thời gian chạy.
Ước tính lượng tính ước lượng số hàng được xử lý ở từng bước trong kế hoạch thực thi. Ước tính không chính xác có thể dẫn đến thời gian phản hồi truy vấn chậm, việc sử dụng tài nguyên không cần thiết (bộ nhớ, CPU và IO) cũng như làm giảm lưu lượng và kiểm soát đồng thời. Ba kỹ thuật được sử dụng để thích nghi với đặc tính khối lượng công việc ứng dụng:
-
Thông tin phản hồi về việc cấp bộ nhớ theo chế độ lô Ước tính lượng tính không chính xác có thể khiến truy vấn “tràn vào đĩa” hay chiếm quá nhiều bộ nhớ. SQL Server 2017 điều chỉnh việc cấp bộ nhớ dựa trên thông tin phản hồi về thực thi, loại bỏ hiện tượng tràn vào đĩa và cải thiện kiểm soát đồng thời cho các truy vấn lặp lại.
-
Liên kết thích nghi trong chế độ lô Liên kết thích nghi linh động chọn loại liên kết nội bộ tốt hơn (liên kết vòng lặp lồng, liên kết kết hợp hoặc liên kết hàm băm) trong thời gian chạy, dựa trên hàng đầu vào thực tế. Do vậy, kế hoạch có thể linh động chuyển sang chiến lược liên kết tốt hơn trong khi thực thi.
-
Thực thi đan xen Hàm có giá trị bảng gồm nhiều câu lệnh thường được xử lý dưới dạng hộp đen bằng cách xử lý truy vấn. SQL Server 2017 có thể ước tính số hàng tốt hơn để cải thiện thao tác xuôi dòng.
Bạn có thể giúp khối lượng công việc tự động đủ điều kiện để xử lý truy vấn thích nghi bằng cách bật mức tương thích là 140 cho cơ sở dữ liệu:
ALTER DATABASE [YourDatabaseName] SET COMPATIBILITY_LEVEL = 140;
Để biết thêm thông tin, hãy xem mục Xử lý truy vấn thông minh trong cơ sở dữ liệu SQL.
Các cách truy vấn
Trong SQL Server, có một số cách truy vấn và mỗi cách đều có lợi ích riêng. Bạn cần biết rõ chúng để có thể đưa ra lựa chọn phù hợp cho giải pháp Access của mình. Cách tốt nhất để tạo truy vấn TSQL là chỉnh sửa và kiểm tra chúng một cách tương tác bằng bộ soạn thảo Transact-SQL trong SQL Server Management Studio (SSMS), có cảm ứng thông minh giúp bạn chọn từ khóa thích hợp và kiểm tra lỗi cú pháp.
Dạng xem
Trong SQL Server, dạng xem giống như một bảng ảo, chứa dữ liệu xem đến từ một hoặc nhiều bảng hoặc dạng xem khác. Tuy nhiên, dạng xem cũng được tham chiếu giống như bảng trong truy vấn. Dạng xem có thể ẩn bớt độ phức tạp của truy vấn và giúp bảo vệ dữ liệu bằng cách giới hạn tập hợp hàng và cột. Đây là ví dụ về dạng xem đơn giản:
CREATE VIEW HumanResources.EmployeeHireDate AS
SELECT p.FirstName, p.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID;
Để có hiệu năng tối ưu và chỉnh sửa kết quả dạng xem, hãy tạo dạng xem được lập chỉ mục, tồn tại trong cơ sở dữ liệu như một bảng, được phân bổ dung lượng lưu trữ và có thể được truy vấn như một bảng bất kỳ. Để sử dụng dạng xem này trong Access, hãy liên kết đến dạng xem đó theo cách tương tự như khi bạn liên kết đến bảng. Đây là ví dụ về dạng xem được lập chỉ mục:
CREATE VIEW Sales.vOrders
WITH SCHEMABINDING
AS
SELECT SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Revenue,
OrderDate, ProductID, COUNT_BIG(*) AS COUNT
FROM Sales.SalesOrderDetail AS od, Sales.SalesOrderHeader AS o
WHERE od.SalesOrderID = o.SalesOrderID
GROUP BY OrderDate, ProductID;
CREATE UNIQUE CLUSTERED INDEX IDX_V1
ON Sales.vOrders (OrderDate, ProductID);
Tuy nhiên cũng có các giới hạn. Bạn không thể cập nhật dữ liệu nếu có nhiều bảng cơ sở bị ảnh hưởng hoặc dạng xem có chứa các hàm tổng hợp hay mệnh đề DISTINCT. Nếu SQL Server trả về thông báo lỗi nói rằng không biết nên xóa bản ghi nào, có thể bạn cần thêm yếu tố kích hoạt xóa cho dạng xem đó. Cuối cùng, bạn không thể sử dụng mệnh đề ORDER BY như trong truy vấn truy nhập.
Để biết thêm thông tin, hãy xem mục Dạng xem và Tạo dạng xem được lập chỉ mục.
Thủ tục đã lưu trữ
Thủ tục đã lưu trữ là nhóm gồm một hoặc nhiều câu lệnh TSQL nhận tham số đầu vào, trả về tham số đầu ra và cho biết kết quả thành công hay thất bại thông qua giá trị trạng thái. Chúng đóng vai trò như tầng trung gian giữa bộ ngoại vi của Access và bộ phụ trợ của SQL Server. Thủ tục đã lưu trữ có thể đơn giản là câu lệnh SELECT hoặc phức tạp giống như một chương trình bất kỳ. Sau đây là ví dụ:
CREATE PROCEDURE HumanResources.uspGetEmployees
@LastName nvarchar(50),
@FirstName nvarchar(50)
AS
SET NOCOUNT ON;
SELECT FirstName, LastName, Department
FROM HumanResources.vEmployeeDepartmentHistory
WHERE FirstName = @FirstName AND LastName = @LastName
AND EndDate IS NULL;
Khi bạn sử dụng thủ tục đã lưu trữ trong Access, thủ tục này thường trả về bộ kết quả cho một biểu mẫu hoặc báo cáo. Tuy nhiên, thủ tục này có thể thực hiện các hành động khác không trả về kết quả, như câu lệnh DDL hoặc DML chẳng hạn. Khi bạn sử dụng truy vấn chuyển qua, hãy đảm bảo bạn đặt thuộc tính Trả về bản ghi một cách thích hợp.
Để biết thêm thông tin, hãy xem mục Thủ tục đã lưu trữ.
Biểu thức bảng phổ biến
Biểu thức bảng phổ biến (CTE) giống như một bảng tạm thời để tạo tập kết quả có tên. CTE chỉ tồn tại trong khi thực thi truy vấn đơn hoặc câu lệnh DML. CTE được tích hợp trong cùng dòng mã với câu lệnh SELECT hoặc câu lệnh DML sử dụng CTE, trong khi hoạt động tạo và sử dụng bảng tạm thời hay dạng xem thường là quy trình gồm hai bước. Sau đây là ví dụ:
-- Define the CTE expression name and column list.
WITH Sales_CTE (SalesPersonID, SalesOrderID, SalesYear)
AS
-- Define the CTE query.
(
SELECT SalesPersonID, SalesOrderID, YEAR(OrderDate) AS SalesYear
FROM Sales.SalesOrderHeader
WHERE SalesPersonID IS NOT NULL
)
-- Define the outer query referencing the CTE name.
SELECT SalesPersonID, COUNT(SalesOrderID) AS TotalSales, SalesYear
FROM Sales_CTE
GROUP BY SalesYear, SalesPersonID
ORDER BY SalesPersonID, SalesYear;
Dưới đây là một vài lợi ích của CTE:
-
Vì CTE là tạm thời nên bạn không cần tạo chúng dưới dạng các đối tượng cơ sở dữ liệu vĩnh viễn như dạng xem.
-
Bạn có thể tham chiếu một CTE nhiều lần trong một truy vấn hoặc câu lệnh DML, điều này giúp bạn dễ quản lý mã của mình hơn.
-
Bạn có thể sử dụng các truy vấn tham chiếu đến CTE để xác định con trỏ.
Để biết thêm thông tin, hãy xem mục WITH biểu_thức_bảng_phổ_biến.
Hàm do người dùng xác định
Hàm do người dùng xác định (UDF) có thể thực hiện các truy vấn và tính toán, rồi trả về một giá trị vô hướng hoặc bộ kết quả dữ liệu. Giống như các hàm trong ngôn ngữ lập trình, chúng chấp nhận tham số, thực hiện hành động như tính toán phức tạp và trả về kết quả của hành động đó dưới dạng một giá trị. Sau đây là ví dụ:
CREATE FUNCTION dbo.ISOweek (@DATE datetime)
RETURNS int WITH SCHEMABINDING -- Helps improve performance
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @ISOweek int;
SET @ISOweek= DATEPART(wk,@DATE)+1
-DATEPART(wk,CAST(DATEPART(yy,@DATE) as CHAR(4))+'0104');
-- Special cases: Jan 1-3 may belong to the previous year
IF (@ISOweek=0)
SET @ISOweek=dbo.ISOweek(CAST(DATEPART(yy,@DATE)-1
AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1;
-- Special case: Dec 29-31 may belong to the next year
IF ((DATEPART(mm,@DATE)=12) AND
((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
SET @ISOweek=1;
RETURN(@ISOweek);
END;
GO
SET DATEFIRST 1;
SELECT dbo.ISOweek(CONVERT(DATETIME,'12/26/2004',101)) AS 'ISO Week';
UDF có những giới hạn nhất định. Ví dụ: chúng không thể sử dụng một số hàm hệ thống không xác định, thực hiện câu lệnh DML hoặc DDL hay thực hiện truy vấn SQL động.
Để biết thêm thông tin, hãy xem mục Hàm do người dùng xác định.
Thêm khóa và chỉ mục
Dù bạn sử dụng hệ thống cơ sở dữ liệu nào, khóa và chỉ mục cũng luôn song hành cùng nhau.
Khóa
Trong SQL Server, hãy đảm bảo bạn tạo khóa chính cho từng bảng và khóa ngoại cho từng bảng có liên quan. Tính năng tương đương kiểu dữ liệu Số tự động truy nhập trong SQL Server là thuộc tính IDENTITY, có thể được sử dụng để tạo các giá trị khóa. Khi bạn áp dụng thuộc tính này cho bất kỳ cột số nào, cột số đó sẽ trở thành chỉ đọc và được duy trì bởi hệ thống cơ sở dữ liệu. Khi bạn chèn bản ghi vào bảng có chứa cột IDENTITY, hệ thống sẽ tự động tăng dần giá trị của cột IDENTITY theo 1 đơn vị và bắt đầu từ 1 nhưng bạn có thể kiểm soát các giá trị này bằng tham đối.
Để biết thêm thông tin, hãy xem mục CREATE TABLE, IDENTITY (Thuộc tính).
Chỉ mục
Như thường lệ, lựa chọn chỉ mục là hành động cân bằng giữa tốc độ truy vấn và chi phí cập nhật. Trong Access, bạn chỉ có một loại chỉ mục nhưng trong SQL Server, bạn có đến mười hai loại. May mắn là bạn có thể sử dụng trình tối ưu truy vấn để an tâm chọn chỉ mục hiệu quả nhất. Và trong Azure SQL, bạn có thể sử dụng quản lý chỉ mục tự động, tính năng tinh chỉnh tự động sẽ đề xuất bạn thêm hoặc loại bỏ chỉ mục. Khác với Access, bạn phải tạo chỉ mục riêng của mình cho khóa ngoại trong SQL Server. Bạn cũng có thể tạo chỉ mục trên dạng xem được lập chỉ mục để cải thiện hiệu năng truy vấn. Điểm trừ của dạng xem được lập chỉ mục là tổng phí tăng cao khi bạn sửa đổi dữ liệu trong bảng cơ sở của dạng xem vì dạng xem cũng phải được cập nhật. Để biết thêm thông tin, hãy xem mục Hướng dẫn về kiến trúc và thiết kế của chỉ mục SQL Server và Chỉ mục.
Thực hiện giao dịch
Không dễ thực hiện Quy trình giao dịch trực tuyến (OLTP) khi sử dụng Access nhưng điều này lại tương đối dễ dàng với SQL Server. Giao dịch là một đơn vị công việc cam kết tất cả thay đổi dữ liệu khi thành công nhưng quay lui thay đổi khi không thành công. Một giao dịch phải có bốn thuộc tính, thường được gọi là ACID:
-
Tính nguyên tố Giao dịch phải là một đơn vị nguyên tử của công việc; phải thực hiện toàn bộ sửa đổi dữ liệu của giao dịch hoặc không thực hiện sửa đổi giao dịch nào.
-
Tính nhất quán Khi hoàn tất, giao dịch phải để tất cả dữ liệu ở trạng thái nhất quán. Điều này có nghĩa là tất cả quy tắc toàn vẹn dữ liệu đều được áp dụng.
-
Tính độc lập Những thay đổi do các giao dịch đồng thời tạo ra được cách ly khỏi giao dịch hiện tại.
-
Độ bền Sau khi giao dịch hoàn thành, các thay đổi là cố định, ngay cả khi hệ thống bị hỏng.
Bạn có thể sử dụng giao dịch để bảo đảm tính toàn vẹn dữ liệu bảo đảm, chẳng hạn như rút tiền mặt từ máy ATM hoặc gửi tiền lương tự động. Bạn có thể thực hiện các giao dịch rõ ràng, ẩn hoặc theo phạm vi lô. Dưới đây là hai ví dụ về TSQL:
-- Using an explicit transaction
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT;
-- the ROLLBACK statement rolls back the INSERT statement, but the created table still exists.
CREATE TABLE ValueTable (id int);
BEGIN TRANSACTION;
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
ROLLBACK;
Để biết thêm thông tin, hãy xem mục Giao dịch.
Sử dụng ràng buộc và yếu tố kích hoạt
Tất cả cơ sở dữ liệu đều có cách duy trì tính toàn vẹn dữ liệu.
Các ràng buộc
Trong Access, bạn có thể thực thi tính toàn vẹn tham chiếu trong mối quan hệ bảng thông qua các cặp khóa chính - khóa ngoại, phổ biến nội dung cập nhật cũng như xóa và các quy tắc xác thực. Để biết thêm thông tin, hãy xem mục Hướng dẫn về mối quan hệ bảng và Giới hạn đầu vào dữ liệu bằng cách sử dụng quy tắc xác thực.
Trong SQL Server, bạn sử dụng các ràng buộc UNIQUE và CHECK, là đối tượng cơ sở dữ liệu sẽ thực thi tính toàn vẹn dữ liệu trong các bảng SQL Server. Để xác thực một giá trị là hợp lệ trong bảng khác, hãy sử dụng ràng buộc khóa ngoại. Để xác thực rằng một giá trị trong một cột nằm trong một phạm vi cụ thể, hãy sử dụng ràng buộc kiểm tra. Các đối tượng này là tuyến phòng thủ đầu tiên của bạn và được thiết kế để hoạt động hiệu quả. Để biết thêm thông tin, hãy xem mục Ràng buộc duy nhất và ràng buộc kiểm tra.
Yếu tố kích hoạt
Access không có yếu tố kích hoạt cơ sở dữ liệu. Trong SQL Server, bạn có thể sử dụng yếu tố kích hoạt để thực thi các quy tắc phức tạp về tính toàn vẹn dữ liệu và chạy lô-gic kinh doanh này trên máy chủ. Yếu tố kích hoạt cơ sở dữ liệu là thủ tục đã lưu trữ sẽ chạy khi có hành động cụ thể xảy ra trong một cơ sở dữ liệu. Yếu tố kích hoạt là một sự kiện, chẳng hạn như thêm hoặc xóa bản ghi cho bảng, có tác dụng kích hoạt rồi thực thi thủ tục đã lưu trữ. Mặc dù một cơ sở dữ liệu Access có thể đảm bảo tính toàn vẹn tham chiếu khi người dùng tìm cách cập nhật hoặc xóa dữ liệu nhưng SQL Server vẫn có tập hợp yếu tố kích hoạt tinh vi. Ví dụ: bạn có thể lập trình cho một yếu tố kích hoạt xóa hàng loạt bản ghi và đảm bảo tính toàn vẹn dữ liệu. Thậm chí bạn còn có thể thêm yếu tố kích hoạt cho bảng và dạng xem.
Để biết thêm thông tin, hãy xem mục Yếu tố kích hoạt - DML, Yếu tố kích hoạt - DDL và Thiết kế yếu tố kích hoạt T-SQL.
Sử dụng cột được tính toán
Trong Access, bạn tạo cột được tính bằng cách thêm cột vào truy vấn và xây dựng một biểu thức, chẳng hạn như:
Extended Price: [Quantity] * [Unit Price]
Trong SQL Server, tính năng tương đương được gọi là cột được tính toán, là một cột ảo không được lưu trữ thực tế trong bảng, trừ khi cột được đánh dấu là PERSISTED. Giống như cột được tính, cột được tính toán sử dụng dữ liệu từ các cột khác trong biểu thức. Để tạo cột được tính toán, hãy thêm cột vào bảng. Ví dụ:
CREATE TABLE dbo.Products
(
ProductID int IDENTITY (1,1) NOT NULL
, QtyAvailable smallint
, UnitPrice money
, InventoryValue AS QtyAvailable * UnitPrice
);
Để biết thêm thông tin, hãy xem mục Chỉ định cột được tính toán trong bảng.
Gắn tem thời gian cho dữ liệu
Đôi khi, bạn thêm trường bảng để ghi lại tem thời gian cho thời điểm tạo bản ghi nhằm ghi nhật ký mục nhập dữ liệu. Trong Access, bạn chỉ cần tạo cột ngày có giá trị mặc định là =Now(). Để ghi lại ngày hoặc thời gian trong SQL Server, hãy sử dụng kiểu dữ liệu datetime2 với giá trị mặc định là SYSDATETIME().
Lưu ý Tránh nhầm rowversion với việc thêm tem thời gian cho dữ liệu của bạn. Từ khóa tem thời gian đồng nghĩa với rowversion trong SQL Server nhưng bạn nên sử dụng từ khóa rowversion. Trong SQL Server, rowversion là kiểu dữ liệu hiển thị các số nhị phân duy nhất được tạo tự động trong một cơ sở dữ liệu và thường được dùng làm cơ chế cho các hàng trong bảng gắn tem phiên bản. Tuy nhiên, kiểu dữ liệu rowversion chỉ là một số tăng dần, không cố định một ngày hoặc thời gian và không được thiết kế để gắn tem thời gian cho hàng.
Để biết thêm thông tin, hãy xem mục rowversion. Để biết thêm thông tin về cách sử dụng rowversion để giảm thiểu xung đột bản ghi, hãy xem mục Di chuyển cơ sở dữ liệu Access sang SQL Server.
Quản lý đối tượng lớn
Trong Access, bạn quản lý dữ liệu phi cấu trúc, chẳng hạn như tệp, ảnh và hình ảnh, bằng cách sử dụng kiểu dữ liệu Phần đính kèm. Trong thuật ngữ SQL Server, dữ liệu không có cấu trúc được gọi là Blob (Đối tượng nhị phân lớn) và có một số cách để làm việc với đối tượng này:
FILESTREAM Sử dụng kiểu dữ liệu varbinary(max) để lưu trữ dữ liệu không có cấu trúc trên hệ thống tệp thay vì cơ sở dữ liệu. Để biết thêm thông tin, hãy xem mục Truy nhập dữ liệu FILESTREAM với giao dịch Transact-SQL.
FileTable Lưu trữ blob trong bảng đặc biệt gọi là FileTable và cung cấp khả năng tương thích với các ứng dụng Windows như khi lưu trữ trong hệ thống tệp và không thực hiện bất kỳ thay đổi nào với các ứng dụng máy khách của bạn. FileTable yêu cầu sử dụng FILESTREAM. Để biết thêm thông tin, hãy xem mục FileTable.
Lưu trữ BLOB từ xa (RBS) Lưu trữ đối tượng nhị phân lớn (blob) trong giải pháp lưu trữ hàng thay vì trực tiếp trên máy chủ. Điều này tiết kiệm dung lượng và giảm bớt tài nguyên phần cứng. Để biết thêm thông tin, hãy xem mục Đối tượng nhị phân lớn (blob).
Làm việc với dữ liệu phân cấp
Mặc dù các cơ sở dữ liệu quan hệ như Access rất linh hoạt nhưng việc làm việc với các mối quan hệ phân cấp là một ngoại lệ và thường yêu cầu phải có câu lệnh hoặc mã SQL phức tạp. Ví dụ về dữ liệu phân cấp bao gồm: cấu trúc tổ chức, hệ thống tệp, nguyên tắc phân loại thuật ngữ ngôn ngữ và đồ thị liên kết giữa các trang Web. SQL Server có kiểu dữ liệu hierarchyid được tích hợp sẵn và tập hợp các hàm phân cấp để dễ dàng lưu trữ, truy vấn và quản lý dữ liệu phân cấp.
Để biết thêm thông tin, hãy xem mục Dữ liệu phân cấp và Hướng dẫn: Sử dụng kiểu dữ liệu hierarchyid.
Tác động đến văn bản JSON
Ký hiệu đối tượng JavaScript (JSON) là dịch vụ web sử dụng văn bản con người có thể đọc để truyền dữ liệu dưới dạng các cặp thuộc tính – giá trị trong hoạt động liên lạc trình duyệt – máy chủ không đồng bộ. Ví dụ:
{
"firstName": "Mary",
"lastName": "Contrary",
"spouse": null,
"age": 27
}
Access không có bất kỳ cách tích hợp sẵn nào để quản lý dữ liệu JSON, tuy nhiên, trong SQL Server, bạn có thể dễ dàng lưu trữ, lập chỉ mục, truy vấn và trích xuất dữ liệu JSON. Bạn có thể chuyển đổi và lưu trữ văn bản JSON trong bảng hoặc định dạng dữ liệu dưới dạng văn bản JSON. Ví dụ: bạn có thể muốn định dạng kết quả truy vấn dưới dạng JSON cho ứng dụng Web hoặc thêm cấu trúc dữ liệu JSON vào hàng và cột.
Lưu ý VBA không hỗ trợ JSON. Thay vào đó, bạn có thể sử dụng XML trong VBA bằng cách dùng thư viện MSXML.
Để biết thêm thông tin, hãy xem mục Dữ liệu JSON trong SQL Server.
Tài nguyên
Giờ là thời điểm tuyệt vời để tìm hiểu thêm về SQL Server và Transact SQL (TSQL). Như bạn đã thấy, nền tảng này có nhiều tính năng giống với Access nhưng cũng có những chức năng không hề xuất hiện trong Access. Để có thể tìm hiểu sâu hơn, hãy xem một số tài nguyên học tập dưới đây:
Tài nguyên |
Mô tả |
Khóa học bằng video |
|
Hướng dẫn về SQL Server 2017 |
|
Trải nghiệm tìm hiểu trực tiếp về Azure |
|
Trở thành chuyên gia |
|
Trang đích chính |
|
Thông tin trợ giúp |
|
Thông tin trợ giúp |
|
Tổng quan về đám mây |
|
Tóm tắt trực quan về các tính năng mới |
|
Tóm tắt về tính năng theo phiên bản |
|
Tải xuống SQL Server Express 2017 |
|
Tải xuống cơ sở dữ liệu mẫu |