2011-06-30 27 views
5

Tôi muốn biết liệu có thể chạy ứng dụng C# console hoặc ASP.NET định kỳ hay không.Chạy ứng dụng C# theo định kỳ để cập nhật cơ sở dữ liệu

Mục đích của tôi là để tự động làm theo các bước sau một lần tháng:

1) Query một Nguồn cơ sở dữ liệu.

2) Hãy kết quả của truy vấn ở (1) và thao tác chúng bằng cách sử dụng LINQC#, ví dụ bằng cách kiểm tra nếu một giá trị nhất định là đã có trong cơ sở dữ liệu Destination.

3) Lưu trữ dữ liệu có nguồn gốc trong cơ sở dữ liệu Đích.

Ứng dụng này có để chạy trên một Windows Server 2008, cơ sở dữ liệu Nguồn là trong một SQL 2005 Server và cơ sở dữ liệu Destination là trong một SQL 2008 Server.

Tôi đã cố gắng tạo ví dụ: gói SSIS nhưng nó sẽ không thực hiện công việc vì tôi không thể thêm bất kỳ logic nào.

Có ai có đề xuất nào không?

+3

Điều này có thể được thực hiện trong SSIS. Bạn có tác vụ kịch bản để viết kịch bản của bạn. – vikramjb

+1

Tại sao bạn cần sử dụng C#? Có thể bạn chỉ đóng gói logic này trong một hoặc nhiều thủ tục được lưu trữ và lên lịch cho chúng với SQL Agent? – Yuck

+2

Hoặc bạn cũng có thể tạo một ứng dụng dòng lệnh dotnet và lên lịch nó qua Scheduled Task hoặc SQL Server agent. – vikramjb

Trả lời

10

Bạn nên tạo Tác vụ theo lịch để thực hiện việc này. Xem ở đây: Bảng điều khiển -> Công cụ quản trị -> Công cụ lập lịch biểu

Và như bạn đã nói, có - ứng dụng bảng điều khiển được khuyến nghị.


Sửa

Tôi đồng ý với @andynormancx trong SSIS rằng có thể là một cách tốt hơn để làm điều này; Tuy nhiên, nó thường được chấp nhận để tạo ra một ứng dụng giao diện điều khiển được thực hiện bởi một nhiệm vụ theo lịch trình. Đây là nơi nó đi xuống đến tài nguyên, thời gian và chuyên môn của bạn: nó có thể hoặc có thể không có giá trị nỗ lực để tìm hiểu đủ về SSIS để tạo ra một gói trong SqlServer để làm những gì bạn cần. Nếu ai đó đưa ra một câu trả lời hoàn chỉnh bằng cách sử dụng SSIS để thực hiện nhiệm vụ này, tôi chắc chắn sẽ cúi đầu với chuyên môn đó.

+3

+1 - Tôi muốn thêm rằng bạn nên đặt ứng dụng này làm giao diện điều khiển. – Keith

+0

Nếu logic đơn giản, bạn cũng có thể tạo một thủ tục lưu sẵn và thực hiện nó như một công việc trong sql. Nhưng công việc lên lịch sẽ là tốt nhất – fluf

+0

@Keith - đã đồng ý – IAbstract

-1

Bạn có thể làm điều đó, tất nhiên. Nhưng tôi khuyên bạn nên làm cho nó trở thành một dịch vụ Windows.

+3

Tại sao bạn nên giới thiệu Dịch vụ Windows? – IAbstract

+1

@IAbstract - Tôi khuyên bạn nên sử dụng dịch vụ cửa sổ, vì điều này sẽ chạy ở mặt sau để người dùng không phải lo lắng về việc chạy mã mỗi tháng. Đặt nó để chạy trên một thời gian và không lo lắng về nó. Tại sao bạn không viết nó như một dịch vụ? – Jethro

+2

Phần lớn, tốt hơn nhiều khi sử dụng tác vụ được lên lịch để có một dịch vụ chuyên dụng treo quanh chỉ để chạy một nhiệm vụ mỗi tháng một lần. Và trong khi viết một dịch vụ Windows dễ dàng hơn nhiều hiện nay, việc chạy một tác vụ thông qua bộ lập lịch vẫn còn ít rắc rối hơn rất nhiều. – andynormancx

3

Bạn có thể tạo tác vụ theo lịch sẽ gọi tên tệp .exe của bạn ở khoảng thời gian được xác định trước.

Đến bảng điều khiển của bạn và chọn Scheduled Task và sau đó thêm scheduled task

-2

Nếu bạn thực sự muốn làm điều đó trong C# Tôi đề nghị bạn viết một dịch vụ, mã của bạn là gần như giống hệt với một ứng dụng giao diện điều khiển bình thường.

Kiểm tra liên kết sau để bắt đầu. C# Service step by step

+1

Dịch vụ cửa sổ là quá mức cần thiết cho một cái gì đó như thế này. – IAbstract

4

Bạn có thể tạo Tác vụ theo lịch mới. Nó sẽ dễ dàng hơn nhiều và bạn không phải tái phát minh ra bánh xe.

Các vấn đề liên quan