Cho phép SQL Server sao lưu trên các máy / ổ đĩa từ xa


8

Tôi có SQL Server (2000, 2005 và 2008) và tôi muốn sử dụng SQL Agent (hoặc thậm chí là một cơ sở dữ liệu sao lưu đơn giản 'xxx' vào đĩa = 'yyy'), để sao lưu vào các ổ đĩa từ xa.

Tức là: tôi có một ổ đĩa được ánh xạ trong máy SQL, ví dụ: "M:" ánh xạ tới \ otherbox \ someshare

Theo mặc định, SQL Server sẽ không cho phép bạn sao lưu vào các ổ đĩa như vậy, nhưng tôi nghĩ rằng có một cách để kích hoạt điều đó. Ai đó có thể chỉ cho tôi các tài liệu?

Cảm ơn trước.


1
Bạn chỉ có thể sử dụng một công cụ của bên thứ ba, như SQLBackupAndFTP để sao lưu SQL Server của bạn từ xa? sqlbackupandftp.com/blog/
Nick Taylor

Câu trả lời:


8

Sử dụng đường dẫn UNC khi chỉ định đích-- Tác nhân SQL không có khái niệm "ổ đĩa" "ánh xạ".

Ngoài ra, Đại lý SQL thường chạy dưới dạng "Dịch vụ cục bộ" hoặc "Hệ thống cục bộ" và, do đó, không có quyền đối với chia sẻ từ xa trên các máy tính khác.

Bạn có một vài lựa chọn:

  • Chạy SQL Agent như một tài khoản vai trò trong miền. Cấp quyền tài khoản đó để ghi vào thư mục / chia sẻ nơi bạn muốn các bản sao lưu được lưu trữ.

  • Chạy SQL Agent là "Dịch vụ mạng". Nó sẽ xác thực với máy chủ chia sẻ với tài khoản máy tính miền của máy mà dịch vụ đang chạy. Cấp quyền tài khoản đó để ghi vào thư mục / chia sẻ nơi bạn muốn sao lưu được lưu trữ.

  • Nếu bạn không có tên miền, hãy tạo một tài khoản có cùng tên người dùng và mật khẩu trên cả máy lưu trữ SQL Agent và máy lưu trữ các tệp sao lưu. Thay đổi SQL Agent để chạy như tài khoản "vai trò" này và cấp quyền cho tài khoản đó để ghi vào thư mục / chia sẻ nơi bạn muốn sao lưu được lưu trữ. ("Miền của người nghèo" ...)


Ngoài việc đề cập đến các đường dẫn UNC, tôi muốn giới thiệu người dùng thực sự KẾT NỐI với đường dẫn UNC. Cách nhanh chóng / dễ dàng để làm điều này là chỉ cần mở một trình duyệt web và nhập nó. Bạn sẽ được nhắc nhập tên người dùng / mật khẩu và thường có thể nói rằng bạn muốn NHỚ người dùng đó / vượt qua trong tương lai. Tôi đã thấy quá nhiều người ở đó 99% và không thể hiểu tại sao mọi thứ không hoạt động. KIỂM TRA KẾT NỐI CỦA BẠN! CƯỜI LỚN! :-)
KPWINC

Đó là những gì tôi đang tìm kiếm (Phần "miền của người nghèo"); Cảm ơn!
Martin Marconcini

4

Tôi hoàn toàn đồng ý với cả hai câu trả lời về con đường UNC.

Tôi cũng muốn thêm rằng ngay cả với các ổ đĩa được ánh xạ, bạn có một cách giải quyết đơn giản. Bạn có thể thực hiện sao lưu vào bất kỳ ổ đĩa thông thường nào trên máy chủ của mình. Và sau đó bạn có thể thêm

xp_cmdshell 'XCOPY [source] [destination] \flags'

Lệnh SQL cho công việc hoặc tập lệnh SQL bạn chạy.

Với xp_cmdshell, bạn có thể làm được nhiều hơn - ví dụ: chạy một công cụ dòng lệnh lưu trữ bên ngoài, như 7z để nén tệp trước khi bạn sao chép nó vào ổ đĩa được ánh xạ (khi kết nối từ xa quá chậm ...)

PS: Quên đề cập rằng xp_cmdshell có thể được bật và tắt bằng cách sử dụng công cụ Cấu hình bề mặt và bằng cách thực thi sp_cool (và theo mặc định, nó bị vô hiệu hóa)


Tiện ích ROBOCOPY từ Bộ tài nguyên Win2003 cung cấp một số tùy chọn bổ sung trên XCOPY, rất hữu ích trong loại hoạt động này. Trong trường hợp của tôi, khả năng không ghi đè lên các bản sao lưu được sao chép trước đó hoặc nhân bản hai thư mục sao lưu được thực hiện dễ dàng mà không cần thêm kịch bản.
kermatt

1

Đại lý của bạn cần truy cập vào các chia sẻ mạng. Họ không cần phải được lập bản đồ trước.

Bạn làm như thế này:

BACKUP DATABASE myDB TO DISK = '\\machine\share\dir\file.bak'

Tôi tin rằng nếu người dùng sở hữu công việc là một sysadmin sql, thì nó chạy dưới tác nhân, nếu không thì nó chạy như người dùng không phải là sysadmin.


1

Nếu SQL Server không chạy trong tài khoản miền, bạn có thể ánh xạ ổ đĩa mạng cho tài khoản sqlserver (không phải tài khoản của bạn) theo mô tả trong câu trả lời stackoverflow này

Trước tiên, bạn cần kích hoạt xp_cmdshell

-- allow changes to advanced options 
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO

Sau đó, bạn có thể ánh xạ ổ đĩa bằng cách sử dụng:

EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'

Cuối cùng, bạn có thể sao lưu vào ổ đĩa được ánh xạ đó:

BACKUP DATABASE myDB TO DISK = 'z:\file.bak'

0

Hãy ghi nhớ ở đây rằng SQL Server rất không dung nạp được sự chậm trễ của mạng. Nếu chúng xảy ra, và chúng có xu hướng, sao lưu sẽ thất bại. Tôi không khuyến khích thực hành này cho tất cả các môi trường sản xuất.

Tốt hơn để sao lưu cục bộ và sau đó sao chép.


0

Cách dễ nhất là tạo một ổ đĩa .vhd trên mạng chia sẻ thông qua quản lý đĩa và gán ký tự ổ đĩa cho nó. SQL có thể truy cập ổ đĩa này mà không cần sửa đổi gì.

Chỉ cần thêm một tập lệnh Diskpart.exe vào bộ lập lịch khi khởi động để tự động đính kèm khi khởi động lại.

ví dụ chọn tập tin vdisk = "\ {địa chỉ ip / máy chủ} {networkshare} {filenamep.vhd}" đính kèm vdisk // ghi nhớ ký tự ổ đĩa cuối cùng được gán cho.

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.