Có thể giải thích cho tôi cách tạo công việc trong phiên bản SQL Server Express không?Cách tạo công việc trong phiên bản SQL Server Express
Trả lời
SQL Server Express doesn't include SQL Server Agent, vì vậy, bạn không thể chỉ tạo công việc của Đại lý SQL.
Điều bạn có thể làm là:
Bạn có thể tạo công việc "thủ công" bằng cách tạo tệp lô và tệp tập lệnh SQL và chạy chúng qua Windows Task Scheduler.
Ví dụ, bạn có thể sao lưu cơ sở dữ liệu của bạn với hai tập tin như thế này:
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 tin vào cùng một thư mục và exeute tập tin thực thi thông qua Windows Task Scheduler.
Tệp đầu tiên chỉ là một tệp lô Windows gọi số sqlcmd utility và chuyển một tệp tập lệnh SQL.
Tệp tập lệnh 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ụ: thay vào đó, bạn có thể thực hiện một số truy vấn UPDATE
.
Tôi nên chỉ định thông tin đăng nhập ở đâu? –
@ HasanGürsoy Nếu bạn đang tạo một tác vụ theo lịch chạy SQLCMD (với hoặc w/out một 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ổ. Để làm việc đó, hãy xác định đăng nhập SQL Server, cho người dùng windows là chủ sở hữu của các tác vụ được lập lịch của cửa sổ của bạn. Nếu không rõ cửa sổ nào đăng nhập nhiệm vụ chạy dưới, hãy đặt "WHOAMI" (lệnh DOS) vào tệp BAT và nắm bắt đầu ra tệp BAT, để xem ai đang thực thi. –
@ HasanGürsoy Hoặc, để xác thực SQL Server, tôi sẽ đặt mật khẩu trong các tác vụ theo lịch trình của cửa sổ (trong đó quyền cho phép ai có thể đọc), thay vì đặt nó vào một tệp ở bất kỳ đâu. Nó đi trên dòng lệnh BAT. Nếu đó là tham số đầu tiên được chuyển tới tệp BAT, thì trong tệp BAT, bạn có thể tham chiếu nó dưới dạng% 1, trên dòng SQLCMD chẳng hạn. –
Phiên bản SQL Server Express bị giới hạn theo một số cách - một cách là chúng không có Tác nhân SQL cho phép bạn lên lịch công việc.
Có một vài phần mở rộng của bên thứ ba cung cấp khả năng đó - kiểm tra ví dụ:
Chức năng của việc tạo ra SQL Agent Jobs không có sẵn trong SQL Phiên bản máy chủ Express. Một giải pháp thay thế là thực hiện một tập tin batch thực hiện một kịch bản SQL bằng cách sử dụng Windows Task Scheduler.
Để làm được điều này đầu tiên tạo ra một tập tin thực thi có tên sqljob.bat
sqlcmd -S servername -U username -P password -i path of sqljob.sql
Thay servername
, username
, password
và path
với bạn.
Sau đó, tạo ra các tập tin SQL Script tên sqljob.sql
USE [databasename]
--T-SQL commands go here
GO
Thay [databasename]
với tên cơ sở dữ liệu của bạn. Cần có USE
và GO
khi bạn viết tập lệnh SQL.
sqlcmd
là 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, hãy thực thi tệp batch bằng cách sử dụng Windows Task Scheduler.
NB: Câu trả lời gần như giống nhau đã đượ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ỉ rõ thông tin đăng nhập 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ó sẽ thực hiện? – WTFZane
Nếu bạn đang đề cập đến công việc của Đại lý SQL, chức năng đó không có sẵn trong ấn bản Express. Xem câu trả lời cho câu hỏi này cho các khả năng khác: http://stackoverflow.com/questions/3788583/automate-a-sql-query-to-run-every-month/3789024#3789024 – 8kb
Phiên bản Express hỗ trợ SQL Server Broker và bạn có thể tạo cơ chế tùy chỉnh như [ở đây] (http://stackoverflow.com/a/41909818/5070879) – lad2025