Tự động thực hiện truy vấn trong MS SQL Studio mỗi giờ


13

Tôi hỗ trợ một ứng dụng trong một doanh nghiệp lớn, một trong những vai trò của tôi là dọn dẹp dữ liệu. Có một truy vấn tôi cần thực hiện mỗi giờ và tôi muốn tự động hóa nó. Do chính sách của tổ chức, tôi không thể tạo công việc Đại lý máy chủ SQL hoặc sửa đổi lược đồ, tôi chỉ có thể thao tác dữ liệu.

Vô tận

WHILE(1=1)
BEGIN 
WAITFOR DELAY '01:00';
--do work
END

thực hiện công việc cho tôi, nhưng tôi nhún vai khi nghĩ về một kết nối mở.

Lý tưởng nhất là tôi sẽ tự viết kịch bản cho MS SS để thực thi một đoạn mã nhất định mỗi giờ, nhưng tôi không chắc liệu điều đó có khả thi hay không.

Có giải pháp nào cho vấn đề này?


1
Bạn có thể sử dụng Windows sceduler trên máy tính của bạn?
nhiễm trùng

12
Hỏi ai đó có quyền lên lịch cho bạn.
Magoo

@sepupic Đó là vùng đất nghiên cứu tiếp theo của tôi, nếu không có gì trong MS SS có thể giúp tôi.
Ivan Koshelev

Tôi đồng ý. Tôi sẽ cảm thấy rất khó chịu khi chạy mã lặp trên máy khách của mình. Điều gì sẽ xảy ra nếu PC của bạn gặp sự cố, một số người đã rút phích cắm, v.v. Tôi đã làm việc trong các môi trường tương tự nơi các công việc SQL không có sẵn cho các nhóm ứng dụng - bởi vì chúng tôi có một tùy chọn khác là sử dụng AutoSys hoặc một công cụ lập lịch khác chạy trên máy chủ ứng dụng. Hãy thử và tìm hiểu làm thế nào các nhiệm vụ theo lịch trình khác được quản lý? Một cách giải quyết khác có thể là sử dụng Dịch vụ báo cáo SQL Server ? Không lý tưởng tôi biết ...
Terry C

9
Giải pháp chính xác là đến các DBA và yêu cầu họ tạo một công việc SQL Server Agent để chạy việc dọn dẹp này hàng giờ. Sau đó tìm hiểu lý do tại sao bạn nhận được dữ liệu trong cơ sở dữ liệu cần "dọn dẹp" thường xuyên và sửa lỗi đó .
alroc

Câu trả lời:


22

Bạn của bạn là sqlcmd (Microsoft Technet)

  1. Tạo một tệp SQL với tập lệnh cần thiết để chạy công việc dọn dẹp của bạn
  2. Chạy tập lệnh với sqlcmd.exe và mọi tham số bắt buộc
  3. Tạo một tác vụ theo lịch trình của Windows và thêm lệnh với tất cả các tham số cần thiết

Ví dụ

sqlcmd -d YOUR_DB -E -i YOUR_SCRIPT.SQL -o OUTPUTFILE.TXT 

Chúc may mắn.


4
Đảm bảo rằng các tập lệnh này được đặt trên một máy chủ ứng dụng / công cụ thích hợp ở đâu đó cùng với Tác vụ theo lịch chứ không phải máy tính phát triển.
GER

7

Bạn không cần Management Studio để thực hiện các truy vấn.

Nếu bạn thực sự không có lựa chọn nào để có ai đó sắp xếp công việc cho bạn, bạn nên xem xét sqlcmd như đã lưu ý trong câu trả lời của hot2use

Nếu bạn đang sử dụng phiên bản không được hỗ trợ (vì bạn không chỉ định phiên bản) thì cũng có osql là máy khách dòng lệnh, nhưng công cụ đó đã không được dùng nữa.

Sau đó, bạn có thể lên lịch một lệnh bằng cách sử dụng bất kỳ trình lập lịch nào bạn muốn (ví dụ Trình lập lịch tác vụ Windows) và chạy một cái gì đó như thế này:

OSQL -E -i c:\temp\dowork.sql

Hãy xem tài liệu để xem bạn có những lựa chọn nào cho việc lựa chọn và xác thực máy chủ.


-1

Sử dụng "SQL Server Agent" được tìm thấy trong MS SQL studio (trong trình thám hiểm đối tượng, mở rộng máy chủ của bạn và nó thường nằm ở cuối danh sách) có lẽ là lựa chọn tốt nhất của bạn.

Điều này sẽ tạo ra một công việc có thể được thiết lập để thực hiện tại các khoảng thời gian xác định. Các công việc sẽ chạy như một dịch vụ trên máy chủ chứ không phải máy khách. Điều này có nghĩa là nếu máy khách của bạn ngắt kết nối thì nó vẫn chạy và nếu máy chủ được khởi động lại (vì một lý do không xác định), công việc sẽ tiếp tục chạy mà bạn không cần phải khởi tạo lại.

Nhược điểm là bạn có thể sẽ cần quyền truy cập nâng cao để có thể làm điều này.


3
Có lẽ bạn đã bỏ qua bit này trong câu hỏi: Do chính sách của tổ chức, tôi không thể tạo công việc Đại lý máy chủ SQL [...]
Andriy M

@Andriy: Vẫn là câu trả lời đúng. Chúng tôi không nên giúp mọi người làm bóng tối chống lại mong muốn của tổ chức của họ.
Dylan Knoll

1
@DylanKnoll: Chà, tôi nghĩ sẽ có ý nghĩa hoàn hảo khi người trả lời thừa nhận chính sách của OP đề cập đến chính sách và bao gồm các lập luận chống lại sự ngu ngốc của nó (ví dụ như dòng bình luận của bạn), nhưng "không nên giúp đỡ"? Tùy chọn được đề xuất và chấp nhận không có vẻ quá tàn bạo, vì vậy việc tuân thủ các nguyên tắc có vẻ hơi khắc nghiệt trong trường hợp này.
Andriy M

Tôi cũng hiểu quan điểm của bạn, nhưng còn quan điểm của các DBA thì sao? Âm thanh rất giống như ai đó đang cố gắng che giấu lỗi trong thiết kế DB để chúng không được đưa ra ánh sáng.
Dylan Knoll

1
Nó đọc "công việc máy chủ SQL" trước khi nó được đổi thành "công việc đại lý máy chủ SQL". Tôi không nghĩ có thể có ý nghĩa khác với cái trước hơn cái sau. (Nhân tiện, OP đã chỉnh sửa điều đó, đó là một người hiểu thuật ngữ hơi sai chính xác theo cách tôi sẽ làm và sửa nó.) Tuy nhiên, từ ngữ ban đầu thậm chí còn dễ bỏ qua hơn, vì vậy, Bằng cách này hay cách khác, tôi vẫn duy trì đó là một sự giám sát về phía bạn :)
Andriy M
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.