Hiển thị các bài đăng có nhãn MS SQL / T-SQL. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn MS SQL / T-SQL. Hiển thị tất cả bài đăng

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

SQL - Làm thế nào để cập nhật dữ liệu tới một bảng trong truy vấn dùng JOIN và GROUP BY

Hôm nay mình đọc được câu hỏi của một bạn trong Group 'Lập trình viên' trên Facebook về SQL thấy rất hay, nói chung đối với mình nó không khó vì mình đã đi làm nhiều năm và dạng query kiểu này mình cũng làm rất nhiều rồi. Tuy nhiên mình thấy nó tương đối quan trọng và thường hay được sử dụng trong lập trình ứng dụng với database mà không phải ai cũng biết.
Vì vậy mình viết lời giải lên đây hi vọng các bạn Sinh viên chưa đi làm và chưa có nhiều kinh nghiệm về lập trình sql có thể tham khảo để phần nào tích thêm 1 chút kinh nghiệm nho nhỏ.
Câu hỏi:

[SQL]
Mọi người giúp em lấy CSDL từ trường DonGia để update vao trường TongTien vậy.
AI chỉ em cách viết Ham, Thu tục hay Trigger cho yêu cầu đó với.
Em cảm ơn ak?
Đáp án:
--CREATE A STORE PROCEDURE FOR UPDATING [TONGTIEN].
CREATE PROCEDURE sp_UpdateTONGTIEN_PhieuXuat
AS
BEGIN
       WITH t2 AS
       (
           select a.MaPX, sum(c.DonGia) as TongTien
           from PhieuXuat a
           join ChiTietPhieuXuat b on a.MaPX = b.MaPX
           join Xe c on c.MaXe = b.MaXe
           group by a.MaPX
       )
       UPDATE t1
       SET t1.TongTien = t2.TongTien
       FROM PhieuXuat AS t1
       INNER JOIN t2
       ON t1.MaPX = t2.MaPX
END

--EXEC STORE PROCEDURE
Exec sp_UpdateTONGTIEN_PhieuXuat

--SEE RESULT AFTER UPDATED.
select * from Xe
select * from ChiTietPhieuXuat
select * from PhieuXuat

 


Trương Đức Tài

How to enable remote connections in SQL Server 2008 (to 2014)?

You experience the following error message:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)
SQL Server 2008: The server was not found or was not accessible.
How to solve this issue?
There are a couple of things that might be going on here… (All of the following configurations are made on the computer running your SQL Server 2008 instance)
Allow remote connections to this server
The first thing you want to check is if Remote Connections are enabled on your SQL Server database. In SQL Server 2008 you do this by opening SQL Server 2008 Management Studio, connect to the server in question, right click the server…
… and open the Server Properties.
Navigate to Connections and ensure that Allow remote connections to this server is checked. Check if this solves the problem. If it does, here you go, continue with whatever you were doing and have a nice day.
Protocols for MSSQLServer
If you’re still running in issues let’s dig a bit deeper. The next good thing to check is the SQL Server Network Configuration. Open the SQL Server Configuration Manager, unfold the node SQL Server Network Configuration and select Protocols for MSSQLServer (or whatever the name of your SQL Server instance is).
Make sure that TCP/IP is enabled and try again. Even though I hope that this resolved your problems there might still be an issue with…
The Firewall
If there is still no communication happening between your computer and the remote SQL Server you most likely need to configure your firewall settings. A good first step is to figure out which port is being used by TCP/IP (and which you need to open in your firewall). You can do this by right clicking TCP/IP and selecting Properties.
Click on the tab IP Addresses and voilà – Port 1433 it is :-) That was easy enough and all there is left to do is to allow inbound TCP/IP traffic on Port 1433 in your firewall. In Windows 7 this works something like this. Open the Control Panel and navigate to Windows Firewall.
Click on Advanced Settings on the left hand side and you should see the Windows Firewall with Advanced Security. Select the Inboud Ruleson the left hand side and click on New Rule… on the right hand side.
This opens the New Inbound Rule Wizard which you can use to allow inbound traffic on Port 1433 for TCP/IP (and which is exactly how you configured your SQL Server in the steps above). Just follow the steps outlined below and you should be good :-)
That’s it, success! From here you should be able to access your SQL Server remotely. Enjoy!


Nguồn: blogs.msdn.microsoft.com

SQL Làm thế nào ghép 2 bảng lại với nhau để SUM dữ liệu khi số cột là khác nhau?

Hôm nay đọc câu hỏi của một bạn trong group Lập trình viên trên Facebook về SQL thấy rất hay, thực ra đối với mình nó không khó vì mình đã đi làm nhiều năm và dạng query kiểu này mình cũng làm rất nhiều rồi. Tuy nhiên mình thấy nó rất quan trọng và rất hay được sử dụng trong lập trình ứng dụng với database mà không phải ai cũng biết.
Vì vậy mình viết lời giải lên đây hi vọng các bạn Sinh viên chưa đi làm và chưa có nhiều kinh nghiệm về lập trình sql có thể tham khảo để phần nào tích thêm 1 chút kinh nghiệm nho nhỏ.
Câu hỏi:

[SQL]
Ai biết cách ghép 2 bảng này lại thành 1 bảng chỉ giúp mình.
Đáp án:
Select lan,mavt,sum(nhap) as nhap,sum(xuat) as xuat,sum(tra) as tra
from(
   Select lan,mavt,nhap,0 as xuat,0 as tra from Table_1
   union all
   Select lan,mavt,0 as nhap,xuat,tra from Table_2
) as a
Group by lan,mavt

Trương Đức Tài