簡體   English   中英

無法執行完整的SQL備份

[英]Can not execute a Full SQL backup

我是SQL新手。 在我工作的地方,我得到了一種關於自動執行完全SQL備份的新型工作。 幾乎可以了,它可以從SQL Server Management Studio作為查詢工作。 (通過我必須在服務器上執行的方式),所以我嘗試以這種方式執行此查詢:“-sqlcmd -E -S EUTAX-WS \\ REMEK -i D:\\ Programs \\ FastGlacier \\ backupAllDB.sql”,它可以在我的電腦上工作。 但在服務器沒有。

有我的批處理文件

sqlcmd -E -S EUTAX-WS\REMEK -i D:\Programs\FastGlacier\backupAllDB.sql

還有我的SQL查詢

DECLARE @name VARCHAR(50) -- database name  
DECLARE @path VARCHAR(256) -- path for backup files  
DECLARE @fileName VARCHAR(256) -- filename for backup  
DECLARE @fileDate VARCHAR(20) -- used for file name 

-- please change the set @path = 'change to your backup location'. for example,  
-- SET @path = 'C:\backup\' 
-- or SET @path = 'O:\sqlbackup\' if you using remote drives
-- note that remotedrive setup is extra step you have to perform in sql server in order to backup your dbs to remote drive 
-- you have to chnage you sql server accont to a network account and add that user to have full access to the network drive you are backing up to

SET @path = 'd:\Backup\Remek\'  

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 

DECLARE db_cursor CURSOR FOR  
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb')  

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   

WHILE @@FETCH_STATUS = 0   
BEGIN   
       SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
       BACKUP DATABASE @name TO DISK = @fileName  

       FETCH NEXT FROM db_cursor INTO @name   
END   

CLOSE db_cursor   
DEALLOCATE db_cursor 

而當我嘗試執行它時,出現以下錯誤: 服務器主體“”無法在當前安全上下文下訪問數據庫“”。

我應該以某種方式添加權限,但我不能這樣做!

請嘗試授予包含文件夾的腳本的權限,即d:\\ backup

在Windows資源管理器中,右鍵單擊要使用的文件或文件夾。

從彈出菜單中選擇“屬性”,然后在“屬性”對話框中單擊“安全性”選項卡。

在“名稱”列表框中,選擇要查看其權限的用戶,聯系人,計算機或組。

如果權限為灰色,則表示權限是從父對象繼承的。

您可以使用SqlCmd命令行工具通過簡單的批處理腳本來執行此操作:

@ECHO OFF

REM Location to store the BAK files.
SET BackupDir=C:\Location\To\Save
REM SQL Connection information.
SET Switches=-E -S %ComputerName%

REM Pull online user databases.
FOR /F "usebackq tokens=*" %%A IN (`SqlCmd %Switches% -W -h-1 -Q "SET NoCount ON; SELECT [Name] FROM sys.databases WHERE [State]=0 AND NOT [Name] IN ('master','model','msdb','tempdb')"`) DO (
    REM Backup each.
    ECHO Database: %%A
    SqlCmd %Switches% -Q "BACKUP DATABASE [%%A] TO DISK='%BackupDir%\%%A.bak'"
)
sqlcmd -U "username" -P "password" -i D:\Programs\FastGlacier\backupAllDB.sql

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM