Cách tạo công việc trong phiên bản SQL Server Express


81

Bất cứ ai có thể vui lòng giải thích cho tôi cách tạo việc làm trong SQL Server Expressphiên bản?


6
Nếu bạn đang đề cập đến công việc SQL Agent, chức năng đó không có sẵn trong phiên bản Express. Xem câu trả lời cho câu hỏi này để biết các khả năng khác: stackoverflow.com/questions/3788583/…
8kb

Express phiên bản hỗ trợ SQL Server Broker và bạn có thể tạo ra cơ chế tùy chỉnh như ở đây
Lukasz Szozda

Câu trả lời:


123

SQL Server Express không bao gồm SQL Server Agent , vì vậy không thể chỉ tạo các công việc SQL Agent.

Những gì bạn có thể làm là:
Bạn có thể tạo công việc "theo cách thủ công" bằng cách tạo các tệp hàng loạt và tệp kịch bản SQL, và chạy chúng thông qua Bộ lập lịch tác vụ Windows.
Ví dụ: bạn có thể sao lưu cơ sở dữ liệu của mình bằng hai tệp như sau:

backup.bat:

sqlcmd -i backup.sql

backup.sql:

backup database TeamCity to disk = 'c:\backups\MyBackup.bak'

Chỉ cần đặt cả hai tệp vào cùng một thư mục và giải mã hàng loạt tệp thông qua Trình lập lịch tác vụ Windows.

Tệp đầu tiên chỉ là tệp lô của Windows gọi tiện ích sqlcmd và chuyển tệp kịch bản SQL.
Tệp kịch bản SQL chứa T-SQL. Trong ví dụ của tôi, nó chỉ là một dòng để sao lưu cơ sở dữ liệu, nhưng bạn có thể đặt bất kỳ T-SQL nào bên trong. Ví dụ, bạn có thể thực hiện một số UPDATEtruy vấn thay thế.


Nếu công việc bạn muốn tạo là để sao lưu, duy trì chỉ mục hoặc kiểm tra tính toàn vẹn, bạn cũng có thể sử dụng Giải pháp bảo trì tuyệt vời của Ola Hallengren.

Nó bao gồm một loạt các thủ tục được lưu trữ (và các công việc SQL Agent cho các phiên bản SQL Server không phải Express) và trong Câu hỏi thường gặp có một phần về cách chạy các công việc trên SQL Server Express:

Làm cách nào để bắt đầu với Giải pháp Bảo trì Máy chủ SQL trên SQL Server Express?

SQL Server Express không có SQL Server Agent. Do đó, việc thực thi các thủ tục được lưu trữ phải được lên lịch bằng cách sử dụng tệp cmd và Tác vụ đã lên lịch của Windows. Làm theo các bước sau.

SQL Server Express không có SQL Server Agent. Do đó, việc thực thi các thủ tục được lưu trữ phải được lên lịch bằng cách sử dụng tệp cmd và Tác vụ đã lên lịch của Windows. Làm theo các bước sau.

  1. Tải xuống MaintenanceSolution.sql.

  2. Thực thi MaintenanceSolution.sql. Tập lệnh này tạo ra các thủ tục được lưu trữ mà bạn cần.

  3. Tạo các tệp cmd để thực hiện các thủ tục được lưu trữ; ví dụ:
    sqlcmd -E -S. \ SQLEXPRESS -d master -Q "EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = N'C: \ Backup ', @BackupType =' FULL '" -b -o C: \ Log \ DatabaseBackup.txt

  4. Trong Tác vụ theo lịch trình của Windows, hãy tạo tác vụ để gọi tệp cmd.

  5. Lên lịch các nhiệm vụ.

  6. Bắt đầu các nhiệm vụ và xác minh rằng chúng đang hoàn thành thành công.


1
Tôi nên chỉ định thông tin đăng nhập ở đâu?
HasanG

1
@ HasanGürsoy Nếu bạn đang tạo tác vụ đã lên lịch chạy SQLCMD (có hoặc có tệp BAT), tôi khuyên bạn nên sử dụng tham số "-E" của SQLCMD để xác thực cửa sổ. Để điều đó hoạt động, hãy xác định thông tin đăng nhập SQL Server, cho người dùng windows là chủ sở hữu của tác vụ đã lên lịch windows của bạn. Nếu không rõ cửa sổ đăng nhập mà tác vụ chạy dưới, hãy đặt "WHOAMI" (lệnh DOS) vào tệp BAT & chụp đầu ra tệp BAT, để xem ai đang thực thi.
Doug_Ivison

@ HasanGürsoy Hoặc, để xác thực SQL Server, tôi sẽ đặt mật khẩu trong tác vụ đã lên lịch của cửa sổ (nơi quyền chi phối ai có thể đọc nó), thay vì đặt nó trong một tệp ở bất kỳ đâu. Nó chạy trên dòng lệnh tệp BAT. Nếu đó là tham số đầu tiên được chuyển đến tệp BAT, thì trong tệp BAT, bạn có thể gọi nó là% 1, trên dòng SQLCMD chẳng hạn.
Doug_Ivison

40

Chức năng tạo SQL Agent Jobs không có sẵn trong SQL Server Express Edition. Một giải pháp thay thế là thực thi một tệp hàng loạt thực thi tập lệnh SQL bằng Bộ lập lịch tác vụ Windows.

Để thực hiện việc này, trước tiên hãy tạo một tệp batch có tên sqljob.bat

sqlcmd -S servername -U username -P password -i <path of sqljob.sql>

Thay thế servername, username, passwordpathvới bạn.

Sau đó, tạo tệp SQL Script có tên sqljob.sql

USE [databasename]
--T-SQL commands go here
GO

Thay thế [databasename]bằng tên cơ sở dữ liệu của bạn. Các USEGOlà cần thiết khi bạn viết kịch bản SQL.

sqlcmdlà một tiện ích dòng lệnh để thực thi các tập lệnh SQL. Sau khi tạo hai tệp này, thực thi tệp hàng loạt bằng Windows Task Scheduler.

NB: Một câu trả lời gần như tương tự đã được đăng cho câu hỏi này trước đây. Nhưng tôi cảm thấy nó không đầy đủ vì nó không chỉ định về thông tin đăng nhập bằng cách sử dụng sqlcmd.


Tôi sẽ lưu sqljob.sql đó ở đâu? và làm thế nào tôi có thể đặt khi nào nó sẽ thực thi?
WTFZane

1
@WTFZane, điều đó không quan trọng, miễn là vị trí có sẵn từ bất kỳ ai mà tệp lô đang thực thi. (trong script ở trên, hãy thay thế path of sqljob.sqlbằng bất kỳ vị trí nào bạn sử dụng). Hãy nhớ rằng một *.sqltệp ở đây không chỉ là một tệp văn bản.
Abel

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.