Hướng dẫn tạo SSIS package để Import/Export dữ liệu và Tạo SQL Server Agent Job để thực thi package.

1. Hướng dẫn tạo SSIS package để thực hiện Import/Export dữ liệu giữa hai server.
Trước tiên bạn phải cài Visual Studio 2013 và MS SQL Server Management Studio 2014
Để tạo được SSIS package thì tiếp theo bạn phải download và cài Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2013
Sau khi cài xong, mở SQL Server Data Tools for Visual Studio 2013 lên:
Tiếp theo bạn vào File > New > Project và tạo một Integration Services Project:
Sau khi project được tạo bạn sẽ nhìn thấy file Package.dtsx mặc định tạo ra
Tạo DB Connections Nguồn và Đích:
  • Click chuột phải vào khu vực Connection Managers và chọn New OLE DB Connection…
Cửa sổ Configure OLE DB Connection Manager xuất hiện
Click New > Điền các thông tin server về DB nguồn

(Click nút Test Connection nếu OK sẽ thông báo 1 cửa sổ success)
Nhấn OK để kết thúc:
Click chuột phải làm tương tự như trên rồi điền các thông tin server về DB đích. Mục đích của chúng ta là import dữ liệu (một hoặc nhiều bảng) từ db Nguồn tới db Đích.
Trong bài này chúng ta lấy ví dụ import dữ liệu từ 1 bảng tên là tblSummaryReport ở db Nguồn tới bảng cùng tên ở db Đích. Lưu ý cần tạo cấu trúc bảng ở db Đích giống hệt cấu trúc bảng ở db Nguồn.
  • Trên thanh công cụ SSIS Toolbox kéo chọn control Execute SQL Task  và đặt tên là “Truncate table at Distination”, mục đích là trước khi import sẽ đảm bảo xóa trắng dữ liệu bảng tblSummaryReport ở db Đích.
  • Click đúp vào control trên (hoặc chuột phải > Properties) và thiết lập các thông tin như sau:
  • Tiếp theo kéo thả control “Data Flow Task” vào trong cửa sổ của file Package.dtsx và đặt tên “Import data”
  • Click đúp vào control trên và nó mở ra cửa sổ Data Flow như hình dưới:
  • Kéo thả control “OLD DB Source” từ SSIS Toolbox (dưới group: Other Sources) vào và thiết lập Connection và table như hình bên dưới:
  • Tiếp theo kéo thả control “OLD DB Destinations” từ SSIS Toolbox (dưới group: Other Destinations) vào và thiết lập Connection và table như hình bên dưới (à bạn phải nhớ là tạo trước mapping trỏ từ control Nguồn tới control Đích theo mũi tên)
  • Quay trở lại tab “Control Flow” của file Package.dtsx và thiết lập mapping giữa 2 control như hình bên dưới. (Lưu ý việc mapping này chỉ ra rằng các object của chúng ta tạo ra sẽ chạy từ đâu đến đâu tron các bước thiết lập)
  • Nhấn F5 và chạy thử, xem các kết quả:

>> Như vậy chúng ta đã hoàn thành xong phần import/Export dữ liệu giữa 2 bảng từ 2 server.

2. Hướng dẫn tạo SQL Server Agent để thực thi file package .dtsx đã tạo ở trên
Mục đích của việc này là import/export dữ liệu được chạy hàng ngày/hàng tuần/… một cách tự động theo ý đồ của tác giả, ở đây mục đích của mình là hằng ngày sẽ lấy lại dữ liệu mới nhất từ server nguồn về server đích.
Để làm được điều này yêu cầu bạn phải cài SQL Server Agent, nó là 1 dịch vụ tích hợp trong MS SQL Server 2014 (hoặc các phiên bản cũ hơn).
Tạo SQL Agent Job:
  • Trước khi tạo một Job trong SQL Agent thì chúng ta cần phải tạo một Credential với tên được đặt là “SSISProxyCredentials”, với Identify và Password mình sử dụng tài khoản windows:
  • Tiếp theo chúng ta sẽ tạo một New Proxy, và nhập các thông tin như hình dưới:
Mục đích của 2 bước trên là tạo ra 1 chứng thực khi chạy một SQL Agent Job
  • Tạo một Job với tên “Run SSIS Package for Import Data”
  • Tiếp đến tạo 1 Step trong Job: Click vào Steps > New, và điền các thông tin như hình:
