2. Trong Access, tôi có thể thực hiện thao tác Link Tables từ data_Access01 sang dataAccess02, khi thao tác trên đối tượng Table được Link của database_Access02 thì các Table của data_Access01 thay đổi tương ứng. Chức năng trên được thể hiện trong SQL Sever 2000 như thế nào?
 3. Access phân quyền CSDL qua tệp system.mda hoặc system.mdw, ở SQL Server 2000 phân quyền trên tệp nào?
 4. Có thể dùng câu lệnh VB để thực hiện thao tác copy, import, export table của database này qua database khác trên CSDL SQL Server 2000 được không?
 5. Dùng Crystal report 8.5 để thiết kế report qua các bước:
 Chọn CSDL SQL (Table hoặc View), sau đó kéo từng trường vào biểu.
 Từ một Form của VB, dùng điều khiển Crystal để gọi report, nếu tên server chứa SQL Server thay đổi, hoặc tên database thay đổi so với lúc thiết kế report thì khi gọi report không thực hiện được, phải thực hiện refresh report và gõ vào tên server và CSDL. Xin hỏi có cách nào khắc phục tình trạng trên từ câu lệnh VB mà không cần thực hiện thủ công trên Crystal Report không?
 6. Crystal Report được bảo mật như thế nào? " />
  • Thứ Hai, 18/10/2004 16:46 (GMT+7)

    Câu hỏi :
     Trước đây tôi dùng Access, nay chuyển sang dùng VB6.0, SQL Server 2000 và Crystal Report 8.5. Tôi có một số thắc mắc sau.
     1. Tôi có 1 database (ví dụ "data_name01") bên trong có chứa các Table đã được nhập liệu, có thể viết câu lệnh VB để copy database này thành 1 database khác được không?
     2. Trong Access, tôi có thể thực hiện thao tác Link Tables từ data_Access01 sang dataAccess02, khi thao tác trên đối tượng Table được Link của database_Access02 thì các Table của data_Access01 thay đổi tương ứng. Chức năng trên được thể hiện trong SQL Sever 2000 như thế nào?
     3. Access phân quyền CSDL qua tệp system.mda hoặc system.mdw, ở SQL Server 2000 phân quyền trên tệp nào?
     4. Có thể dùng câu lệnh VB để thực hiện thao tác copy, import, export table của database này qua database khác trên CSDL SQL Server 2000 được không?
     5. Dùng Crystal report 8.5 để thiết kế report qua các bước:
     Chọn CSDL SQL (Table hoặc View), sau đó kéo từng trường vào biểu.
     Từ một Form của VB, dùng điều khiển Crystal để gọi report, nếu tên server chứa SQL Server thay đổi, hoặc tên database thay đổi so với lúc thiết kế report thì khi gọi report không thực hiện được, phải thực hiện refresh report và gõ vào tên server và CSDL. Xin hỏi có cách nào khắc phục tình trạng trên từ câu lệnh VB mà không cần thực hiện thủ công trên Crystal Report không?
     6. Crystal Report được bảo mật như thế nào?

    Trả lời :
    Trước hết bạn nên phân biệt các thuật ngữ Access, VB, SQL Server, Crystal Report. Ta có thể nói Microsoft Access và SQL Server là 2 hệ quản trị CSDL quan hệ của Microsoft. Tùy ngữ cảnh mà VB là môi trường lập trình trực quan hay là ngôn ngữ lập trình, còn Crystal Report là 1 tiện ích cho phép ta thiết kế trực quan report chứa dữ liệu từ các database. Bạn có thể dùng Access, SQL Server, Oracle, MySQL, FoxPro,... để tạo/lưu trữ database của mình. Bạn có thể dùng ngôn ngữ VB hay ngôn ngữ lập trình khác để viết ứng dụng truy xuất database theo nhu cầu riêng. Một tác vụ thường gặp trong việc truy xuất database là xây dựng các báo biểu (report), bạn có thể dùng Crystal Report để thiết kế báo biểu trực quan và dễ dàng. Microsoft cũng có cung cấp 1 tiện ích tương ứng, đó là "Data Report".

     1. Để code của ứng dụng độc lập với công nghệ database cụ thể, ta thường dùng giao tiếp ODBC và ngôn ngữ truy vấn SQL để truy xuất database. Tuy nhiên không có 1 lệnh ODBC hay SQL đơn lẻ nào có thể copy toàn thể database có sẵn thành 1 database mới. Thực tế ta nên tránh việc copy vật lý toàn thể database (hay 1 Table nào đó) vì như vậy sẽ dễ làm mất tính nhất quán dữ liệu nếu có sự hiệu chỉnh dữ liệu gốc sau đó. Thường thì ta chỉ nên tạo View hay "linked table" để dùng chung Table gốc từ nhiều database khác nhau. Tuy nhiên nếu cần thiết, bạn có thể viết đoạn code ngắn để copy vật lý từng Table từ database này sang database khác. Sau khi việc copy vật lý dữ liệu hoàn tất thì việc hiệu chỉnh dữ liệu trên bản gốc hay trên bản copy là không ảnh hưởng gì lẫn nhau nữa. Bạn có thể xem đoạn code VB copy Table FoxPro sang Table Access trong phần trả lời câu hỏi dưới đây.

     2. Access cho phép bạn tạo các "linked table" đến bất kỳ Table của hệ quản trị CSDL nào. Một "linked table" không tồn tại vật lý riêng rẽ, nó chỉ là một tham khảo đến Table vật lý có sẵn hầu cho phép ta dùng chung Table gốc trên nhiều database Access khác nhau. Không phải hệ quản trị CSDL nào cũng cho phép tạo "linked table" như Access, thí dụ SQL Server dường như không cho phép tạo "linked table", nó chỉ cho phép tạo các View với tính chất gần giống với "linked table".

     3. Access chỉ là hệ quản trị CSDL nhỏ, phục vụ cho nhu cầu truy xuất tuần tự cho cá nhân trên máy cục bộ, còn SQL Server là hệ quản trị CSDL lớn và cho phép nhiều client truy xuất đồng thời qua mạng (giống Oracle), do đó cơ chế phân quyền truy xuất database của SQL Server cũng chính quy và tin cậy hơn Access. SQL Server có 2 phương pháp kiểm soát việc truy xuất database của người dùng: "SQL Server Authentication" và "Windows Authentication". Trong 2 phương pháp này thì "Windows Authentication" có độ bảo mật tốt hơn vì SQL Server nhờ HĐH Windows xác nhận và kiểm soát người dùng dùm. Tùy thuộc vào phương pháp nào được dùng, thông tin người dùng sẽ được lưu trữ trên các file khác nhau và với định dạng khác nhau, tuy nhiên cả hai đều có điểm chung là chúng được lưu trữ trên máy server nên người dùng khó lòng truy xuất trực tiếp được.

     4. Bạn có thể gọi method DoCmd.TransferDatabase của VB để copy vật lý, để import hay export từng Table của Access tới/từ Table khác của hệ quản trị CSDL bất kỳ khác. Tuy nhiên method này không bảo tồn được các chuỗi văn bản tiếng Việt thuộc các bộ mã tiếng Việt (trừ mã Unicode) và không tổng quát, do đó để tránh phiền hà và để đoạn code copy/import/export Table có thể chạy trên mọi hệ quản trị CSDL khác nhau, bạn nên dùng giao tiếp ODBC và ngôn ngữ truy vấn SQL để viết đoạn code tường minh thực hiện việc copy/import/export table. Bạn có thể xem đoạn code VB copy Table FoxPro sang Table Access trong phần trả lời câu hỏi dưới đây.

     5. Để code của ứng dụng truy xuất database không phục thuộc vào công nghệ quản lý database và vị trí cụ thể chứa file database, người ta đã đưa ra cơ chế DSN (Data Source Name). DSN là tên luận lý để nhận dạng database, tên luận lý này không hề chứa thông tin về hệ quản trị CSDL và vị trí file chứa database nên code của ứng dụng dùng tên DSN sẽ không phụ thuộc hệ quản trị CSDL và vị trí vật lý của file database. DSN thường được quản lý ở cấp HĐH, thí dụ trên Windows, bạn có thể vào Control Panel, chạy icon "ODBC Data Source Name" để định nghĩa từng tên DSN cho từng database mà bạn dự định truy xuất thông qua các ứng dụng sắp viết. Với cách thức này, mỗi khi database bị dời chỗ (ngay cả qua máy khác trong mạng) hay bị thay đổi công nghệ (thí dụ từ FoxPro chuyển sang SQL Server), người quản trị chỉ cần hiệu chỉnh thuộc tính của DSN tương ứng, còn đoạn code truy xuất database trong ứng dụng không cần thay đổi gì cả.

     6. Như đã nói trên, Crystal Report chỉ là tiện ích xây dựng báo biểu trực quan nên không liên quan gì đến cơ chế bảo mật dữ liệu. Thật vậy, chỉ có hệ quản trị CSDL mới dùng cơ chế bảo mật dữ liệu để kiểm soát việc truy xuất của người dùng vào các database do nó quản lý.
     
    Chuyên mục: Cơ sở dữ liệu