2010-07-26 33 views
5

Câu hỏi của tôi là thẳng về phía trước, làm cách nào tôi có thể lập trình SQL SMO để sao lưu cục bộ bằng cách kết nối với máy chủ từ xa. Tôi muốn lưu tệp bak vào máy cục bộ đang kết nối với máy chủ từ xa. Ngoài ra tôi muốn người dùng chỉ có đặc quyền nhất định mới có thể lưu bản sao lưu cục bộ.SQL Server SMO sao lưu cục bộ từ máy chủ từ xa

Trả lời

6

Bạn không thể - thời gian. Bản sao lưu của SQL Server có thể chỉ được lưu vào đĩa cục bộ - cục bộ với chính Máy chủ SQL.

Bạn không thể với mọi thủ thuật hoặc công cụ sao lưu SQL Server từ xa vào đĩa cứng cục bộ của bạn. Không thể làm được.

4

EDIT: đọc lại câu hỏi của bạn và marc_s trả lời câu trả lời của tôi sẽ chỉ hoạt động nếu máy chủ từ xa bạn đang nói về máy chủ trên mạng của bạn ở đâu đó. Nếu bạn đang nói về một máy chủ SQL lưu trữ trên một tên miền khác một nơi nào đó marc_s là đúng và câu trả lời của tôi là không sử dụng. Tôi sẽ để nó ở đây trong trường hợp bạn đang nói về một máy chủ trong miền của bạn. Chỉnh sửa Kết thúc

Sau khi thiết lập chia sẻ trên thư mục C: \ tmp cục bộ của tôi, hãy chạy bit này của Powershell sao lưu.


[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null 
# may need this instead [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SmoExtended') | out-null 

$datePart = Get-Date -Format "yyyyMMdd_hhmm" 
$targetDir = '\\LocalMachineName\tmp\' # change to fit your specs 
$dbname = "DatabaseNameToBackUp" 

$s = new-object ('Microsoft.SqlServer.Management.Smo.Server') 'remoteSqlServer' 
$bckfile = $targetDir + $dbname + "_" + $datePart + ".bak" 
$dbbk = new-object ('Microsoft.SqlServer.Management.Smo.Backup') 
$bdi = new-object ('Microsoft.SqlServer.Management.Smo.BackupDeviceItem') ($bckfile, 'File') 
$dbbk.Action = 'Database' 
$dbbk.BackupSetDescription = "Full backup of " + $dbname 
$dbbk.BackupSetName = $dbname + " Backup" 
$dbbk.Database = $dbname 
$dbbk.MediaDescription = "Disk" 
$dbbk.Devices.Add($bdi) 
$dbbk.SqlBackup($s) 
$dbbk.Devices.Remove($bdi) |out-null 
$bckfile = $null 

Tôi biết bạn đã không đề cập đến Powershell nhưng vì tôi thấy thẻ .net Tôi nghĩ rằng nó vẫn có thể giúp bạn. Không nên quá nhiều nỗ lực để viết lại cho .net hương vị của bạn lựa chọn.

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