Trong phần Advanced:
Thiết lập lịch chạy tự động cho Job: Chọn Schedules > New:
> Lưu ý ở trên mình đặt lịch chạy hằng ngày vào lúc 12:00AM.
Như vậy là đã xong, bây giờ mình sẽ chạy thử nhá:
Và kết quả sau khi chạy Success:
Tóm lại: Ở trên mình đã trình bày chi tiết cách tạo SSIS package để Import/Export dữ liệu và Tạo SQL Server Agent Job để thực thi package. Ngoài ra bạn có thể tham khảo thêm nhiều cách import/export dữ liệu từ nhiều nguồn và đích khác nhau chứ không giới hạn chỉ OLE DB Connection. Và bạn cũng có thể Import/Export data trên SSIS package bằng SQL Scripts/Excel/CSV/MySQL/..etc..

Trương Đức Tài

3 cách khắc phục khi không vào được Facebook và YouTube

Vào một ngày đẹp trời cơ quan bạn tự dưng chặn nhân viên truy cập vào những trang rất phổ biến như Facebook, Youtube,..Thật không thể tin nổi! quá buồn phải không? Vậy làm thế nào để khắc phục vấn đề và vượt qua thử thách này một cách êm ái?
Khi tìm kiếm từ khóa “cách vào facebook” trên Google, bạn sẽ thấy có rất nhiều kết quả trả về, tuy nhiên đa phần các bài viết này đều hướng dẫn người dùng đổi DNS, thêm các dãy IP vào file hosts hoặc cấu hình VPN (mạng riêng ảo). Các bước thực hiện tương đối phức tạp, đặc biệt là đối với những không rành công nghệ.
Dưới đây mình sẽ hướng dẫn một vài cách đơn giản để khắc phục vấn đề này:

1. Unlimited Free VPN - Hola
Đây là một Extension của trình duyệt Google Chrome. Bạn thêm extension này vào trình duyệt của bạn theo link sau: https://chrome.google.com/webstore/detail/unlimited-free-vpn-hola/gkojfkhlekighikafcpjkiklfbnlmeio?hl=en-US

Sau khi đã add vào sẽ xuất hiện 1 biểu tượng mặt cười nhỏ như hình bên dưới, và chọn một country (ở Việt nam thì bạn nên chọn Singapore để có tốc độ truy cập nhanh).
Xong. Và đây là kết quả truy cập Facebook (mình chọn Country là United States)


Còn đây là Youtube:

