markdown:
# 7 mẹo nhỏ cho những cuộc đối thoại khó khăn
Chia sẻ: Ho Ivy | Ngày: | Loại File: PDF | Số trang:4
52
lượt xem 11
download
lượt xem 11
download
![](http://image.tlvnimg.com/document/thumbnail/2010/20101005/ivy1605/80x100/7_meo_nho_cho_nhung_cuoc_doi_thoai_kho_khan_7115.jpg)
##
7 mẹo nhỏ cho những cuộc đối thoại khó khăn
Mô tả tài liệu
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](http://static.tlvnimg.com/b2013az/templates/version1/default/images/down16x21.png)
Tôi đã phải nói với một trong những nhà cung cấp lâu năm rằng chúng tôi đang cắt giảm 50% số đơn đặt hàng. Chúng tôi là khách hàng lớn nhất của họ - và tôi biết đó sẽ là một thảm họa đối với họ.
Chủ đề:
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
CÓ THỂ BẠN MUỐN DOWNLOAD

Set-Cookie: TLDEVNamespace=43onkd0i193idh45ja731khv27; path=/; domain=.tailieu.vn; HttpOnly

Server: Apache/2.2.31 (CentOS)


markdown:
# Gia công điện
Chia sẻ: Nguyễn Sang | Ngày: | Loại File: DOC | Số trang:66
lượt xem 219
download
![](http://image.tlvnimg.com/document/thumbnail/2010/20100324/thanhsangms22/80x100/1971337940433.jpg)
##
Gia công điện
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](http://static.tlvnimg.com/b2013az/templates/version1/default/images/down16x21.png)
Phương pháp gia công điện hoá (Electric Chemical Machining - ECM) dựa trên cơ sở định luật điện phân của Faraday. Quá trình gia công điện hóa là một quá trình hòa tan anod điện hóa, trong đó một dòng điện một chiều có cường độ cao và điện áp thấp chạy qua giữa chi tiết (được nối với cực dương) và dụng cụ điện cực (nối với cực âm của nguồn). Hai điện cực đều được đặt trong bể dung dịch điện phân. Tại bề mặt anod, kim loại được hòa tan vào các ion kim loại và chi...
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Gia công điện
- Gia công điện
- CHƯƠNG 4 GIA CÔNG ĐIỆN 4.1. GIA CÔNG ĐIỆN HÓA 4.1.1 Mô tả chung về nguyên lý gia công. a. Nguyên lý gia công. Phương pháp gia công điện hoá (Electric Chemical Machining - ECM) dựa trên cơ sở định luật điện phân của Faraday. Quá trình gia công điện hóa là một quá trình hòa tan anod điện hóa, trong đó một dòng điện một chiều có cường độ cao và điện áp thấp chạy qua giữa chi ti ết (được nối với cực dương) và dụng cụ điện cực (nối với cực âm của nguồn). Hai điện cực đều được đặt trong bể dung dịch điện phân. Tại bề mặt anod, kim loại được hòa tan vào các ion kim loại và chi tiết sẽ được sao chép hình dạng c ủa dụng cụ điện cực. Chất điện phân luôn luôn chảy qua khe hở điện cực với vận tốc cao (thường lớn hơn 5m/s) Khi đóng mạch điện và các điều kiện điện phân được chọn hợp lý, dòng điện đi qua bể có tác dụng làm hòa tan kim loại ở anod với một lượng được xác định theo định luật Faraday. Trong khi gia công, thông thường điện cực được cho tiến về phía chi tiết (anod) nhưng luôn đảm bảo tồn tại một khe hở nhỏ. Quá trình điện phân kéo theo sự hòa tan anod và thoát khí hydro ở catod. Lượng chất kết tủa hoặc hòa tan do điện phân tỷ lệ với lượng điện chạy qua. Lượng các vật chất kết tủa hoặc hòa tan bằng lượng điện tương đương, tỷ lệ với thành phần hóa trị của chúng (với hợp kim có nhiều nguyên tố khác nhau). Biểu thức của định luật 1: m = F / Kit (4.1) Trong đó: m: lượng kim loại hòa tan (g). I: cường độ dòng điện (ampe). t: thời gian (giờ). F: hằng số Faraday lượng điện cần thiết để hòa tan 1 đương lượng gam của kim loại, F = 96496 colomb. K: đương lượng điện hoá tức khối lượng của chất (tính bằng mg) được giải phóng khi có một điện lượng 1 coulomb đi qua dung dịch điện phân. Định luật Faraday 2 Các đương lượng điện hoá tỷ lệ với đương lượng gam của các chất được giải phóng trong quá trình điện phân. Đương lượng gam bằng tỷ số giữa trọng lượng nguyên tử A và hóa trị n. Vậy: K = (1 / F). (A/n) (4.2)
- Đơn vị: K = g/A. s; g/a. ph = mm3/A.s; mm/A.s. Công thức của định luật hợp nhất : m = (1 / F). (A/n) . It = KIt (4.3) Trong thực tế, khi gia công kim loại không tinh khiết hoặc hợp kim của chúng gồm nhiều nguyên tố khác nhau (ví dụ thép hợp kim) thì đương lượng điện hoá của chúng được xác định một cách tương đối theo các thành phần hợp kim như sau: 100 K = (g/A.s) theùp P P2 Pn (4.4) 1 K 1 + K 2 + ... K n Trong đó: P1, P2, Pn là thành phần hợp kim trong kim loại, tính theo phần trăm trọng lượng. K1, K2, Kn là đương lượng điện hoá của mỗi thành phần hợp kim trong kim loại. Theo định luật Faraday phương pháp gia công điện hoá được thực hiện như sau: Nếu dùng catod làm khuôn có hình dáng gần giống với hình dáng của chi tiết cần gia công thì ở bề mặt gần nhất với catod sự hòa tan anod diễn ra mạnh nhất. Lý do là điện trở suất của dung dịch điện phân lớn hơn của kim loại. Như vậy dòng điện tập trung vào khoảng cách điện cực nhỏ nhất tức là ở đây có dòng điện lớn nhất, bằng cách đó cực catod dần dần ăn vào anod. Bơm sẽ bơm chất điện phân (xuyên qua khe hở gia công) ở vận tốc cao (5– 50m/s) đẩy kim loại hòa tan, khí và hơi nóng ra khỏi khe hở gia công. Gia công điện hóa là một phương pháp gia công mới và có một số ưu điểm mà các phương pháp gia công truyền thống không thể có. Độ chính xác gia công và tốc độ hớt kim loại cao với mật độ dòng rất lớn từ 10 – 100 A/cm2 nhưng điện áp khá thấp (8 – 30V). Phải luôn đảm bảo một khe hở nhỏ trong suốt quá trình gia công (khoảng 0,1 mm), bằng cách cho điện cực dụng cụ tiến về phía bề mặt anod với vận tốc khoảng 0,1 – 20 mm/ph. Giá trị dòng điện sử dụng trong gia công điện hóa phụ thuộc vào các thông số và kích thước của bề mặt chi tiết cần gia công. Trên hình 4.1 là sơ đồ nguyên lý của phương pháp gia công điện hóa. Chạy dao đều P vào vàovào Bảo vệ ngắn mạch vào Trao đổi nhiệt Bàn máy Cách điện P ra Lọc vàovào vào Bơm Van Nguồn 1 chiều từ 2-30V chặn Chất điện Chi tiết phân Cặn
- Hình 4.1. Sơ đồ nguyên lý của phương pháp gia công điện hóa. Hình 4.2. Mô tả quá trình cắt trong gia công điện hóa. Các oxit trên mặt anod có tác dụng hạn chế quá trình gia công, hiện tượng này xảy ra đối với hầu hết kim loại dùng trong công nghiệp, nó phụ thuộc vào mật độ dòng điện, nhiệt độ và thành phần chất điện phân. Quá trình hạn chế này có thể dùng tốc độ dòng chảy lớn của dung dịch điện phân để ngăn cản. Tốc độ đẩy tới của điện cực phải thích hợp với lượng vật liệu lấy đi. Vật liệu được lấy đi trong quá trình gia công được xác định theo định luật Faraday: 60AI 3 /phút) VD = (cm (4.5) 96500.γn Trong đó: VD: năng suất lấy nguyên liệu. A: khối lượng nguyên tử. n : hóa trị của anod. I: cường độ dòng điện. γ : tỷ trọng (g/cm3). Lưu ý: đối thép hợp kim thì chỉ tính gần đúng. Những đặc trưng gia công của quá trình gia công điện hóa: - Tốc độ gia công không phụ thuộc vào cơ tính của vật liệu gia công mà chỉ phụ thuộc vào bản chất vật liệu gia công. - Độ chính xác gia công phụ thuộc vào hình dạng và kích thước của - Độ nhám bề mặt tốt (với kim loại thông thường), Ra = 0,1 – 2,5mm. - Mức tiêu thụ điện áp tương đối cao (khoảng 200 – 600 J/mm 3) và phụ thuộc vào tính điện hóa của vật liệu gia công. b. Quá trình ECM lý tưởng. Mô hình gia công điện hóa đơn giản nhất, thường gọi là quá trình ECM lý tưởng, có các đặc điểm sau: - Định luật Ohm được áp dụng trong toàn bộ khe hở trên bề mặt của điện cực.
- - Tính dẫn điện của môi trường trong khe hở điện cực là hằng số cả về thời gian lẫn không gian. - Tại mỗi điện cực, điện thế luôn cố định trên toàn bộ chu vi bề mặt và trong suốt thời gian gia công. - Mật độ dòng điện cho việc hòa tan anod luôn bằng nhau tại mọi điểm trên bề mặt chi tiết gia công. c. Quá trình ECM không lý tưởng. Tuy nhiên, trong thực tế quá trình gia công điện hóa không bao giờ lý tưởng. Do tốc độ hớt kim loại phân tán trên bề mặt chi tiết có hình dạng khác nhau thì khác nhau (dòng điện của phương pháp gia điện hóa trong thực tế thì tỉ lệ nghịch với kích thước lỗ trống) và những bề mặt có hình dạng khác nhau này là do việc thiết mẫu đúc. Hydro thoát ra từ điện cực dụng cụ tạo thành một lớp có hai pha (gồm bọt khí hydro và chất điện phân), khi đạt tới một điều kiện nhất định lớp này có thể lấp đầy toàn bộ lỗ trống gia công. Khi gia công điện hóa những chi tiết lớn, kéo theo sự mở rộng của khe hở điện cực, do vậy, bọt khí phát sinh tại dụng cụ điện có thể lan ra khỏi bề mặt gia công và chúng hòa trộn với dung dịch điện phân. Nếu quá trình này kéo dài, có th ể làm giảm bền dung dịch điện phân trong khe hở gia công, phát sinh va đập và cuối cùng quá trình gia công sẽ bị ngừng lại. Dòng điện đi qua dung dịch điện phân làm phát sinh nhiệt lượng. Môi tr ường gần catod sẽ mất dần tính dẫn điện do nhiệt tăng lên. 4.1.2. Dụng cụ và dung dịch điện phân. a. Điện cực dụng cụ (anod). Vật liệu chế tạo dung cụ - Điện cực chế tạo dụng cụ phải có tính dẫn điện cao, độ bền chống rỉ tốt. Ví dụ: đồng thau, thép không rỉ, thép chịu nhiệt, hợp kim titan, grafit… - Thép không rỉ dùng làm dụng cụ để gia công cách tuốc bin thủy điện, máy nén khí, các khuôn dậy. - Hợp kim dùng làm các ống vỏ mỏng dể làm dụng cụ mở lỗ sâu. - Grafit dùng để làm dụng cụ dạng đĩa quay tròn trong sản suất đơn chiết hay loạt nhỏ. Phương pháp tạo hình các điện cực dụng cụ. Để tạo biên dạng các dụng cụ ta dùng các phương pháp sau đây: - Gia công cắt gọt. - Đúc chính xác. - Dập. - Mạ chất dẻo, phun kim loại…
- Đối với dụng cụ định hình biên dạng của chúng có khác với biên dạng của chi tiết gia công, do đó để tăng độ chính xác của dụng cụ phải thiết kế biên dạng theo phương pháp đồ thị và phương pháp giải tích (thiết kế dao tiện định hình). Việc chọn các thông số hình học và sự phân bố các khe, các lổ trên bề mặt làm việc của dụng cụ cần phải xác định bằng kinh nghiệm sao cho dòng chảy của dung dịch điện phân vào vùng gia công thuận lợi, không bị rẽ dòng. Một số điện cực thường dùng: Hình 4.3. Một số điện cực thường dùng. Phủ chất cách điện tại những bề mặt không làm việc của dụng cụ. Mục đích của việc làm này là nhằm bảo đảm cho quá trình hòa tan anod tại các điểm cần thiết được tốt, bảo đảm cơ tính cao, cách điện tốt, chịu nhiệt và ch ịu ẩm vì chiều dày lớp phủ rất mỏng (0,02 - 5mm). Độ nhấp nhô bề mặt làm việc của dụng cụ có Ra < 1,6µm. Trên bảng 4.1 là một số thông số của các vật liệu dùng làm điện cực. Bảng 4.1. Một số thông số của vật liệu dùng làm điện cực. Vật liệu Chất cách điện Chiều dày lớp Ứng dụng dụng cụ phủ (mm) Đồng thau Men silicat 0,15 ÷ 0,2 Gia công các lỗ mặt định Thép không rỉ hình Polypropylen 0,3 ÷ 0,35 Tẩy bavia, gia công các Keo epôxy 0,1 ÷ 0,3 mặt định hình, các lỗ có Notacryl 0,2 ÷ 0,5 đường kính lớn Nhựa polyurêtan 0,1 ÷ 0,2 Tẩy bavia, gia công các Caprolon 0,1 ÷ 0,2 bề mặt có kích thước lớn Cao su tectolit 0,5 ÷ 5 Ebonit 0,5 ÷ 5 Thép không rỉ, Men sứ 0,03 ÷ 0,08 Mở rộng các lỗ, rãnh hẹp, hợp kim titan, lỗ định hình và lỗ sâu Keo epôxy 0,1 ÷ 0,4 Mở rộng lỗ sâu
- hợp kim chịu Nhũ tương 0,02 ÷ 0,05 Mở rộng lỗ đường kính nhiệt Teflon 0,08 ÷ 0,2 nhỏ Polyclovinyl 0,08 ÷ 0,2 b. Dung dịch điện phân. Tác dụng của dung dịch điện phân. Vai trò quan trọng của dung dịch điện phân là tạo sự di chuyển các ion giữa anod và catod. Ngoài ra các ion của dung dịch điện phân còn tham gia tích cực vào các phản ứng điện cực. Dung dịch điện phân sử dụng để hòa tan kim loại của chi tiết (anod) do đó thành phần của nó phải chọn đúng để tránh khả năng tạo các chất không hòa tan, gây ra sự trơ hóa bề mặt của chi tiết. Vì vậy sự tồn tại của các ion hoặc nhóm ion trong dung dịch điện phân phụ thuộc vào các tính chất của nó. Phản ứng điện cực xảy ra ở catod vì vậy cần phải nghiên cứu sự phóng các ion đã nạp điện, chúng không được kiềm chế quá trình hòa tan anod. Trên catod không có sự kết tủa các ion kim loại có trong dung dịch điện phân vì nó làm thay đổi hình dáng của catod và gây ra sai số hình dáng chi tiết. Do đó các cation của dung dịch điện phân không được là kim loại vì chúng tạo điều kiện cho sự kết tủa trên dụng cụ (có vật liệu là thép hoặc đồng…). Thông thường các cation là hydro, kiềm như natri, kali, … Tính chất của dung dịch điện phân. - Khi gia công điện hóa mật độ dòng điện phải ổn định để tránh sự thất thoát về năng lượng. Các dung dịch điện phân phải có tính dẫn điện, dẫn nhiệt cao đồng thời nhiệt độ sôi của chúng phải cao để tránh bị sôi khi gia công. - Tính dẫn điện, dẫn nhiệt của dung dịch điện phân đều rất thấp so với kim loại do điện trở của dung dịch điện phân cao, vì vậy mật độ dòng phải cao. - Dung dịch điện phân sẽ bị đốt nóng dẫn đến sự phân cực các điện cực nên càng đốt nóng thêm dung dịch điện phân. - Độ nhớt của dung dịch điện phân thấp sẽ làm cho sự di chuyển của các ion cao hơn do đó nâng cao tính dẫn điện của dung dịch điện phân. Bảng 4.2. Các tính chất của dung dịch điện phân thường dùng. Dung Độ Tỷ Độ dẫn Nhiệt Tính dẫn Độ Độ Độ hòa dịch đậm trọng điện dung nhiệt nhớt nhớt tan điện đặc (g/cm3) (104.Ω - (cal/grad (Kcal/m. động động hydro phân theo 1 .cm-1) ) g.grad) học học theo trọng (cts) (.s/m2) thể tích lượng (g) Clorua 5 1,034 372 0,945 1,05 0,085 1,5 -natri 10 5 1211 0,901 0,507 1,11 0,190 1,2 NaCl 15 1,070 1642 0,865 1,17 0,30 1,1 20 7 1957 0,497 1,34 0,535 0,9 1,108 7 1,147
- Natri 10 0,067 782 0,195 0,508 1,02 1,09 1,4 cacbonat 20 4 1303 0,885 0,499 1,10 1,26 1,2 NaCo3 0,142 6 NaSO4 15 0,140 886 0,940 0,516 1,54 1,76 1,0 6 HCl 2 1,01 1720 0,965 0,500 1,7 5 1,025 3948 0,920 0,470 1,05 1,08 1,6 H2SO4 2 1,015 1089 0,985 0,505 5 1,035 2085 0,951 0,490 0,98 1,01 NaOH 5 1,055 1935 0,937 0,527 1,27 1,34 1,2 10 1,110 3093 0,907 0,539. 1,68 1,86 0,9 Một số dung dịch điện phân thường dùng cho thép và hợp kim cứng. Do thành phần của thép và hợp kim cứng có nhiều yếu tố khác nhau do đó không thể có dung dịch điện phân chung cho tất cả các loại vật liệu, vì vậy đối với mỗi loại vật liệu ta cần phải tính toán và chọn lựa loại dung dịch điện phân thích hợp. Trong thực tế đối với mỗi nhóm vật liệu (ví dụ: thép trên cơ sở Fe, Ni…) ta có thể dùng một loại dung dịch điện phân. Thép trên cơ sở Fe: trong quá trình gia công thép trên cơ sở Fe bằng phương pháp điện hóa ở anod thoát ra rất nhiều ôxy, do vậy khi có điện thế thấp sẽ thấy xuất hiện các oxit và quá trình hòa tan anod bị chậm lại. Để tránh sự trơ hóa các anod, hiệu quả nhất người ta dùng các clorua làm dung dịch điện phân. Ví dụ: clorua natri để tạo FeCl 2 (đối với Fe2+) và FeCl3 (đối vớ Fe3+). Vì vậy clorua natri là thành phần cơ bản dùng để gia công thép nhóm Fe và Ni, ngoài ra có thể dùng clorua kali nó làm tăng tính dẫn điện của dung dịch điện phân nhưng rất đắt. Qua thí nghiệm với thép có 0,2% C cho thấy rằng nếu ta thêm 3 ÷ 10% NaClvà 6% H2SO4 vào dung dịch điện phân thì tốc độ hớt kim loại sẽ tăng (FeSO4 và Fe2SO4 tăng nhanh nhất là đối với Fe2+ nhưng độ bóng thấp < 4µm). Nếu dùng HCl 1÷ 2% trong dung dịch điện phân, tốc độ hòa tan anod tương đương với H 2SO4 nhưng độ nhấp nhô < 2µm. Hợp kim trên cơ sở Ni. Đối với loại hợp kim Cr-Ni có thể dùng dung dịch 6% H2SO4 và 3÷ 10% NaCl, độ nhấp nhô đạt 3,5µm trong khi đó đối với thép C là 4µm. Kết quả tương tự khi dùng HCl. Nếu dùng dung dịch điện Nitrit kali 15% NaCl 6÷ 10%, clorua amôn (NH4Cl) 3÷ 10% độ nhấp nhô có thể đạt thấp nhất 2µm. Nếu dùng 4% NaCl + 6% NaSO4 độ nhấp nhô sẽ cao. Nếu dùng Nitrat natri (NaNO3) pha với NaCl đúng tỉ lệ thích hợp thì bề mặt gia công sẽ bằng phẳng, tại các mép không bị lồi lõm. Hợp kim Titan.
- Các chi tiết khi gia công điện hóa trên bề mặt hình thành một lớp màng oxit mỏng, nó cản trở việc hòa tan anod. Để phá hủy lớp rỉ này có thể dùng dung d ịch điện phân clorua ở điện áp U = 12V hoặc bằng dung dịch brômua và iốt với điện thế thấp. Để gia công titan cần có điện áp tương đối cao U = 40V nhưng với điện th ế này sẽ xảy ra sự phóng tia lửa điện do đó bề mặt nhấp nhô cao. Dung dịch điện phân có NaCl và HCl, điện áp thấp, độ nhám tốt hơn nhưng xuất hiện điểm rỉ. Hợp kim Vonfram (dùng để chế tạo khuôn dập và dụng cụ cắt): Dung dịch điện phân kiềm mạnh sẽ hòa tan WC, thường là sút NaOH hoặc cacbonat natri NaCO3, coban sẽ bị hòa tan trong dung dịch điện phân gốc amin như trietanolamin hoặc ete của axit tactrit COOH-CHOH-COOH tạo thành CoCl 2 (CoCl2, H2O) clorua coban để đạt độ nhấp nhô Ra = 0,25µm. Nên dùng dung dịch điện phân: 197 g/l trietanolamin. 50 g/l NaOH. 100 g/l NaCl. Tạo ra WCl2, WCl3 (clorua vonfram). Molypđen: Ở dạng cation, molypđen không tạo thành mối bền vững nhưnh oxit molypđen hòa tan trong kiềm tạo thành các molypđat. Để gia công molypđen thường dùng dung dịch điện phân như: 150g/l NaOH. Thời gian sử dụng dung dịch điện phân Trong quá trình gia công điện hóa dung dịch điện phân dần dần sẽ bị thay đổi thành phần, khí H2 bốc hơi làm cho tính dẫn điện kém đi, độ pH tăng tức tính kiềm tăng. Mặt khác do sự hình thành kết tủa làm tăng độ nhớt và giảm sự hòa tan anod, tất cả các thay đổi này sẽ rút ngắn thời gian sử dụng dung dịch điện phân. Vì vậy nên sử dụng phân theo định kỳ và có các biện pháp xử lý dung dịch điện để tiếp tục sử dụng. Các phương pháp xử lý khôi phục dung dịch điện phân. - Làm sạch bằng cách lọc các chất kết tủa, các chất không hòa tan vì chúng cản trở quá trình gia công. - Dùng phương pháp ly tâm để loại các chất không hòa tan.
- Hình 4.4. Các m gia công ECM thường được sử dụng. áy 4.1.3. Các thông giới. khả năng công nghệ. trên thế số và a. Năng suất gia công. Năng suất gia công được tính bằng lượng nguyên liệu được lấy đi trong một đơn vị thời gian (VD, cm3/phút), tỉ lệ thuận với cường độ dòng điện, như đã xác định bằng định luật Faraday. Tốc độ tiến e của điện cực cũng được coi là năng suất (cm/phút). e = K.I/F = K.s (cm/phút). (4.6) Trong đó: F: diện tích bề mặt của catod (cm2). S: mật độ dòng điện (A/cm2). Các yếu tố ảnh hưởng đến năng suất bao gồm: Tốc độ tiến của dụng cụ Dựa trên định luật Faraday có thể viết: A.60 3 (cm /phút.A) (4.7) K= n.γ .96500 Với: thép K= 2 - 2,2 mm2/phút.A Hình 4.5 cho thấy quan hệ giữa tốc độ tiến dụng cụ và mật độ dòng điện. e (cm/ph) 2,0 1,5 1,0 0,5 0 s (A/cm3) 100 200 300 400 500 Hình 4.5. Quan hệ giữa tốc độ tiến của dụng cụ và mật độ dòng điện. Đồ thị trên hình 4.5 có thể áp dụng trong gia công thép và thép hợp kim. Điện áp Định luật Ohm cũng áp dụng với dung dịch điện phân. X .F U (4.8) I= U = ( A) δ R
- X: điện dẫn xuất, tức là khả năng dẫn điện của một khối dung dịch mỗi cạnh bằng 1cm (1/Ω.cm). F: bề mặt làm việc của điện cực (cm2). δ: khoảng cách điện cực (cm). Thế vào (4.6) có: E = K.X/δ.U (cm/ph) (4.9) Vậy năng suất tỉ lệ thuận với điện áp, nếu khoảng cách điện cực không đổi. Khi gia công lỗ rỗng có tiết diện khác nhau, điện áp và khoảng cách điện cực đã được điều chỉnh trước, nếu mật độ dòng điện không đổi thì cường độ dòng điện tất nhiên phải thay đổi. Khả năng dẫn điện của dung dịch điện phân. Dòng điện đi qua dung dịch điện phân sẽ sinh nhiệt và làm tăng nhiệt đ ộ c ủa chất điện phân, do đó khả năng dẫn điện tăng, năng suất cũng tăng theo (hình 4.6). X (1/Ω.cm) Nồng độ 0,7 25% 0,6 20% 0,5 0,4 15% 0,3 10% 0,2 5% 0,1 t (oC) 0 20 40 60 80 100 Hình 4.6. Quan hệ giữa khả năng dẫn điện của dung dịch (X) và nhiệt độ (t). Khả năng dẫn điện của dung dịch điện phân (X) biến đổi theo nhiệt độ với nồng độ muối NaCl khác nhau. Cần phải hạn chế sự phát nhiệt này bằng cách làm mát dung dịch điện phân và cho dung dịch lưu thông nhanh hơn. Cáng tăng tốc độ dòng chảy thì càng tăng mật độ dòng điện, nhưng hydro được tách ra từ dung dịch, đẩ dung dịch ra khỏi khe hở điện cực, do đó mật độ dòng điện chỉ có thể tăng lên đến một giá trị nào đó phụ thuộc vào điện áp (hình 4.7).
- s (A/cm3) 100 11,16 V 80 9,94 V 60 9,6 V 40 20 q (l/ph) 0 0,25 0,5 0,75 1 1,25 1,5 Hình 4.7. Quan hệ giữa mật độ dòng điện (s) và lưu điện (q) của dung dịch (l/ph). Các yếu tố khác. Ap suất trong dung dịch điện phân phụ thuộc vào bề mặt làm việc của điện cực, khe hở điện cực và hệ thống lưu thông dung dịch. Chất lượng của dung dịch điện phân cũng đóng vai trò quan trọng. Người ta dùng dung dịch muối có tính acid, kiềm hoặc trung tính. Dùng dung dịch trung tính thì có lợi hơn vì không cần phải bảo vệ thiết bị chống ăn mòn. Gia công lỗ nhỏ thì dùng dung dịch có tính acid, khoan lỗ lớn thì dùng dung dịch muối (NaCl). Phoi được lấy ra cũng gây nhiễu cho quá trình gia công. Do đó cần dùng bể chứa và thường xuyên làm sạch(lượng sắt tối đa trong dung dịch điện phân là 1%). Có thể lọc hoặc dùng ly tâm để gạn ra. Ở phân xưởng lớn thì cứ 8 giờ thì phải thay dung dịch điện phân. Nguyên liệu của điện cực không đóng vai trò quan trọng. Điều quan trọng là phải dẫn điện tốt và chống ăn mòn trong dung dịch acid. Thông thường dùng vật liệu bằng đồng hoặc vật liệu không rỉ. b. Độ chính xác gia công. Trong quá trình gia công, giữa chi tiết gia công và mặt đầu của điện cực tồn tại khe hở (δh). Trong trường hợp khoan lỗ cụt, thì khe hở mặt đầu ảnh hưởng đến độ chính xác và độ sâu của lỗ. Với tốc độ tiến không đổi của điện cực thì khe hở là hàm s ố của điện áp: δh = k.x/e.U (4.10) Trong thực tế quan hệ của chúng được thể hiện theo hình 4.8.
- δ h (mm) e =0,32 mm/ph 0,4 0,3 e =0,5 mm/ph 0,2 e =1 mm/ph 0,1 e =2 mm/ph 0 U (V) 5 10 15 20 Hình 4.8. Quan hệ giữa điện áp và khe hở mặt đầu ( δh) của điện cực với tốc độ tiến của điện cực (e) khác nhau (vật liệu gia công là thép C45, K = 2,2 mm3/A.ph). Có thể thấy rằng đồ thị không phải là đường thẳng do ảnh hưởng của những yếu tố khác (như dòng chảy). Có thể rút ra kết luận rằng, bằng cách nâng tốc đ ộ tiến điện cực thì có thể giảm sai số của khe hở, tức là giảm sai số gia công, thậm chí có thể nâng điện áp để làm khe hở trở nên không đổi. Dòng điện không những chỉ đi qua khe hở mặt đầu, mà còn ở khe hở giữa thành trong của lỗ và mặt bao qanh điện cực. Ở khe hở này thì tác dụng điện hóa xảy ra chậm hơn. Tốc độ hòa tan tỉ lệ nghịch với khoảng cách giữa các bề mặt của điện cực. Do đó trường hợp gia công lỗ bằng điện cực hình trụ thì đ ường sinh c ủa lổ có dạng parabol (4.9). e e: tốc độ tiến dụng δ cụ. h δ: khe hở điện cực. δh: khe hở mặt đầu δh Hình 4.9. Hình dạng của lỗ gia công bằng điện hóa. Kích thước của khe hở trên sẽ là hàm số của độ sâu lỗ như trình bày trên hình 4.10.
- δ (mm) 4 e=0,6 m/ph 3 e=1 : cách điện e=2 2 :không cách điện e=3 1 0 h (mm) 2 4 6 8 10 12 14 Hình 4.10. Quan hệ giữa khe hở điện cực và độ sâu lỗ (h) với các tốc độ tiến dụng cụ (e) khác nhau. Nguyên liệu gia công: thép C45, K= 2,2mm3/A.phút, dung dịch NaCl, X28 = 80.103 cm, U = 17 V. Từ đồ thị trên, nhận thấy rằng nếu tăng tốc độ tiến điện cực thì có thể giảm sai số hình dáng. Sai số hình dáng có thể hạn chế bằng cách tạo hình điện c ực một cách phù hợp. Nếu bọc cách điện ở chung quanh cho đến cạnh của mặt đ ầu, thì có thể ngăn chặn sự hòa tan ở mặt bên, lỗ sẽ có đường sinh song song. Hình dạng phổ biến như trên hình 4.9, trong đó đường kính ngoài của ống nhựa cách điện phải nhỏ để không cản trở sự lưu thông của dung dịch. Bán kính vê tròn chu vi ngoài của mặt đầu là 0,13 – 0,18 mm. c (-) b e a: chi tiết. a (+) d b: dung dịch điện phân. c: điện cực. d: lớp cách điện. e: hướng tiến điện cực. 5R 1,7R Hình 4.11. Hình dạng lỗ được gia công điện hóa bằng điện cực bọc cách điện mặt bao quanh. Mặt đáy của lỗ không bao giờ bằng phẳng mà có ụ nổi lên, nếu muốn làm nhẵn cần có một bước gia công riêng. Trong trường hợp gia công lỗ có tiết diện thay đổi, thì không dùng điện cực có bọc cách điện. Ở đây khoảng cách điện cực phụ thuộc rất nhiều vào các thông số hình học và các thông số khác, do đó trong thực tế không thể chuẩn bị trước một điện cực được tạo hình theo đúng kích thước và hình dáng của lỗ cần được gia công, mà phải tạo hình điện cực bằng thực nghiệm. Phương pháp này khá tốn kém, nên chỉ
- trong sản xuất hàng loạt thì mới có hiệu quả kinh tế. Điện cực không mòn, có thể dùng để gia công nhiều lần, độ chính xác của lỗ có thể bảo đảm đạt được 0,02 mm. Muốn đảm bảo độ chính xác kích thước cao, thông thường phải lọc sạch dung dịch điện phân trong quá trình gia công. c. Chất lượng bề mặt. Độ nhám bề mặt khi gia công bằng điện hóa được hình thành rất tốt, đặc biệt là thép austenit. Với thép cacbon thì bề mặt thô hơn (R max = 5 ÷ 10 µm). Bề mặt sau khi gia công có thể đánh bóng đạt Rmax
- Cả trong lý thuyết và thực nghiệm đều cho thấy rằng gia công kim loại bằng phương pháp điện hóa là sự kết hợp của các nhân tố nguy hiểm sau đây: - Hiệu ứng của khí độc và khí arosol, sản phẩm của quá trình gia công điện hóa. - Tác động hóa học bởi dung dịch điện phân. - Nguy hiểm về điện (điện giật). - Dễ phát cháy trong trường hợp ngắn mạch giữa hai dây âm, dương. - Những nhân tố cơ khí. - Mối nguy hiểm về nổ khí. - Hiệu ứng trường điện từ. Khí độc và khí arosol phát sinh trong quá trình điện hóa, khi hít vào, có thể là nguyên nhân gây tổn hại mãnh liệt đến các cơ quan nội tạng. Ngoài ra chúng còn làm nhiễm độc và gây ra sự cáu gắt cho công nhân. Để tránh những điều này, cần tuân thủ theo các biện pháp sau: - Phải trang bị cho công nhân các thiết bị bảo hộ để không gặp những trường hợp có hại đến sức khỏe. Đặc biệt, máy gia công điện hóa phải được đặt trong phòng riêng và cô lập, có thiết bị phân tích khí hydro được đặt ở nơi thuận lợi nhất để kịp thời báo hiệu khi sự tập trung hydro lên quá cao, dẫn đến việc nổ khí. - Thường xuyên kiểm tra thiết bị phân tích khí, hệ thống thông hơi, hệ thống dẫn khí và các khóa liên hợp. - Khí độc phải được rút ra ngay từ nơi phát sinh. Khoảng 98% không khí sẽ luân chuyển nhờ hệ thống thông hơi, được hỗ trợ thêm từ các quạt gió. - Lắp đặt thiết bị bảo vệ quá tải. Thiết bị này sẽ tự động ngắt dòng điện gia công trong trường hợp xảy ra sự quá tải. - Trang bị cho công nhân thiết bị bảo hộ để chống lại hiệu ứng trường điện từ. - Chuẩn bị dung dịch điện phân trong một phòng riêng có lắp đặt hệ thống thông hơi. Ngoài ra, gia công điện hóa còn phát sinh ra một lượng lớn chất thải. Qua quá trình nghiên cứu người ta nhận biết được chất thải là sự pha trộn của oxit và hydroxit của vật liệu gia công được tích tụ trong khi hòa tan kim loại c. Phạm vi ứng dụng. Với các đặc điểm như vậy, gia công điện hóa được ứng dụng trong việc gia công các vật liệu cứng, khó cắt gọt. Ưng dụng rộng rãi của phương pháp này là khoan lỗ sâu (thông hoặc không thông) và khoan lỗ nhỏ (d = 0,05 – 0,3 mm) đạt Ra = 0,03 µm. Ngoài ra phương pháp này còn được ứng dụng để gia công rãnh then, then hoa, các chi tiết định hình không gian phức tạp với độ chính xác cao. Trên hình 4.10 là một số chi tiết gia công bằng phương pháp điện hóa. Tröôù c Sau
- Hình 4.4 Hình 4.12. Một số chi tiết trước và sau khi gia công điện hóa. Phổ biến nhất là dùng phương pháp này để gia công tạo hình kgông gian phức tạp bằng thép chịu nhiệt, chịu mài mòn và thép không rỉ. Ví dụ đặc trưng là gia công cánh tuabin. d c a: cánh tuabin. b: điện cực gia công. b (-) b (-) c: vỏ nhựa. d: ống dẫn dung dịch điện phân. v a (+) v Hình 4.13. Gia công cánhetuabin trên máy chuyên dùng điện hóa. Cánh tuabin rèn bằng thép chịu nhiệt, kích thước 292 x 100 mm. Hai điện cực gia công với tốc độ tiến e = 0,18 mm/phút, cùng tiến đồng thời, và việc gia công chỉ mất từ 5 ÷ 10 phút. Trên máy mài thì thao tác này phải mất gần 1 giờ. Một trường hợp đặc biệt là: điện cực gia công là một ống được uốn theo qui định và tiến theo một hướng nhất định, dùng để tạo hình mà không cần làm mòn hết cả khoảng thể tích vật liệu cần lấy đi (hình 4.12). Điện cực là một ống có xẽ rãnh (hình 4.14). e m e: điện cực bằng ống có xẻ rãnh. m: chi tiết. Hình 4.14. Lấy phoi bằng cách xoi thủng.
- Phương pháp này có thể gia công một cách chính xác những vật quay đối xứng (chi tiết quay hoặc điện cực quay), phương pháp này gọi là tiện mài bóng, r ất thích hợp để gia công van hình cầu, các rãnh vành khăn, v.v… e a (+) c (-) Hình 4.15. Điện cực ống để xoi thủng. e. tốc độ tiến điện cực. a. vật gia công. c. điện cực ống có xẽ rãnh.
- Một số sản phẩm được gia công điện hóa: 4.2. GIA CÔNG ĐIỆN CƠ HÓA. 4.2.1. Đánh bóng điện Một số sản phẩm của gia công điện hóa. Hình 4.16. hóa. a. Nguyên lý gia công. Đánh bóng điện hóa là phương pháp bổ sung cho gia công điện hóa. Nguyên lý hoạt động của phương pháp này giống như gia công điện hóa nhưng điện cực không chuyển động trong quá trình gia công. Mật độ của dòng điện thấp hơn và tốc đ ộ di chuyển của chất điện phân thấp hơn nhiều, tốc độ bóc vật liệu cũng giảm, chất lượng bề mặt cũng tốt hơn.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
THIẾT KẾ QUY TRÌNH CÔNG NGHỆ GIA CÔNG CHI TIÊT DẠNG TRỤC CỦA BÁNH XE BỊ ĐỘNG, chương 2
35 p |
1509 |
365
-
Phương pháp gia công điện hóa
32 p |
893 |
303
-
Ebook Trang bị điện - điện tử máy gia công kim loại - Nguyễn Mạnh Tiến, Vũ Quang Nhồi
204 p |
343 |
160
-
THIẾT KẾ QUY TRÌNH CÔNG NGHỆ GIA CÔNG CHI TIÊT DẠNG TRỤC CỦA BÁNH XE BỊ ĐỘNG, chương 4
5 p |
566 |
114
-
Gia công điện hóa
32 p |
233 |
114
-
THIẾT KẾ QUY TRÌNH CÔNG NGHỆ GIA CÔNG CHI TIÊT DẠNG TRỤC CỦA BÁNH XE BỊ ĐỘNG, chương 3
6 p |
359 |
112
-
Gia công tia lửa điện . CHƯƠNG 5
21 p |
170 |
98
-
Chương III: Mạch đo lường và gia công thông tin
46 p |
176 |
76
-
Giáo trình -Trang bị điện-điện tử -Máy gia công kim loại -chương 3
22 p |
194 |
65
-
Giáo trình -Trang bị điện-điện tử -Máy gia công kim loại -chương 9
22 p |
178 |
59
-
Giáo trình -Trang bị điện-điện tử -Máy gia công kim loại -chương 4&5
15 p |
123 |
58
-
Trang bị điện - Điện tử máy gia công kim loại
55 p |
146 |
48
-
Giáo trình -Trang bị điện-điện tử -Máy gia công kim loại -chương 8
85 p |
113 |
46
-
Giáo trình -Trang bị điện-điện tử -Máy gia công kim loại -chương 7
7 p |
80 |
34
-
Chương VI: Điều chỉnh máy gia công
30 p |
28 |
6
-
Ứng dụng thiết bị điện tử công suất thay thế máy phát điện một chiều trong hệ truyền động của các máy gia công cơ khí - KS. Phạm Thanh Liêm
7 p |
25 |
4
-
Chương trình Mô đun đào tạo nghề Cơ điện tử - MD 01: Gia công các chi tiết cơ khí bằng tay
21 p |
8 |
1

WARC-Type: response

Content-Type: application/http; msgtype=response

Set-Cookie: TLDEVNamespace=tsmpuru3fjqgcslrnnf8nukq11; path=/; domain=.tailieu.vn; HttpOnly

Connection: close

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Vary: Accept-Encoding

Content-Type: text/html; charset=UTF-8


markdown:
# Mẫu các sổ kế toán doanh nghiệp 2008
Chia sẻ: Vũ Thị Phương Nga | Ngày: | Loại File: XLS | Số trang:171
lượt xem 1.236
download
![](http://image.tlvnimg.com/document/thumbnail/2009/20090702/vuthiphuongnga/80x100/maucacso_ktdn_2006_1478.jpg)
##
Mẫu các sổ kế toán doanh nghiệp 2008
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](http://static.tlvnimg.com/b2013az/templates/version1/default/images/down16x21.png)
Đây là mẫu các sổ kế toán mà chúng ta có thể dùng, rất hữu ích cho cho ai làm kế toán bằng Excel đấy.
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Mẫu các sổ kế toán doanh nghiệp 2008
- CTY TNHH TM-SX HBC ĐC : 196/1/1 Cộng Hòa P12, Q TB KẾ TOÁN DOANH NGHIỆP MST : 0303849233 (CĐKT theo quyết định 15/QĐ-BTC ngày 20/03/2006 của Bộ Tài Chính)
- anktdn
- DANH MUÏC HAØNG HOAÙ DANH MUÏC NGUYEÂN VAÄ STT Maõ haøng Teân haøng hoaù ÑVT STT Maõ haøng 1 T1001 Thun 1001 Kg 1 NY70 2 T1002 Thun 1002 Kg - 3 T1003 Thun 1003 Kg - 4 T1004 Thun 1004 Kg - 5 T2001 Thun 2001 Kg - 6 TLLG Tuû laïnh LG Caùi - 7 BUPSN Baøn uûi Panasonic Caùi - 8 MGLG Maùy giaët LG Caùi 9 LCD Tivi SamSung Plasma Caùi 10 VTELEAD Vi tính ELEAD Boä 11 CHSS Mouse Sam Sung Caùi 12 MICN Maùy in Canon LP2900 Caùi - - - - - - - - - -
- UÏC NGUYEÂN VAÄT LIEÄU Teân haøng hoaù Soi Nylon 70/24
- DANH MUÏC KHAÙCH HAØNG STT Maõ KH Teân khaùch haøng Ñòa chæ Ñieän thoaïi 1 HT Coâng ty TNHH Huy Tuaán 2 CSQLHC Cô Sôû khaéc daáu phoøng CS QLHC 3 PCCS4 Phoøng Coâng chöùng soá 4 4 HKVN Haõng Haøng Khoâng Quoác Gia Vieät Nam 5 CI Coâng ty TNHH TM DV C&I 6 ZHYICH ZHEJANG YIWU CHING SMALL CO.,LTD 7 GTL Coâng ty DV -TM GTL 8 TAFOTR TAICING FOREING TRADE 9 HM DN TN TM-SX Hoàng Maõ 10 HLON CTY LD HUALON VN 11 MMQ CTY TNHH Minh Minh Quaân 12 DLTP Ñieän Löïc TP.HCM 13 CHDC Cöûa Haøng Ñieän cô 14 VHL Coâng ty TNHH Vöông Haûi Long 39/5 Löông Ñònh Cuûa, Quaän 2, TP.HCM 15 JSVN Coâng ty TNHH Jing Sen Vieät Nam KCN Nhôn Traïch - Ñoàng Nai 16 LA DNTN Laâm Anh 128 Nguyeãn Hoàng Ñaøo , Q.Taân Bình 17 NH Trung taâm Vi tính Nguyeãn Hoaøng 36 Nguyeãn Thò Minh Khai, Q.3, TP.HCM 18 ST Coâng ty TNHH Saùng Taïo 16 Toân Thaát Tuøng , Q1 19 NHCTVN Ngaân haøng Coâng Thöông Vieät Nam - - - - - - - - - - - - - - - - - - - -
- - - - - - - - -
- DANH MUÏC TAØI KHOAÛN Maõ soá thueá ST Soá hieäu Teân taøi khoaûn 1 111 Tieàn maët 2 1111 Tieàn Vieät Nam 3 1112 Ngoaïi teä 4 1113 Vaøng, kim khí quyù, ñaù quyù 0302495655 5 112 Tieàn göûi Ngaân haøng 6 1121 Tieàn Vieät Nam 0303023454 7 1122 Ngoaïi teä 8 1123 Vaøng,baïc,kim khí quyù, ñaù quyù 0302138484 9 121 Ñaàu tö chöùng khoaùn ngaén haïn 3600249019 10 1121 Coå phieáu 0303849233 11 1212 Traùi phieáu, tín phieáu, kyø phieáu 0300951119-1 12 128 Ñaàu tö ngaén haïn khaùc 13 1281 Tìen göûi coù kyø haïn 0304526895 14 1288 Ñaàu tö ngaén haïn khaùc 3600567104 15 129 Döï phoøng giaûm giaù ñaàu tö ngaén haïn 0302571156 16 131 Phaûi thu khaùch haøng 0304789526 17 133 Thueá GTGT ñöôïc khaáu tröø 0300124789 18 1331 Thueá GTGT ñöôïc khaáu tröø cuûa haøng hoaù, dòch vuï 19 1332 Thueá GTGT ñöôïc khaáu tröø cuûa TSCÑ 20 136 Phaûi thu noäi boä 21 1361 Voán kinh doanh ôû caùc ñôn vò tröïc thuoäc 22 1368 Phaûi thu noäi boä khaùc 23 138 Phaûi thu khaùch 24 1381 Taøi saûn thieáu chôø xöû lyù 25 1385 Phaûi thu veà coå phaàn hoaù 26 1388 Phaûi thu khaùc 27 139 Döï phoøng phaûi thu khoù ñoøi 28 141 Taïm öùng 29 142 Chi phí traû tröôùc ngaén haïn 30 144 Caàm coá kyù quyõ, kyù cöôïc ngaén haïn 31 151 Haøng mua ñang ñi ñöôøng 32 152 Nguyeân lieäu, vaät lieäu 33 153 Coâng cuï, duïng cuï 34 154 Chi phí saûn xuaát, kinh donh dôû dang 35 155 Thaønh phaåm 36 156 Haøng hoaù 37 1561 Gía mua haøng hoaù 38 1562 Chi phí thu mua haøng hoaù 39 1567 Haøng hoaù baát ñoäng saûn
- 40 157 Haøng göûi ñi baùn 41 158 Haøng hoaù kho baûo thueá 42 159 Döï phoøng giaûm giaù haøng toàn kho 43 161 Chi söï nghieäp 44 1611 Chi söï nghieäp naêm tröôùc 45 1612 Chi söï nghieäp naêm nay 46 211 Taøi saûn coá ñònh höõu hình 47 2111 Nhaø cöûa, vaät kieán truùc 48 2112 Maùy moùc, thieát bò 49 2113 Phöông tieän vaän taûi, truyeàn daãn 50 2114 Thieát bò, duïng cuï quaûn lyù 51 2115 Caây laâu naêm., suùc vaät laøm vieäc vaø cho saûn phaåm 52 2118 TSCÑ khaùc 53 212 Taøi saûn coá ñònh thueâ taøi chính 54 213 TSCÑ voâ hình 55 2131 Quyeàn söû duïng ñaát 56 2132 Quyeàn phaùt haønh 57 2133 Baûn quyeàn, baèng saùng cheá 58 2134 Nhaõn hieäu haøng hoaù 59 2135 Phaàn meàm maùy vi tính 60 2136 Giaáy pheùp vaø giaùy pheùp nhöôïng quyeàn 61 2138 TSCÑ voâ hình khaùc 62 214 Hao moøn taøi saûn coá ñònh 63 2141 Hao moøn TSCÑ höõu hình 64 2142 Hao moøn TSCÑ thueá taøi chính 65 2143 Hao moøn TSCÑ voâ hình 66 2147 Hao moøn baát ñoäng saûn ñaàu tö 67 217 Baát ñoäng saûn ñaàu tö 68 221 Ñaàu tö vaøo coâng ty con 69 222 Voá goùp lieân doanh 70 223 Ñaàu tö vaøo coâng ty lieân keát 71 228 Ñaàu tö daøi haïn khaùc 72 2281 Coå phieáu 73 2282 Traùi phieáu 74 2288 Ñaàu tö daøi haïn khaùc 75 229 Döï phoøng giaûm giaù ñaàu tö daøi haïn 76 241 Xaây döïng cô baûn dôû dang 77 2411 Mua saém TSCÑ 78 2412 Xaây döïng cô baûn 79 2413 Söõa chöõa lôùn TSCÑ 80 242 Chi phí traû tröôùc daøi haïn 81 243 Taøi saûn thueá thu nheäp hoaõn laïi
- 82 244 Kyù quyõ, kyù cöôïc daøi haïn 83 311 Vay ngaén haïn 84 315 Nôï daøi haïn ñeán haïn traû 85 331 Phaûi traû cho ngöôøi baùn 86 333 Thueá vaø caùc khoaûn phaûi noïp nhaø nöôùc 87 3331 Thueá GTGT phaûi noäp 88 33311 Thueá GTGT ñaàu ra 89 33312 Thueá GTGT haøng nhaäp khaåu 90 3332 Thueá tieâu thuï ñaäc bieät 91 3333 Thueá xuaát, nhaäp khaåu 92 3334 Thueá thu nhaäp doanh nghieäp 93 3335 Thueá thu nhaäp caù nhaân 94 3336 Thueá taøi nguyeân 95 3337 Thueá nhaø ñaát, tieàn thueâ ñaát 96 3338 Caùc loaâi thueá khaùc 97 3339 Phí, leä phí vaø caùc khoaûn phaûi noäp khaùc 98 334 Phaûi traû ngöôøi lao ñoäng 99 3341 Phaûi traû coâng nhaân vieân 100 3348 Phaûi traû ngöôøi lao ñoäng khaùc 101 335 Chi phí phaûi traû 102 336 Phaûi traû noäi boä 103 337 Thanh toaùn theo tieán ñoä keá hoaïch hôïp ñoàng xaây döïng 104 338 Phaûi traû, phaûi noäp khaùc 105 3381 Taøi saûn thöøa chôø giaûi quyeát 106 3382 Kinh phí coâng ñoaøn 107 3383 Baûo hieåm xaõ hoäi 108 3384 Baûo hieåm y teá 109 3385 Phaûi traû veà coå phaàn hoaù 110 3386 Nhaän kyù quyõ, kyù cöôïc ngaén haïn 111 3387 Doanh thu chöa thöïc hieän 112 3388 Phaûi traû, phaûi noäp khaùc 113 341 Vay daøi haïn 114 342 Nôï daøi haïn 115 343 Traùi phieáu phaùt haønh 116 3431 Meänh giaù traùi phieáu 117 3432 Chieát khaáu traùi phieáu 118 3433 Phuï troäi traùi phieáu 119 344 Nhaän kyù quyõ , kyù cöôïc daøi haïn 120 347 Thueá thu nhaäp haõon laïi phaûi traû 121 351 Quyõ döï phoøng trôï caáp maùt vieäc laøm 122 352 Quyõ döï phoøng phaûi traû 123 411 Nguoàn voán kinh doanh
- 124 4111 Voán ñaàu tö cuûa chuû sôû höõu 125 4112 Thaëng dö coå phaàn 126 4118 Voán khaùc 127 412 Cheânh leäch ñaùnh giaù laïi taøi saûn 128 413 Cheânh leäch tyû giaù hoái ñoaùi 129 4131 Cheânh leäch tyû giaù hoái ñoaùi ñaùnhgiaù laïi cuoái naêm taøi chính 130 4132 Cheânh leäch tyû giaù hoái ñoaùi trong giai ñoaïn ñaàu tö XDCB 131 414 Quyõ ñaàu tö phaùt trieån 132 415 Quyõ döï phoøng taøi chính 133 418 Caùc quyõ khaùc thuoäc voán chuû sôû höõu 134 419 Coå phieáu quyõ 135 421 Lôïi nhuaän chöa phaân phoái 136 4211 Lôïi nhuaän chöa phaân phoái naêm tröôùc 137 4212 Lôïi nhuaän chöa phaân phoùi naêm nay 138 431 Quyõ khen thöôûng, phuùc lôïi 139 4311 Quyõ khen thöôûng 140 4312 Quyõ phuùc lôïi 141 4313 Quyõ phuùc loïi ñaõ hình thaønh TSCÑ 142 441 Nguoàn voán ñaàu tö xaây döïng cô baûn 143 461 Nguoàn kinh phí söï nghieäp 144 4611 Nguoàn kinh phí söï nghieäp naêm tröôùc 145 4612 Nguoàn kinh phí söï nghieäp naêm nay 146 466 Nguoàn kinh phí ñaõ hình thaønh TSCÑ 147 511 Doanh thu baùn haøng vaø cung caáp dòch vuï 148 5111 Doanh thu baùn haøng hoaù 149 5112 Doanh thu baùn caùc thaønh phaåm 150 5113 Doanh thu cung caáp dòch vuï 151 5114 Doanh thu trôï caáp, trôï giaù 152 5117 Doanh thu kinh doanh baát ñoäng saûn ñaàu tö 153 512 Doanh thu baùn haøng noäi boä 154 5121 Doanh thu baùn haøng hoaù 155 5122 Doanh thu baùn caùc thaønh phaåm 156 5123 Doanh thu cung caáp dich vuï 157 515 Doanh thu hoaït ñoäng taøi chính 158 521 Chieát khaáu thöông maïi 159 531 Haøng baùn bò traû laïi 160 532 Giaûm giaù haøng baùn 161 611 Mua haøng 162 6111 Mua nguuyeân lieäu, vaät lieäu 163 6112 Mua haøng hoaù 164 621 Chi phí nguyeân vaät lieäu tröïc tieáp 165 622 Chi phí nhaân coâng tröïc tieáp
- 166 623 Chi phí söû duïng maùy thi coâng 167 6231 Chi phí nhaân coâng 168 6232 Chi phí vật liệu 169 6233 Chi phí duïng cuï saûn xuaát 170 6234 Chi phí khấu hao maùy thi coâng 171 6237 Chi phí dich vu ïmua ngoaøi 172 6238 Chi phí baèng tieàn khaùc 173 627 Chi phí saûn xuaát chung 174 6271 Chi phí nhaân vieân phaân xöôûng 175 6272 Chi phí vaät lieäu 176 6273 Chi phí duïng cuï saûn xuaát 177 6274 Chi phí khaáu hao TSCÑ 178 6277 Chi phí dòch vuï mua ngoaøi 179 6278 Chi phí baèng tieàn khaùc 180 631 Gía thaønh saûn xuaát 181 632 Gía voán haøng baùn 182 635 Chi phí taøi chính 183 641 Chi phí baùn haøng 184 6411 Chi phí nhaân vieân 185 6412 Chi phí vaät lieäu bao bì 186 6413 Chi phí dung cuï ñoà duøng 187 6414 Chi phí khaáu hao TSCÑ 188 6415 Chi phí baûo haønh 189 6417 Chi phí baûo haønh 190 6418 Chi phí baèng tieàn khaùc 191 642 Chi phí quaûn lyù doanh nghieäp 192 6421 Chi phí nhan vieân quaûn lyù 193 6422 Chi phí vaät lieäu quaûn lyù 194 6423 Chi phí ñoà duøng vaên phoøng 195 6424 Chi phí khaáu hao TSCÑ 196 6425 Thueá, phí leä phí 197 6426 Chi phí döï phoøng 198 6427 Chi phí dòch vuï mua ngoaøi 199 6428 Chi phí baèng tieàn khaùc 200 711 Thu nhaäp khaùc 201 811 Chi phí khaùc 202 821 Chi phí thueá thu nhaäp doanh nghieäp 203 8211 Chi phí thueá TNDN hieän haønh 204 8212 Chi phí thueá TNDN hoaõn laïi 205 911 Xaùc ñònh keát quaû kinh doanh 206 207 001 Taøi saûn thueâ ngoaøi
- 208 002 Vaït tö haøng hoaù nhaän giöõ hoä, nhaän gia coâng 209 003 Haøng hoaù nhaän baùn hoä, nhaän kyù göûi, kyù cöôïc 210 004 Nôï khoù ñoøi ñaõ xöû lyù 211 007 Ngoaïi teä caùc loaïi 212 008 Döï toaùn chi söï nghieäp, döï aùn .
- DÖÕ LIEÄU DUØNG CHO PHIEÁU NHAÄP XUAÁT STT Phieáu Soá Ngaøy Maõ haøng Teân haøng ÑVT NHAÄP XUAÁT TRONG KYØ 1 PN001 1256 06/11/2006 T2001 Thun 2001 Kg 458.26 98,230.00 2 PN001 1256 08/11/2006 T1002 Thun 1002 Kg 104.23 108,632.00 3 PX001 5326 16/11/2006 T1002 Thun 1002 Kg 58.36 108,632.00 4 PX001 5326 17/11/2006 T1002 Thun 1002 Kg 41.74 108,632.00 5 PN002 7845 17/11/2006 VTELEAD Vi tính ELEAD Boä 5.00 10,250,000.00 6 PN002 7845 17/11/2006 CHSS Mouse Sam Sung Caùi 20.00 65,000.00 7 PN002 0 - MICN Maùy in Canon LP2900 Caùi 8.00 2,630,000.00 8 PN003 1223 19/11/2006 T1001 Thun 1001 Kg 105.00 108,230.00 9 PN003 1223 19/11/2006 T1004 Thun 1004 Kg 230.00 114,203.00 10 PX002 5327 21/11/2006 T1001 Thun 1001 Kg 50.30 108,230.00 11 PX002 5327 21/11/2006 T2001 Thun 2001 Kg 15.63 98,230.00 12 PX002 0 21/11/2006 T1004 Thun 1004 Kg 60.14 114,203.00 13 PX003 5328 22/11/2006 MICN Maùy in Canon LP2900 Caùi 2.00 2,630,000.00 14 PX003 5328 22/11/2006 CHSS Mouse Sam Sung Caùi 2.00 65,000.00 15 PN004 2563 24/11/2006 LCD Tivi SamSung Plasma Caùi 6.00 25,230,000.00 16 PN004 2563 24/11/2006 MGLG Maùy giaët LG Caùi 11.00 3,200,000.00 17 PX004 5329 24/11/2006 LCD Tivi SamSung Plasma Caùi 1.00 25,230,000.00 18 PX004 5329 24/11/2006 MGLG Maùy giaët LG Caùi 1.00 3,200,000.00 171 1,179.66
- KYØ 45,014,880.00 11,322,713.00 6,339,763.32 4,534,299.54 51,250,000.00 1,300,000.00 21,040,000.00 11,364,150.00 26,266,690.00 5,443,969.00 1,535,334.91 6,868,168.42 5,260,000.00 130,000.00 151,380,000.00 35,200,000.00 25,230,000.00 3,200,000.00 412,679,968.18
- BAÛNG TOÅNG HÔÏP NHAÄP XUAÁT TOÀN Ñôn giaù SOÁ DÖ ÑAÀU KYØ NHAÄP TRONG KYØ XUAÁT TRONG KYØ Maõ haøng Teân haøng hoaù BQ/Giaù voán SL TT SL TT SL T1001 Thun 1001 108,230 105.00 11,364,150 50.30 T1002 Thun 1002 108,632 104.23 11,322,713 100.10 T1003 Thun 1003 - - - - T1004 Thun 1004 114,203 230.00 26,266,690 60.14 T2001 Thun 2001 98,230 458.26 45,014,880 15.63 TLLG Tuû laïnh LG - - - - BUPSN Baøn uûi Panasonic - - - - MGLG Maùy giaët LG 3,200,000 11.00 35,200,000 1.00 LCD Tivi SamSung Plasma 25,230,000 6.00 151,380,000 1.00 VTELEAD Vi tính ELEAD 10,250,000 5.00 51,250,000 - CHSS Mouse Sam Sung 65,000 20.00 1,300,000 2.00 MICN Maùy in Canon LP2900 2,630,000 8.00 21,040,000 2.00 - - - - - - - - - - - - - - - - - - - - - - - - 947.49 354,138,433 232.17 Ngöôøi laäp bieåu Keá toaùn tröôûng
- AÁT TRONG KYØ TOÀN CUOÁI KYØ TT SL TT 5,443,969 54.70 5,920,181.00 10,874,063 4.13 448,650.15 - - - 6,868,168 169.86 19,398,521.58 1,535,335 442.63 43,479,545.09 - - - - - - 3,200,000 10.00 32,000,000.00 25,230,000 5.00 126,150,000.00 - 5.00 51,250,000.00 130,000 18.00 1,170,000.00 5,260,000 6.00 15,780,000.00 - - - - - - - - - - - - 58,541,535 715.32 295,596,898 Giaùm ñoác
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Mẫu hóa đơn thuế GTGT
58 p |
7940 |
1811
-
Các sổ kế toán theo hình thức nhật ký chung
2 p |
4075 |
841
-
Mẫu chứng từ kế toán thông dụng
46 p |
1475 |
630
-
Mẫu chứng từ kế toán - Bảng chấm công
50 p |
1231 |
505
-
Mẫu sổ chi tiết quỹ tiền mặt
3 p |
2941 |
499
-
CÁC LOẠI SỔ KẾ TOÁN
11 p |
1067 |
465
-
" Chương trình khung trung cấp nghề kế toán doanh nghiệp
7 p |
1988 |
312
-
BIỂU MẪU"DANH MỤC HỆ THỐNG TÀI KHOẢN KẾ TOÁN DOANH NGHIỆP"
16 p |
1487 |
161
-
Biểu mẫu " Đơn xin thành lập doanh nghiệp"
1 p |
466 |
66
-
Biểu mẫu " Đơn xin thành lập doanh nghiệp liên doanh"
3 p |
413 |
44
-
CHƯƠNG TRÌNH KHUNG TRÌNH ĐỘ CAO ĐẲNG NGHỀ nghề: Kế toán doanh nghiệp
16 p |
151 |
34
-
Mẫu hồ sơ kê khai giá
3 p |
66 |
11
-
Mẫu chứng từ kế toán -Tài sản cố định
10 p |
39 |
8
-
Mẫu chứng từ kế toán - Hàng tồn kho
15 p |
21 |
3
-
Mẫu chứng từ kế toán - Lao động tiền lương
14 p |
27 |
3
-
Mẫu chứng từ kế toán - Tiền tệ
13 p |
14 |
2
-
Mẫu chứng từ kế toán - Bán hàng
5 p |
21 |
1

Set-Cookie: TLDEVNamespace=4kdrs48n66683t5hp9ct36nuh4; path=/; domain=.tailieu.vn; HttpOnly


markdown:
# Phần 3: Lập trình Cơ sở dữ liệu nâng cao với ADO.NET_Chương 14
Chia sẻ: Trần Tiến đạt | Ngày: | Loại File: PDF | Số trang:124
lượt xem 229
download
![](http://image.tlvnimg.com/document/thumbnail/2010/20100718/hcernd/80x100/laptrinhcosodulieuvoi_csharp_phan_3_8889.jpg)
##
Phần 3: Lập trình Cơ sở dữ liệu nâng cao với ADO.NET_Chương 14
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](http://static.tlvnimg.com/b2013az/templates/version1/default/images/down16x21.png)
Chương 14: Điều khiển Giao dịch nâng cao. Tổng quan: Trong Chương 3, "Giới thiệu về ngôn ngữ truy vấn có cấu trúc, " Bạn đã thấy là bạn có thể nhóm những câu lệnh SQL vào trong những giao dịch như thế nào. Những câu lệnh SQL này được coi như một đơn vị công việc lôgíc. Một ví dụ của điều này là một chuyển đổi tiền từ tài khoản này sang tài khoản khác sử dụng hai phát biểu UPDATE. Một rút tiền ra khỏi một tài khoản, và một chuyển tiền vào trong một tài khoản khác . Cả hai phát biểu...
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Phần 3: Lập trình Cơ sở dữ liệu nâng cao với ADO.NET_Chương 14
- Phần 3: Lập trình Cơ sở dữ liệu nâng cao với ADO.NET DANH SÁCH CÁC CHƯƠNG Chương 14: Điều khiển Giao dịch nâng cao Chương 15: Giới thiệu những ứng dụng Web -ASP.NET Chương 16: Sử dụng hỗ trợ XML của SQL Server Chương 17: Những dịch vụ Mạng Chương 14: Điều khiển Giao dịch nâng cao Tổng quan Trong Chương 3, "Giới thiệu về ngôn ngữ truy vấn có cấu trúc, " Bạn đã thấy là bạn có thể nhóm những câu lệnh SQL vào trong những giao dịch như thế nào. Những câu lệnh SQL này được coi như một đơn vị công việc lôgíc. Một ví dụ của điều này là một chuyển đổi tiền từ tài khoản này sang tài khoản khác sử dụng hai phát biểu UPDATE. Một rút tiền ra khỏi một tài khoản, và một chuyển tiền vào trong một tài khoản khác . Cả hai phát biểu UPDATE có thể được xem như là một giao dịch đơn vì cả hai phát biểu đều phải được giao phó hay phục nguyên cùng nhau, nếu không tiền có thể bị mất. Những cơ sở dữ liệu hiện đại có thể xử lý nhiều người sử dụng và những chương trình truy cập cơ sở dữ liệu đồng thời, mỗi chương trình chạy tiềm tàng những giao dịch của mình trong cơ sở dữ liệu. Điều này được biết như những giao dịch trùng hợp bởi vì họ được chạy cùng lúc. Phần mềm cơ sở dữ liệu phải có khả năng để thỏa mãn những nhu cầu của tất cả những giao dịch trùng hợp này, cũng như bảo trì sự toàn vẹn của những hàng được cất giữ trong những bảng cơ sở dữ liệu. Bạn có thể kiểm soát lượng cô lập tồn tại giữa những giao dịch của bạn và những giao dịch khác mà có lẽ đang được chạy trong cơ sở dữ liệu. Trong Chương 8, "Thực hiện những lệnh Cơ sở dữ liệu, " Bạn đã thấy cách sử dụng một giao dịch với một đối tượng Lệnh như thế nào. Trong Chương 11, "Sử dụng những đối tượng Dataset để sửa đổi Dữ liệu, " Bạn đã thấy cách sử dụng một giao dịch với một DataAdapter như thế nào. Trong chương này, bạn sẽ đi sâu vào điều khiển giao dịch nâng cao sử dụng SQL Server và ADO.NET. Những mặt nổi bật trong Chương này: . Lớp SqlTransaction . Những thuộc tính giao dịch ACID . Sự Thiết đặt một savepoint . Đặt mức cô lập giao dịch . Hiểu về những khóa SQL Server LỚP SqlTransaction: Có ba lớp Giao dịch SqlTransaction, OleDbTransaction, và OdbcTransaction. Bạn sử dụng một đối tượng Transaction để đại diện cho một giao dịch cơ sở dữ liệu, và một đối tượng của lớp SqlTransaction để đại diện cho một giao dịch cơ sở dữ liệu trong một cơ sở dữ liệu SQL Server. Bảng 14.1 trình bày một số thuộc tính SqlTransaction, và Bảng 14.2 cho thấy một số những phương thức của SqlTransaction. Bạn sẽ xem xét cách sử dụng một số thuộc tính và phương pháp trong chương này. Bảng 14.1: những thuộc tính SqlTransaction
- Thuộc tính Kiểu dữ liệu Mô tả Connection SqlConnection Lấy kết nối cho giao dịch. IsolationLevel IsolationLevel Lấy mức cô lập cho giao dịch ( xem " thiết đặt mức cô lập Giao dịch") Bảng 14.2: Những phương pháp SqlTransactiontransaction. Phương Kiểu Mô tả thức trả về Commit() void Thực hiện một giao phó để duy trì mẫu tin những câu lệnh SQL trong giao dịch. Rollback() void Bị quá tải. Thực hiện một sự hồi nguyên để huỷ bỏ những câu lệnh SQL trong giao dịch. Save() void Tạo ra một savepoint trong giao dịch mà có thể được dùng để huỷ bỏ một phần của giao dịch này. Chuỗi được chuyển cho phương pháp này chỉ rõ tên savepoint. Và rồi bạn có thể hồi nguyên giao dịch tới savepoint này ( xem " Sự thiết đặt một Savepoint "). THIẾT ĐẶT MỘT Savepoint Bạn có thể đặt một savepoint bất cứ nơi đâu bên trong một giao dịch. Điều này cho phép bạn hồi nguyên bất kỳ sự thay đổi nào được làm tới những hàng trong cơ sở dữ liệu sau lúc thiết đặt savepoint của bạn.Điều này có lẽ hữu ích nếu bạn có một giao dịch rất dài, bởi vì nếu bạn tạo ra một lỗi sau khi bạn thiết đặt một savepoint, Bạn không cần phải hồi nguyên suốt quá trình giao dịch tới khởi đầu. THIẾT ĐẶT MỘT Saverpoint SỬ DỤNG T-SQL Bạn đặt một savepoint trong T-SQL sử dụng phát biểu SAVE TRANSACTION (Giao dịch Lưu trữ), hay phiên bản tốc ký : SAVE TRANS. Cú pháp cho sự phát biểu này như sau: SAVE TRANS[ACTION] { savepointName | @savepointVariable } VỚI: savepointName chỉ rõ một chuỗi chứa tên bạn muốn gán tới savepoint của bạn. savepointVariable chỉ rõ một biến T- SQL chứa tên savepoint của bạn. Biến của bạn phải thuộc về kiểu dữ liệu char, varchar, nchar, hay nvarchar. Ví dụ sau đây thiết đặt một savepoint có tên SaveCustomer: SAVE TRANSACTION SaveCustomer Chúng ta hãy quan sát một script ví dụ T - SQL đầy đủ , nó đặt một savepoint bên trong một giao dịch. Danh sách 14.1 cho thấy một script T- SQL thực hiện những bước sau đây: 1. Bắt đầu một giao dịch. 2. Chèn một hàng vào trong bảng Customers với một CustomerID là J8COM. 3. thiết đặt một savepoint . 4. Chèn một hàng vào trong bảng Orders với một CustomerID là J8COM. 5. Thực hiện một hồi nguyên tới savepoint, nó huỷ bỏ sự chèn thực hiện trong bước 4 trước đây, nhưng vẫn duy trì sự chèn thực hiện trong bước 2. 6. Giao phó giao dịch, nó giao phó hàng được chèn vào trong bảng Customers trong bước 2.
- 7. Lựa chọn hàng mới từ bảng Customers. 8. Thử chọn hàng mà đã được hồi nguyên trong bước 5 từ bảng Customers. 9. Xóa hàng mới từ bảng Customers. Danh sách 14.1: SAVEPOINT.SQL /* Savepoint.sql illustrates how to use a savepoint */ USE Northwind - step 1: begin the transaction BEGIN TRANSACTION - step 2: insert a row into the Customers table INSERT INTO Customers ( CustomerID, CompanyName ) VALUES ( 'J8COM', 'J8 Company' ) - step 3: set a savepoint SAVE TRANSACTION SaveCustomer - step 4: insert a row into the Orders table INSERT INTO Orders ( CustomerID ) VALUES ( 'J8COM' ); - step 5: rollback to the savepoint set in step 3 ROLLBACK TRANSACTION SaveCustomer - step 6: commit the transaction COMMIT TRANSACTION - step 7: select the new row from the Customers table SELECT CustomerID, CompanyName FROM Customers WHERE CustomerID = 'J8COM' - step 8: attempt to select the row from the Orders table - that was rolled back in step 5 SELECT OrderID, CustomerID FROM Orders WHERE CustomerID = 'J8COM' - step 9: delete the new row from the Customers table DELETE FROM Customers WHERE CustomerID = 'J8COM' Để chạy Script “ Savepoint.sql” sử dụng bộ phân tích truy vấn (Query Analyzer), bạn chọn File – Open , Mở script từ thư mục sql, và nhấn F5 trên bàn phím hay chọn Query – Execute từ thực đơn (menu). Hình 14.1 trình
- bày script “Savepoint.sql” đang chạy trong bộ phân tích truy vấn (Query Analyzer) Hình 14.1: chạy script “Savepoint.sql “ trong Query Analyzer Thiết đặt một Savepoint sử dụng một đối tượng SqlTransaction Bạn đặt một savepoint trong một đối tượng SqlTransaction bằng cách gọi phương thức Save() của nó, gởi một chuỗi chứa tên mà bạn muốn gán cho savepoint của bạn. Giả thiết bạn có một đối tượng SqlTransaction có tên mySqlTransaction; Ví dụ sau đây những thiết đặt một SaveCustomer có tên saveCustomer bằng cách gọi phương thức Save() của mySqlTransaction: mySqlTransaction.Save("SaveCustomer"); Và rồi Bạn có thể hồi nguyên bất kỳ sự thay đổi kế tiếp nào được thực hiện tới những hàng trong cơ sở dữ liệu bởi việc gọi phương thức Rollback() của mySqlTransaction, với việc chuyển tên savepoint tới phương thức Rollback(). Chẳng hạn: mySqlTransaction.Rollback("SaveCustomer"); Chúng ta hãy quan sát một chương trình C# đầy đủ ,nó đặt một savepoint bên trong một giao dịch. Danh sách 14.2 cho thấy một chương trình thực hiện những bước sau đây: 1. Tạo ra một đối tượng SqlTransaction có tên mySqlTransaction. 2. Tạo ra một SqlCommand và gán thuộc tính Transaction (Giao dịch) của nó tới mySqlTransaction. 3. Chèn một hàng vào trong bảng Customers. 4. thiết đặt một savepoint bởi việc gọi phương thức Save() của mySqlTransaction, chuyển tên SaveCustomer tới phương thức Save() . 5. Chèn một hàng vào trong bảng Orders. 6. Thực hiện một hồi nguyên tới savepoint được thiết lập trong bước 4, nó huỷ bỏ sự chèn thực hiện trong bước 5 trước đây, nhưng vẫn duy trì sự chèn thực hiện trong bước 3. 7. Hiển thị hàng mới được thêm vào bảng Customers. 8. Xóa hàng mới từ bảng Customers 9. Giao phó giao dịch. Danh sách 14.2: SAVEPOINT.CS
- /* Savepoint.cs illustrates how to set a savepoint in a transaction */ using System; using System.Data; using System.Data.SqlClient; class Savepoint { public static void Main() { SqlConnection mySqlConnection = new SqlConnection( "server=localhost;database=Northwind;uid=sa;pwd=sa" ); mySqlConnection.Open(); // step 1: create a SqlTransaction object SqlTransaction mySqlTransaction = mySqlConnection.BeginTransaction(); // step 2: create a SqlCommand and set its Transaction property // to mySqlTransaction SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.Transaction = mySqlTransaction; // step 3: insert a row into the Customers table Console.WriteLine("Inserting a row into the Customers table "+ "with a CustomerID of J8COM"); mySqlCommand.CommandText = "INSERT INTO Customers ( " + " CustomerID, CompanyName " + ") VALUES ( " + " 'J8COM', 'J8 Company' "+ ")"; int numberOfRows = mySqlCommand.ExecuteNonQuery(); Console.WriteLine("Number of rows inserted = "+ numberOfRows); // step 4: set a savepoint by calling the Save() method of // mySqlTransaction, passing the name "SaveCustomer" to // the Save() method mySqlTransaction.Save("SaveCustomer"); // step 5: insert a row into the Orders table Console.WriteLine("Inserting a row into the Orders table "+ "with a CustomerID of J8COM"); mySqlCommand.CommandText = "INSERT INTO Orders ( " + " CustomerID " + ") VALUES ( " + "'J8COM' "+ ")"; numberOfRows = mySqlCommand.ExecuteNonQuery(); Console.WriteLine("Number of rows inserted = "+ numberOfRows);
- // step 6: rollback to the savepoint set in step 4 Console.WriteLine("Performing a rollback to the savepoint"); mySqlTransaction.Rollback("SaveCustomer"); // step 7: display the new row added to the Customers table mySqlCommand.CommandText = "SELECT CustomerID, CompanyName "+ "FROM Customers "+ "WHERE CustomerID = 'J8COM'"; SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(); while (mySqlDataReader.Read()) { Console.WriteLine("mySqlDataReader[\" CustomerID\"] = "+ mySqlDataReader["CustomerID"]); Console.WriteLine("mySqlDataReader[\" CompanyName\"] = "+ mySqlDataReader["CompanyName"]); } mySqlDataReader.Close(); // step 8: delete the new row from the Customers table Console.WriteLine("Deleting row with CustomerID of J8COM"); mySqlCommand.CommandText = "DELETE FROM Customers "+ "WHERE CustomerID = 'J8COM'"; numberOfRows = mySqlCommand.ExecuteNonQuery(); Console.WriteLine("Number of rows deleted = "+ numberOfRows); // step 9: commit the transaction Console.WriteLine("Committing the transaction"); mySqlTransaction.Commit(); mySqlConnection.Close(); } } Đầu ra từ chương trình này sau: Inserting a row into the Customers table with a CustomerID of J8COM Number of rows inserted = 1 Inserting a row into the Orders table with a CustomerID of J8COM Number of rows inserted = 1 Performing a rollback to the savepoint mySqlDataReader["CustomerID"] = J8COM mySqlDataReader["CompanyName"] = J8 Company Deleting row with CustomerID of J8COM Number of rows deleted = 1 Committing the transaction Thiết đặt mức cô lập Giao dịch Mức cô lập giao dịch là hạn độ mà tới đó những sự thay đổi do một giao dịch tạo ra , được phân chia từ những giao dịch trùng hợp khác. Trước khi Tôi đi vào những chi tiết của nhiều mức cô lập giao dịch, bạn cần hiểu những kiểu sự cố mà có lẽ sẽ xuất hiện khi những giao dịch thường kỳ thử truy nhập vào cùng những hàng trong một bảng. Trong danh sách sau đây, Tôi sẽ sử dụng những ví dụ của hai giao dịch trùng hợp mà đang truy cập vào cùng những hàng để minh họa ba kiểu sự cố về xử lý giao dịch tiềm tàng. Phantoms(ma thuật): Transaction1 đọc một tập hợp của những hàng trả về bởi một mệnh đề WHERE được chỉ rõ. rồi Transaction 2 chèn vào một hàng mới, mà cũng xảy ra để đáp ứng mệnh đề WHERE của truy vấn
- sử dụng trước đó bởi Transaction 1. rồi Transaction1 đọc những hàng lần nữa sử dụng truy vấn giống như vậy, nhưng bây giờ lại thấy hàng vừa được chèn vào bởi Transaction 2. Hàng mới này được biết như một " ma thuật", bởi vì đối với Transaction 1, hàng này có vẻ như xuất hiện cách ma thuật. Nonrepeatable reads: Transaction1 đọc một hàng, và Transaction 2 cập nhật cùng hàng vừa được đọc bởi Transaction 1. Rồi Transaction 1 lại đọc cũng hàng đó lần nữa và phát hiện rằng hàng nó đọc trước đó bây giờ đã thay đổi. Điều này được biết như một " sự đọc không thể lặp lại ", bởi vì hàng trước đấy đọc bởi Transaction 1 đã được thay đổi. Dirty Reads (Sự đọc dơ): Transaction 1 cập nhật một hàng nhưng không giao phó sự cập nhật. Transaction 2 đọc hàng được cập nhật. Rồi Transaction 1 thực hiện một hồi nguyên, huỷ bỏ sự cập nhật trước đây. Bây giờ hàng vừa được đọc bởi Transaction 2 không còn hợp lệ nữa ( hay nó "dơ ") vì sự cập nhật thực hiện bởi Transaction 1 không được giao phó khi hàng được đọc bởi Transaction 2. Để giải quyết những vấn đề tiềm tàng này, những cơ sở dữ liệu thực hiện nhiều mức cô lập giao dịch để cản trở những giao dịch trùng hợp can thiệp lẫn nhau. SQL tiêu chuẩn định nghĩa bốn mức cô lập, được trình bày trong Bảng 14.3. Những mức này được trình bày theo mức cô lập tăng dần. Bảng 14.3: những mức cô lập Tiêu chuẩn SQL Mức cô lập Mô tả READ Ma thuật, những sự đọc không thể lặp lại, và những sự đọc dơ được cho phép. UNCOMMITTED READ COMMITTED Ma thuật và sự đọc không không thể lặp lại được cho phép, nhưng những sự đọc dơ thì Không. Đây là mặc định cho SQL Server. REPEATABLE READ Ma thuật được cho phép, nhưng những sự đọc dơ và không thể lập lại thì không. SERIALIZABLE Ma thuật, những sự đọc không không thể lặp lại, và những sự đọc dơ không được cho phép. Đây là mặc định cho SQL tiêu chuẩn. SQL Server hỗ trợ tất cả những mức cô lập giao dịch này. Mức cô lập giao dịch mặc định được định nghĩa bởi SQL tiêu chuẩn được xếp theo thứ tự, ngoại trừ mặc định sử dụng bởi SQL Server là READ COMMITTED (sự đọc được giao phó), nó được chấp nhận cho hầu hết những ứng dụng. Cảnh báo: khi bạn đặt mức cô lập giao dịch là SERIALIZABLE (xếp theo thứ tự), bất kỳ hàng nào bạn truy cập bên trong một giao dịch kế tiếp sẽ được " khóa ", có nghĩa rằng không có giao dịch nào khác có thể sửa đổi những hàng này. Thậm chí những hàng bạn truy xuất sử dụng một phát biểu SELECT cũng sẽ bị khóa. Bạn phải giao phó hay hồi nguyên giao dịch để bỏ những khóa và cho phép những giao dịch khác truy cập những hàng này . Bạn sử dụng SERIALIZABLE (xếp theo thứ tự) chỉ khi bạn phải bảo đảm rằng giao dịch của bạn được cô lập từ những giao dịch khác. Bạn sẽ học nhiều hơn về điều này sau trong mục " Tìm hiểu những sự khóa SQL Server." Ngoài ra, ADO.NET còn hỗ trợ một số mức cô lập giao dịch, được định nghĩa trong liệt kê System.Data.IsolationLevel. Bảng 14.4 cho thấy những thành viên của liệt kê này. Bảng 14.4: những thành viên liệt kê IsolationLevel Mức cô lập Mô tả Chaos Những sự thay đổi đang xem xét từ nhiều giao dịch được cô lập không thể bị ghi đè lên. SQL Server không hỗ trợ mức cô lập này. ReadCommitted Những" ma thuật" và "sự đọc không đáng được lặp lại " được cho phép, nhưng những sự đọc bẩn thỉu thì không. Đây là mặc định.
- ReadUncommitted Ma thuật, những sự đọc không đáng được lặp lại, và những sự đọc dơ được cho phép. RepeatableRead Ma thuật được cho phép, nhưng những sự đọc bẩn và không đáng được lặp lại thì không . Serializable Ma thuật, những sự đọc không đáng được lặp lại, và những sự đọc bẩn không được cho phép. Unspecified Một mức cô lập khác so với cái chỉ định hiện đang dùng, nhưng mức độ không thể xác định được . SQL Server không hỗ trợ mức cô lập này. Thiết đặt giao dịch sử dụng T- SQL Cũng như việc học thiết đặt mức cô lập giao dịch sử dụng T- SQL, Bạn sẽ thấy một ví dụ trình bày hiệu ứng của việc thiết đặt những mức cô lập giao dịch khác nhau trong SQL Server- sử dụng công cụ phân tích truy vấn (Query Analyzer tool). Để thiết đặt mức cô lập giao dịch trong T- SQL, Bạn sử dụng lệnh SET TRANSACTION ISOLATION LEVEL. Cú pháp cho lệnh này như sau: SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE } Như bạn có thể thấy từ cú pháp trước đây, bạn có thể đặt cô lập giao dịch tới bất kỳ những mức nào chỉ ra trước đó trong Bảng 14.3. Ví dụ sau đây đặt mức cô lập giao dịch tới SERIALIZABLE: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE Ghi chú Mức cô lập giao dịch được gán cho phiên họp của các bạn. Bởi vậy, nếu bạn thực hiện nhiều giao dịch trong một phiên họp, tất cả những giao dịch của bạn sẽ sử dụng cùng mức như vậy. Nếu bạn muốn thay đổi mức trong phiên họp của bạn, bạn đơn giản thực hiện lệnh SET TRANSACTION ISOLATION LEVEL với mức mới của bạn. Tất cả các giao dịch kế tiếp trong phiên họp của bạn sẽ sử dụng mức mới. Ví dụ sau đây đặt mức cô lập giao dịch tới READ COMMITTED: SET TRANSACTION ISOLATION LEVEL READ COMMITTED Chúng ta hãy quan sát một ví dụ đầy đủ mà thiết đặt mức cô lập giao dịch sử dụng T- SQL. Danh sách 14.3 cho thấy một ví dụ sử dụng Script T- SQL để đặt mức cô lập giao dịch đầu tiên tới SERIALIZABLE (xếp theo thứ tự) và thực hiện một giao dịch, và sau đó thiết đặt mức tới READ COMMITTED và thực hiện giao dịch khác. Danh sách 14.3: TransactionIsolation.sql /* TransactionIsolation.sql illustrates how to set the transaction isolation level */
- USE Northwind SET TRANSACTION ISOLATION LEVEL SERIALIZABLE BEGIN TRANSACTION SELECT CustomerID, CompanyName FROM Customers WHERE CustomerID IN ('ALFKI', 'J8COM') INSERT INTO Customers ( CustomerID, CompanyName ) VALUES ( 'J8COM', 'J8 Company' ) UPDATE Customers SET CompanyName = 'Widgets Inc.' WHERE CustomerID = 'ALFKI' SELECT CustomerID, CompanyName FROM Customers WHERE CustomerID IN ('ALFKI', 'J8COM') COMMIT TRANSACTION SET TRANSACTION ISOLATION LEVEL READ COMMITTED BEGIN TRANSACTION UPDATE Customers SET CompanyName = 'Alfreds Futterkiste' WHERE CustomerID = 'ALFKI' DELETE FROM Customers WHERE CustomerID = 'J8COM' SELECT CustomerID, CompanyName FROM Customers WHERE CustomerID IN ('ALFKI', 'J8COM') COMMIT TRANSACTION Hình 14.2 Trình bày script TransactionIsolation.sql đang chạy trong Query Analyzer. Trong ô vuông những kết quả ở một nửa phần dưới của Query Analyzer, hai tập hợp đầu tiên của những hàng được sinh ra bởi transaction đầu tiên, và một hàng đơn cuối cùng được phát sinh bởi transaction thứ hai.
- Hình 14.2: Sript TransactionIsolation.sql đang chạy trong Query Analyzer. Đặt mức cô lập giao dịch của một đối tượng SqlTransaction Cùng với việc đặt mức cô lập giao dịch của một đối tượng SqlTransaction, bạn sẽ thấy một ví dụ cho thấy hiệu ứng của những mức khác nhau được thiết đặt ở một chương trình C# . Bạn tạo ra một đối tượng SqlTransaction bởi sự gọi phương thức BeginTransaction() của đối tượng SqlConnection. Phương thức này bị quá tải như sau: SqlTransaction BeginTransaction() SqlTransaction BeginTransaction(IsolationLevel myIsolationLevel) SqlTransaction BeginTransaction(string transactionName) SqlTransaction BeginTransaction(IsolationLevel myIsolationLevel, string transactionName) VỚI: myIsolationLevel: chỉ rõ mức cô lập giao dịch của bạn. Đây là một hằng số từ liệt kê System.Data.IsolationLevel , cho những thành viên được chỉ định trước đó trong Bảng 14.4. transactionName chỉ rõ một chuỗi chứa tên bạn muốn gán tới giao dịch của các bạn. Trong những ví dụ trong mục này, giả thiết bạn có một SqlConnection mở có tên mySqlConnection mà được nối tới cơ sở dữ liệu Northwind SQL server. Ví dụ sau đây tạo ra một SqlTransaction có tên serializableTrans bởi sự gọi phương thức BeginTransaction() của mySqlConnection; chú ý IsolationLevel của Serializable được chuyển cho BeginTransaction(): SqlTransaction serializableTrans = mySqlConnection.BeginTransaction(IsolationLevel.Serializable); Ví dụ kế tiếp tạo ra một SqlCommand có tên serializableCommand, và đặt thuộc tính Transaction của nó tới serializableTrans: SqlCommand serializableCommand = mySqlConnection.CreateCommand(); serializableCommand.Transaction = serializableTrans;
- Bất kỳ câu lệnh SQL nào được thực hiện sử dụng serializableCommand bây giờ sẽ sử dụng serializableTrans, và bởi vậy sẽ được thực hiện trong một serializable transaction. Ví dụ sau thực hiện một phát biểu INSERT để thêm một hàng vào bảng Customers : serializableCommand.CommandText = "INSERT INTO Customers ("+ "CustomerID, CompanyName "+ ") VALUES ("+ "'J8COM', 'J8 Company' "+ ")"; int numberOfRows = serializableCommand.ExecuteNonQuery(); Ví dụ kế tiếp thực hiện một phát biểu Cập nhật serializableCommand.CommandText = "UPDATE Customers "+ "SET CompanyName = 'Widgets Inc.' "+ "WHERE CustomerID = 'ALFKI'"; numberOfRows = serializableCommand.ExecuteNonQuery(); Cuối cùng, ví dụ sau đây giao phó những phát biểu UPDATE và INSERT bởi sự gọi phương thức Commit() của erializableTrans: serializableTrans.Commit(); Danh sách 14.4 cho thấy một chương trình chứa những phương thức sau đây: DisplayRows() chọn và hiển thị bất kỳ hàng nào từ bảng Customers với một CustomerID là ALFKI hay J8COM. PerformSerializableTransaction() Thực hiện mã được trình bày trước đó trong mục này để tạo ra một đối tượng SqlTransaction với một mức cô lập là Serializable, và sử dụng nó để thực hiện một phát biểu INSERT và UPDATE. PerformReadCommittedTransaction() Tạo ra một đối tượng SqlTransaction với một mức cô lập là ReadCommitted, Và sử dụng nó để thực hiện những phát biểu Cập nhật và Xóa. Danh sách 14.4: TransactionIsolation.cs /* TransactionIsolation.cs illustrates how to set the transaction isolation level */ using System; using System.Data; using System.Data.SqlClient; class TransactionIsolation { public static void DisplayRows( SqlCommand mySqlCommand ) { mySqlCommand.CommandText = "SELECT CustomerID, CompanyName "+ "FROM Customers "+
- "WHERE CustomerID IN ('ALFKI', 'J8COM')"; SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(); while (mySqlDataReader.Read()) { Console.WriteLine("mySqlDataReader[\" CustomerID\"] = "+ mySqlDataReader["CustomerID"]); Console.WriteLine("mySqlDataReader[\" CompanyName\"] = "+ mySqlDataReader["CompanyName"]); } mySqlDataReader.Close(); } public static void PerformSerializableTransaction( SqlConnection mySqlConnection ) { Console.WriteLine("\nIn PerformSerializableTransaction()"); // create a SqlTransaction object and start the transaction // by calling the BeginTransaction() method of the SqlConnection // object, passing the IsolationLevel of Serializable to the method SqlTransaction serializableTrans = mySqlConnection.BeginTransaction(IsolationLevel.Serializable); // create a SqlCommand and set its Transaction property // to serializableTrans SqlCommand serializableCommand = mySqlConnection.CreateCommand(); serializableCommand.Transaction = serializableTrans; // call the DisplayRows() method to display rows from // the Customers table DisplayRows(serializableCommand); // insert a new row into the Customers table Console.WriteLine("Inserting new row into Customers table "+ "with CustomerID of J8COM"); serializableCommand.CommandText = "INSERT INTO Customers ("+ "CustomerID, CompanyName "+ ") VALUES ("+ "'J8COM', 'J8 Company' "+ ")"; int numberOfRows = serializableCommand.ExecuteNonQuery(); Console.WriteLine("Number of rows inserted = "+ numberOfRows); // update a row in the Customers table Console.WriteLine("Setting CompanyName to 'Widgets Inc.' for "+ "row with CustomerID of ALFKI"); serializableCommand.CommandText = "UPDATE Customers "+ "SET CompanyName = 'Widgets Inc.' "+ "WHERE CustomerID = 'ALFKI'"; numberOfRows = serializableCommand.ExecuteNonQuery(); Console.WriteLine("Number of rows updated = "+ numberOfRows); DisplayRows(serializableCommand); // commit the transaction
- serializableTrans.Commit(); } public static void PerformReadCommittedTransaction( SqlConnection mySqlConnection ) { Console.WriteLine("\nIn PerformReadCommittedTransaction()"); // create a SqlTransaction object and start the transaction // by calling the BeginTransaction() method of the SqlConnection // object, passing the IsolationLevel of ReadCommitted to the method // (ReadCommitted is actually the default) SqlTransaction readCommittedTrans = mySqlConnection.BeginTransaction(IsolationLevel.ReadCommitted); // create a SqlCommand and set its Transaction property // to readCommittedTrans SqlCommand readCommittedCommand = mySqlConnection.CreateCommand(); readCommittedCommand.Transaction = readCommittedTrans; // update a row in the Customers table Console.WriteLine("Setting CompanyName to 'Alfreds Futterkiste' "+ "for row with CustomerID of ALFKI"); readCommittedCommand.CommandText = "UPDATE Customers "+ "SET CompanyName = 'Alfreds Futterkiste' "+ "WHERE CustomerID = 'ALFKI'"; int numberOfRows = readCommittedCommand.ExecuteNonQuery(); Console.WriteLine("Number of rows updated = "+ numberOfRows); // delete the new row from the Customers table Console.WriteLine("Deleting row with CustomerID of J8COM"); readCommittedCommand.CommandText = "DELETE FROM Customers "+ "WHERE CustomerID = 'J8COM'"; numberOfRows = readCommittedCommand.ExecuteNonQuery(); Console.WriteLine("Number of rows deleted = "+ numberOfRows); DisplayRows(readCommittedCommand); // commit the transaction readCommittedTrans.Commit(); } public static void Main() { SqlConnection mySqlConnection = new SqlConnection( "server=localhost;database=Northwind;uid=sa;pwd=sa" ); mySqlConnection.Open(); PerformSerializableTransaction(mySqlConnection); PerformReadCommittedTransaction(mySqlConnection); mySqlConnection.Close(); } }
- Đầu ra từ chương trình này như sau: In PerformSerializableTransaction() mySqlDataReader["CustomerID"] = ALFKI mySqlDataReader["CompanyName"] = Alfreds Futterkiste Inserting new row into Customers table with CustomerID of J8COM Number of rows inserted = 1 Setting CompanyName to 'Widgets Inc.' for row with CustomerID of ALFKI Number of rows updated = 1 mySqlDataReader["CustomerID"] = ALFKI mySqlDataReader["CompanyName"] = Widgets Inc. mySqlDataReader["CustomerID"] = J8COM mySqlDataReader["CompanyName"] = J8 Company In PerformReadCommittedTransaction() Setting CompanyName to 'Alfreds Futterkiste' for row with CustomerID of ALFKI Number of rows updated = 1 Deleting row with CustomerID of J8COM Number of rows deleted = 1 mySqlDataReader["CustomerID"] = ALFKI mySqlDataReader["CompanyName"] = Alfreds Futterkiste Tìm hiểu những sự khóa SQL server SQL Server sử dụng những sự khóa để thực hiện cô lập giao dịch và để bảo đảm thông tin được cất giữ chắc chắn trong một cơ sở dữ liệu .Những sự khóa ngăn ngừa một người sử dụng đọc hay thay đổi một hàng mà đang được thay đổi bởi một người sử dụng khác. Ví dụ, khi bạn cập nhật một hàng, một sự khóa hàng được đặt trên hàng đó ngăn ngừa người sử dụng khác cập nhật hàng đó cùng một thời điểm. Những kiểu khóa của SQL Server Máy chủ phục vụ SQL sử dụng nhiều kiểu khóa, Một số trong đó được trình bày trong Bảng 14.5. Bảng này trình bày những sự khóa trong thứ tự tăng dần của độ hạt khóa, nó tham chiếu tới kích thước của nguồn tài nguyên sẽ bị khóa. Chẳng hạn, một sự khóa hàng có một độ hạt tinh luyện hơn so với một sự khóa trang. Bảng 14.5: những kiểu khóa của máy chủ phục vụ SQL Kiểu khóa Mô tả Row (RID) Được đặt lên một hàng trong một bảng. Thay thế cho định danh hàng. Thường dùng để xác định một hàng duy nhất. Key (KEY) Được đặt lên một hàng bên trong một chỉ số. Dùng để bảo vệ những phạm vi của khóa trong serializable transactions. Page (PAG) Được đặt trên một trang, có chứa 8 KB hàng hay chỉ số dữ liệu. Extent Được đặt trên một phạm vi, một nhóm kề nhau của 8 Dữ liệu hay những trang chỉ số (EXT) Table (TAB) Đặt trên một bảng và khóa tất cả những hàng và những chỉ số trong bảng này. Database Dùng để khóa toàn bộ cơ sở dữ liệu khi người quản trị cơ sở dữ liệu đặt nó vào trong kiểu người (DB) sử dụng đơn cho sự bảo trì. Những kiểu khóa của máy chủ phục vụ SQL
- Máy chủ phục vụ SQL sử dụng những kiểu khóa khác nhau để xác định mức khóa đặt trên nguồn tài nguyên. Những kiểu khóa này được trình bày trong Bảng 14.6. Bạn sẽ thấy những kiểu khóa này trong mục kế tiếp. Bảng 14.6: những kiểu khóa của máy chủ phục vụ SQL Kiểu khóa Mô tả Shared (S) Chỉ định một giao dịch sẽ đọc từ nguồn tài nguyên sử dụng một phát biểu SELECT. Ngăn ngừa những giao dịch khác sửa đổi nguồn tài nguyên được khóa. Một sự khóa dùng chung được thả tự do ngay khi dữ liệu được đọc- trừ phi mức cô lập giao dịch được đặt tới REPEATABLE READ hay SERIALIZABLE. Update (U) Chỉ rõ một giao dịch định sửa đổi một nguồn tài nguyên sử dụng một phát biểu INSERT, UPDATE, hay DELETE. Sự khóa phải được tăng tới một sự khóa dành riêng trước khi giao dịch thật sự thực hiện sự sửa đổi. Exclusive (X) Cho phép giao dịch sửa đổi nguồn tài nguyên sử dụng một phát biểu INSERT, UPDATE, hay DELETE . Không có giao dịch nào khác có thể đọc từ hay viết tới một nguồn tài nguyên mà trên đó một sự khóa dảnh riêng đã được đặt. Intent shared (IS) Chỉ rõ là giao dịch định đặt một khóa dùng chung trên một số nguồn tài nguyên tới một mức độ tốt hơn bên trong tài nguyên đó. Chẳng hạn, sự đặt một khóa IS trên một bảng chỉ báo rằng giao dịch định đặt một khóa dùng chung trên một số những trang hay những hàng bên trong bảng này. Không có giao dịch nào khác có thể đặt một khóa riêng trên một nguồn tài nguyên mà đã có một khóa IS trên nó. Intent exclusive Chỉ báo rằng giao dịch định đặt một khóa riêng trên một nguồn tài nguyên với một mức độ (IX) hạt tốt hơn. Không có giao dịch nào khác có thể đặt một khóa riêng trên một nguồn tài nguyên mà đã có một khóa IX trên nó. Shared with Chỉ báo rằng giao dịch định đọc tất cả những nguồn tài nguyên có một lượng độ hạt tốt hơn intent exclusive và sửa đổi một số tài nguyên đó. Chẳng hạn, việc đặt một khóa SIX trên một bảng cho biết (SIX) giao dịch định đọc tất cả những hàng trong bảng này và sửa đổi một số trong những hàng đó. Không có giao dịch nào khác có thể đặt một khóa riêng trên một nguồn tài nguyên mà đã có một khóa SIX trên nó. Schema Chỉ báo rằng một phát biểu ngôn ngữ định nghĩa dữ liệu (Data Definition Language _DDL) modification sẽ được thực hiện trên một nguồn tài nguyên mô hình, chẳng hạn, DROP TABLE. Không có (Sch-M) giao dịch nào khác có thể đặt một sự khóa trên một tài nguyên mà đã có một khóa Sch- M trên nó. Schema stability Chỉ báo rằng một câu lệnh SQL mà sử dụng nguồn tài nguyên, sắp sửa được thực hiện, như (Sch-S) một phát biểu SELECT chẳng hạn. Những giao dịch khác có thể đặt một khóa trên một tài nguyên mà đã có một khóa Sch- S trên nó; chỉ một sự khóa cải biến mô hình bị ngăn cản. Bulk update (BU) Chỉ báo rằng một thao tác sao chép khối lượng lớn để tải những hàng vào trong một bảng sẽ được thực hiện. Một khóa cập nhật khối lượng lớn cho phép những quá trình khác tới khối dữ liệu _sao chép dữ liệu đồng thời vào trong cùng một bảng , nhưng cản trở những quá trình khác mà không phải là dữ liệu sao chép khối lớn truy nhập vào bảng. Để thêm thông tin về dữ liệu sao chép khối lớn tới một bảng, xem những sách tài liệu trực tuyến Máy chủ phục vụ SQL. Xem thông tin về khóa máy chủ phục vụ SQL Bạn có thể xem thông tin về khóa trong một cơ sở dữ liệu sử dụng SQL Server Enterprise Manager. Bạn mở thư mục Management, mở nút Current Activity (hoạt động hiện thời), rồi mở nút Locks/Process ID hoặc những nút Locks/Object . nút Locks/Process ID cho bạn thấy những khóa được đặt bởi mỗi Quá trình; mỗi quá trình có một số SPID mà được gán bởi SQL Server để xác định quá trình. nút Locks/Object cho bạn thấy những khóa được đặt trên mỗi nguồn tài nguyên bởi tất cả các quá trình. Mẹo nhỏ: Bạn cũng có thể cũng xem thông tin về khóa bởi việc thực thi thủ tục lưu trữ sp_lock , mặc dù Enterprise Manager tổ chức thông tin trong một định dạng dễ đọc hơn.
- Giả thiết bạn đã bắt đầu giao dịch sau (thí dụ, sử dụng Query Analyzer) với những câu lệnh T - SQL sau đây: USE Northwind BEGIN TRANSACTION UPDATE Customers SET CompanyName = 'Widgets Inc.' WHERE CustomerID = 'ALFKI' Việc này đặt một khóa dùng chung trên cơ sở dữ liệu Northwind và một số khóa trên bảng Customers, mà bạn có thể xem- sử dụng Enterprise Manager . Hình 14.3 cho thấy rằng những sự khóa này sử dụng những nút Locks/ Process ID của Enterprise Manager. SPID = 51 tương ứng với Query Analyzer nơi tôi đã chạy những câu lệnh T- SQLT trước đây. Như bạn có thể thấy từ hình này, một số khóa được đặt bởi những câu lệnh T-SQL trước . Hình 14.3: việc xem những khóa sử dụng nút Locks/ Process ID của Enterprise Manager. Để hồi nguyên giao dịch trước đây, thực hiện câu lệnh T-SQL sau đây: ROLLBACK TRANSACTION Để thả tự do cho những khóa, thực hiện câu lệnh T- SQLsau đây: COMMIT TRANSACTION Thông tin trong khung bên phải của Hình 14.3 trình bày những khóa, và thông tin này được chia vào trong những cột sau đây: Object Đối tượng sẽ bị khóa. Lock Type Kiểu khóa, tương ứng với một trong số những kiểu được chỉ ra trước đó trong Bảng 14.5. Mode chế độ khóa, tương ứng tới một trong số những chế độ khóa được chỉ ra trước đó trong Bảng 14.6. Tatus Tình trạng khóa, là GRANT (khóa đã được cấp phát thành công ), CNVT (khóa đã được chuyển
- đổi), hay WAIT(đợi khóa). Owner kiểu khóa chủ sở hữu, như Sess (khóa phiên ) hay Xact (khóa giao dịch). Index tên của chỉ số sẽ được khóa (nếu có). Resource từ định danh tài nguyên của đối tượng sẽ bị khóa (nếu có). Khóa Giao dịch Một giao dịch có thể ngăn giao dịch khác thu một khóa trên một tài nguyên. Chẳng hạn, chúng ta hãy cho là bạn bắt đầu một giao dịch sử dụng T -SQL sau, nó đồng nhất với T- SQL trong mục trước : USE Northwind BEGIN TRANSACTION UPDATE Customers SET CompanyName = 'Widgets Inc.' WHERE CustomerID = 'ALFKI' Như bạn thấy trong mục trước đây, nó đặt một số khóa trên những đối tượng Customers. Nếu bạn thử cập nhật cùng một hàng - mà không kết thúc giao dịch trước - sử dụng những câu lệnh T-SQL sau đây: USE Northwind UPDATE Customers SET CompanyName = 'Alfreds Futterkiste' WHERE CustomerID = 'ALFKI' rồi Cập nhật này sẽ đợi cho đến khi giao dịch trước hòan tất việc giao phó hay hồi nguyên. Hình 14.4 cho thấy rằng hai giao dịch này được bắt đầu trong Query Analyzer. Giao dịch đầu tiên, được trình bày trong phần trên của Hình 14.4 , đang khóa giao dịch thứ hai trong phần dưới. Hình 14.4: giao dịch trên phần trên đang khóa giao dịch trong phần dưới Để giao phó giao dịch trước và thả tự do cho những khóa cho giao dịch đầu tiên, bạn có thể thực hiện câu lệnh T- SQLsau đây:
- COMMIT TRANSACTION Điều này cho phép Cập nhật thứ hai (hiển thị ở phần dưới của Query Analyzer) lấy khóa thích hợp để Cập nhật hàng và tiến hành, như trình bày trong Hình 14.5 Hình 14.5: Một khi giao dịch ở phần trên đã được giao phó, sự Cập nhật ở phần dưới tiến hành. Gán Timeout cho khóa Theo mặc định, một câu lệnh SQL sẽ đợi đến vô tận để nhận một khóa. Bạn có thể thay đổi điều này bởi việc thực thi lệnh LOCK_TIMEOUT. Chẳng hạn, lệnh sau đây đặt khóa timeout tới 1 giây (1.000 mili-giây) SET LOCK_TIMEOUT 1000 Nếu một câu lệnh SQL phải đợi lâu hơn 1 giây, máy chủ phục vụ SQL sẽ trả về một lỗi và hủy bỏ câu lệnh SQL. Bạn cũng có thể thực thi lệnh SET LOCK_TIMEOUT trong mã C#. Chẳng hạn: mySqlCommand.CommandText = "SET LOCK_TIMEOUT 1000"; mySqlCommand.ExecuteNonQuery(); Bạn sẽ thấy sự sử dụng lệnh SET LOCK_TIMEOUT trong mục kế tiếp. Blocking và Serializable/Repeatable Read Transactions Serializable và repeatable read transactions khóa những hàng mà chúng đang truy xuất, như thế những giao dịch khác không thể cập nhật những hàng đó. Serializable và repeatable read transactions làm điều này để những hàng không bị thay đổi sau khi chúng đọc. Ví dụ, nếu bạn chọn hàng từ bảng Customers với một CustomerID là ALFKI sử dụng một serializable transaction, rồi nỗ lực cập nhật hàng này sử dụng Transaction thứ hai, thì Transaction thứ hai sẽ bị khóa. Nó bị khóa vì serializable transaction khóa hàng được truy xuất và Transaction thứ hai không thể lấy một khóa trên
- hàng này. Danh sách 14.5 cho thấy một ví dụ về điều này. Transaction thứ hai gán khóa timeout tới 1 giây. Có nghĩa là chương trình sẽ ném ra một SqlException đơn giản hơn là treo máy khi Transaction thứ hai không thể làm chủ một khóa trên hàng ALFKI trong bảng Customers . Danh sách 14.5: Block.c /* Block.cs illustrates how a serializable command locks the rows it retrieves so that a second transaction cannot get a lock to update one of these retrieved rows that has already been locked */ using System; using System.Data; using System.Data.SqlClient; class Block { public static void DisplayRows( SqlCommand mySqlCommand ) { mySqlCommand.CommandText = "SELECT CustomerID, CompanyName "+ "FROM Customers "+ "WHERE CustomerID IN ('ALFKI', 'J8COM')"; SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(); while (mySqlDataReader.Read()) { Console.WriteLine("mySqlDataReader[\" CustomerID\"] = "+ mySqlDataReader["CustomerID"]); Console.WriteLine("mySqlDataReader[\" CompanyName\"] = "+ mySqlDataReader["CompanyName"]); } mySqlDataReader.Close(); } public static void Main() { // create and open two SqlConnection objects SqlConnection serConnection = new SqlConnection( "server=localhost;database=Northwind;uid=sa;pwd=sa" ); SqlConnection rcConnection = new SqlConnection( "server=localhost;database=Northwind;uid=sa;pwd=sa" ); serConnection.Open(); rcConnection.Open(); // create the first SqlTransaction object and start the transaction // by calling the BeginTransaction() method of the SqlConnection // object, passing the IsolationLevel of Serializable to the method
- SqlTransaction serializableTrans = serConnection.BeginTransaction(IsolationLevel.Serializable); // create a SqlCommand and set its Transaction property // to serializableTrans SqlCommand serializableCommand = serConnection.CreateCommand(); serializableCommand.Transaction = serializableTrans; // call the DisplayRows() method to display rows from // the Customers table; // this causes the rows to be locked, if you comment // out the following line then the INSERT and UPDATE // performed later by the second transaction will succeed DisplayRows(serializableCommand); // * // create the second SqlTransaction object SqlTransaction readCommittedTrans = rcConnection.BeginTransaction(IsolationLevel.ReadCommitted); // create a SqlCommand and set its Transaction property // to readCommittedTrans SqlCommand readCommittedCommand = rcConnection.CreateCommand(); readCommittedCommand.Transaction = readCommittedTrans; // set the lock timeout to 1 second using the // SET LOCK_TIMEOUT command readCommittedCommand.CommandText = "SET LOCK_TIMEOUT 1000"; readCommittedCommand.ExecuteNonQuery(); try { // insert a new row into the Customers table Console.WriteLine("Inserting new row into Customers table "+ "with CustomerID of J8COM"); readCommittedCommand.CommandText = "INSERT INTO Customers ("+ "CustomerID, CompanyName "+ ") VALUES ( " + " 'J8COM', 'J8 Company' "+ ")"; int numberOfRows = readCommittedCommand.ExecuteNonQuery(); Console.WriteLine("Number of rows inserted = "+ numberOfRows); // update the ALFKI row in the Customers table Console.WriteLine("Setting CompanyName to 'Widgets Inc.' for "+ "for row with CustomerID of ALFKI"); readCommittedCommand.CommandText = "UPDATE Customers "+ "SET CompanyName = 'Widgets Inc.' "+ "WHERE CustomerID = 'ALFKI'"; numberOfRows = readCommittedCommand.ExecuteNonQuery(); Console.WriteLine("Number of rows updated = "+ numberOfRows); // display the new rows and rollback the changes DisplayRows(readCommittedCommand);
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Lập trình cơ sở dữ liệu với ADO
12 p |
336 |
161
-
Tự học lập trình cơ sở dữ liệu Visual C .NEt part 1
29 p |
275 |
122
-
Bài giảng Lập trình Windows: Lập trình cơ sở dữ liệu với thư viện ADO
63 p |
279 |
121
-
Giới thiệu về Lập trình Cơ sở dữ liệu với ADO.NET - Chương 1
10 p |
240 |
105
-
Tự học lập trình cơ sở dữ liệu Visual C.NEt part 2
39 p |
182 |
88
-
Thuyết trình Lập trình cơ sở dữ liệu BASIC 6.0
35 p |
153 |
76
-
Tự học lập trình cơ sở dữ liệu Visual C .NEt part 3
39 p |
127 |
69
-
Tự học lập trình cơ sở dữ liệu Visual C .NEt part 4
39 p |
114 |
64
-
Giáo trình lập trình cơ sở dữ liệu với Visual Basic part 3
21 p |
98 |
51
-
Lập trình cơ sở dữ liệu Visual Basic SQL server part 3
50 p |
96 |
47
-
Giáo trình Lập trình cơ sở dữ liệu với Visual Basic: Phần 1 - NXB ĐHQG TP.HCM
110 p |
66 |
37
-
Giáo trình Lập trình cơ sở dữ liệu với Visual Basic: Phần 2 - NXB ĐHQG TP.HCM
130 p |
65 |
37
-
Ebook Tự học lập trình hướng đối tượng và lập trình cơ sở dữ liệu bằng C#: Phần 2
169 p |
48 |
18
-
Ebook Tự học lập trình hướng đối tượng và lập trình cơ sở dữ liệu bằng C#: Phần 1
227 p |
38 |
17
-
Lập trình cơ sở dữ liệu với CSharp (Phần 2)
240 p |
38 |
12
-
Bài giảng Lập trình cơ sở dữ liệu Java: Bài 3 - Nguyễn Hữu Thể
36 p |
11 |
2
-
Bài giảng Lập trình cơ sở dữ liệu Java: Bài 3 - Nguyễn Hữu Thể (tt)
30 p |
14 |
2

Set-Cookie: TLDEVNamespace=l3rikd876s7kcdv0rpihq63kg5; path=/; domain=.tailieu.vn; HttpOnly