2. SBRO Safe Gate
SBRO Safe Gate là một tiện ích miễn phí cho trình duyệt Chrome, hoạt động tương tự như một phần mềm VPN, giúp người dùng truy cập an toàn hơn khi lướt web. Để cài đặt, bạn hãy truy cập vào địa chỉ https://sbro.me/en/, nhấn Add to Chrome > Add extension.
Sau khi hoàn tất, bạn hãy nhấn vào biểu tượng của SBRO Safe Gate ở cuối thanh địa chỉ, lựa chọn máy chủ (Singapore, Amsterdam và New York) rồi nhấn Activate Proxy for this tab để kích hoạt, lúc này biểu tượng của tiện ích sẽ sáng lên.
Chỉ kích hoạt proxy trên các tab do người dùng chỉ định. Ảnh: MH
Không giống như các phần mềm khác, SBRO Safe Gate chỉ áp dụng proxy lên các thẻ do người dùng chỉ định, do đó tốc độ lướt web tổng thể sẽ không bị ảnh hưởng. Ngoài ra, nếu muốn an toàn hơn, bạn có thể đánh dấu chọn vào ô Hide my browser User-Agent.
3. Opera
Vừa qua, Opera đã chính thức tích hợp thêm VPN (Virtual Private Network, tạm dịch là mạng riêng ảo) vào trong trình duyệt, cho phép bạn sử dụng VPN hoàn toàn miễn phí, ẩn địa chỉ IP và bảo mật hơn khi sử dụng Wi-Fi công cộng.
Đầu tiên, bạn truy cập vào http://www.opera.com/developer và tải về phiên bản Opera dành cho nhà phát triển. Khi hoàn tất, bạn bấm vào biểu tượng Opera, chọnPreferences > Privacy & security rồi đánh dấu chọn ở ô Enable VPN. Lưu ý, hiện tại tính năng này chỉ mới có trên phiên bản dành cho nhà phát triển.
Kích hoạt VPN trên Opera. Ảnh: MH
Sau đó, bạn hãy thử truy cập vào Facebook, kích vào chữ VPN ở đầu thanh địa chỉ và lựa chọn máy chủ cần sử dụng. So với các ứng dụng khác thì VPN của Opera hoàn toàn miễn phí và không giới hạn dung lượng.
Nếu đang xài smartphone, bạn chỉ cần cài thêm ứng dụng Opera trên Google Play là sẽ vào được Facebook. Thêm vào đó, bạn cũng nên vào Settings của trình duyệt, nhấn vào mục Opera Turbo và chọn Always On để lướt Facebook nhanh hơn.
Dễ dàng truy cập vào Facebook hay các trang web bị chặn với Opera. Ảnh: MH
Ngoài ra, bạn cũng có thể sử dụng trình duyệt Tor (https://goo.gl/XEQ80) để truy cập vào Facebook cũng như các trang web khác.

Có sươu tầm thêm nguồn: http://kynguyenso.plo.vn/

Bài toán hóc búa của Google thu hút 3 triệu lượt xem

Bài toán điền dấu thú vị do Google giới thiệu thu hút gần 3 triệu lượt xem cùng hàng trăm người đưa ra câu trả lời.
Trong buổi ra mắt Nexus 7 tại Nhật Bản, Google thu hút sự chú ý của cộng đồng mạng nhờ bài toán điền dấu thú vị. Nó lan truyền nhanh chóng trên mạng xã hội với gần 3 triệu lượt xem trên Youtube.
Đề bài như sau:
Hãy sử dụng các số 1, 1, 5, 8 và các phép tính cộng, trừ, nhân, chia (+, -, x, : ) và dấu ngoặc đơn để tạo thành phép toán có kết quả bằng 10.
Bạn phải sử dụng tất cả chữ số trên, mỗi số một lần. Một phép tính có thể được lặp lại nhiều lần, ví dụ 1 + 1 + 5 + 8 và không nhất thiết phải dùng tất cả phép tính, dấu.
Lưu ý, bạn chỉ được dùng 4 phép cộng, trừ, nhân chia. Phép mũ, ví dụ, 8 + 1 + 1^5 là không hợp lệ.
Với trường hợp này, bạn giải quyết như thế nào?
Nguồn: zing.vn

Bài 11 - Khởi chạy cho đồng hồ bằng HTML Canvas (Canvas Clock - Phần 5 cuối)

Phần 5 - Khởi chạy đồng hồ

Để khởi chạy cho đồng hồ, gọi hàm drawClock trong các khoảng thời gian:

JavaScript:

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var radius = canvas.height / 2;
ctx.translate(radius, radius);
radius = radius * 0.90
//drawClock();setInterval(drawClock, 1000);
Xem demo »

Giải thích code trên:

Điều mà bạn phải làm bây giờ là start đồng hồ để cho nó chạy, gọi hàm drawClock ở các khoảng thời gian.

Thay thế:
drawClock();
Với:
setInterval(drawClock, 1000);
NoteKhoảng thời gian đơn vị là milliseconds. hàm drawClock sẽ được gọi cho mỗi giây, tức 1000 milliseconds.

Trương Đức Tài.

Bài 10 - Vẽ kim trên mặt đồng hồ bằng HTML Canvas (Canvas Clock - Phần 4)

Phần 4 - Vẽ kim đồng hồ

...Tiếp theo, Bài này mình sẽ hướng dẫn cách làm thế nào để raw được những chiếc kim chỉ giờ, phút, giây trên mặt đồng hồ.
Bước đầu tiên, tạo một hàm JavaScript như code bên dưới:

JavaScript:

function drawClock() {
    drawFace(ctx, radius);
    drawNumbers(ctx, radius);
    drawTime(ctx, radius);}

function drawTime(ctx, radius){
    var now = new Date();
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
    //hour    hour=hour%12;
    hour=(hour*Math.PI/6)+(minute*Math.PI/(6*60))+(second*Math.PI/(360*60));
    drawHand(ctx, hour, radius*0.5, radius*0.07);
    //minute    minute=(minute*Math.PI/30)+(second*Math.PI/(30*60));
    drawHand(ctx, minute, radius*0.8, radius*0.07);
    // second    second=(second*Math.PI/30);
    drawHand(ctx, second, radius*0.9, radius*0.02);
}

function drawHand(ctx, pos, length, width) {
    ctx.beginPath();
    ctx.lineWidth = width;
    ctx.lineCap = "round";
    ctx.moveTo(0,0);
    ctx.rotate(pos);
    ctx.lineTo(0, -length);
    ctx.stroke();
    ctx.rotate(-pos);
}
Xem demo »

Giải thích code trên:

Sử dụng hàm  Date để lấy giờ, phút, giây của hệ thống:
var now = new Date();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
Tính toán góc của kim giờ, và vẽ nó với độ dài bằng 50% của bán kính, và chiều rộng bằng 7% của bán kính đồng hồ:
hour=hour%12;
hour=(hour*Math.PI/6)+(minute*Math.PI/(6*60))+(second*Math.PI/(360*60));
drawHand(ctx, hour, radius*0.5, radius*0.07);
Sử dụng cùng kỹ thuật trên cho kim phút và kim giây.
Trong hàm drawHand() chứa các hàm và và thuộc tính chúng ta đã được học, do đó mình sẽ không cần phải giải thích thêm. Nó đơn giản chỉ vẽ một đường thẳng với chiều dài và chiều rộng đã cho.

Trương Đức Tài.

Tạo project MVC 6 đầu tiên P1

Trong bài hướng dẫn này sử dụng Visual Studio 2015.


Cài đặt Visual Studio and ASP.NET

Hưỡng dẫn cài đặt tại đây ASP.NET 5 and Visual Studio 2015.

Tạo web đầu tiên

Từ Visual Studio Start page, chọn New Project.
../../_images/new_project.png
Chọn File > New > Project.
../../_images/alt_new_project.png
Tạo một New Project
  • chọn như hình dưới Web > ASP.NET Web Application > OK
../../_images/new_project2.png

../../_images/p3.png
Một web site đơn giản đã được tạo ra. Bạn bấm F5 để chạy web hoặc Ctl-F5 để chạy chế độ không debug
../../_images/12.png
  • Visual Studio sẽ khởi động IIS Express để chạu web của bạn.
  • Chạy ở chế độ không debug Ctrl+F5 cho phép bạn sửa code và lưu file khi trương trình đang chạy
../../_images/debug_menu.png
  • Bạn có thể chạy chế độ debug bằng cách clck nút IIS Express
../../_images/iis_express.png
Và ta đã có giao diện web thân thiện với Mobile
../../_images/2.png
Cảm ơn bạn đã theo dõi. Bài sau tôi sẽ đi sâu hơn vào code.

Bài 9 - Tạo số trên mặt đồng hồ bằng HTML Canvas (Canvas Clock - Phần 3)

Phần 3 - Vẽ số trên mặt đồng hồ

...tiếp bài trước chúng đã được học cách để tạo ra mặt đồng hồ.

Trong bài này mình sẽ tiếp tục hướng dẫn cách làm thế nào để tạo những con số hiển thị trên mặt đồng hồ. Đầu tiền mình sẽ tạo một hàm JavaScript để vẽ những con số cho đồng hồ như sau:


JavaScript:

function drawClock() {
    drawFace(ctx, radius);
    drawNumbers(ctx, radius);
}

function drawNumbers(ctx, radius) {
    var ang;
    var num;
    ctx.font = radius*0.15 + "px arial";
    ctx.textBaseline="middle";
    ctx.textAlign="center";
    for(num= 1; num < 13; num++){
        ang = num * Math.PI / 6;
        ctx.rotate(ang);
        ctx.translate(0, -radius*0.85);
        ctx.rotate(-ang);
        ctx.fillText(num.toString(), 0, 0);
        ctx.rotate(ang);
        ctx.translate(0, radius*0.85);
        ctx.rotate(-ang);
    }
}
Xem demo »

Giải thích code trên

Thiết lập kích thước font (của đối tượng cần vẽ) bằng 15% của bán kính đồng hồ:
ctx.font = radius*0.15 + "px arial";
Thiết lập căn chỉnh text tới giữa của vị trí cần hiển thị:
ctx.textBaseline="middle";
ctx.textAlign="center";
Tính toán vị trí cần hiển thị (12 số) tới 85% của bán kính đồng hồ, xoay (PI/6) cho mỗi số:
for(num= 1; num < 13; num++) {
    ang = num * Math.PI / 6;
    ctx.rotate(ang);
    ctx.translate(0, -radius*0.85);
    ctx.rotate(-ang);
    ctx.fillText(num.toString(), 0, 0);
    ctx.rotate(ang);
    ctx.translate(0, radius*0.85);
    ctx.rotate(-ang); 
}

Trương Đức Tài.