我使用此代码进行备份,但给出了一些错误
问题描述:
private void button1_Click(object sender, EventArgs e)
{
_BackupDatabase("master", "C:\backup");
}
public void _BackupDatabase(string databaseName, string filePath)
{
try
{
Server sqlServerInstance = new Server(
new Microsoft.SqlServer.Management.Common.ServerConnection(
new System.Data.SqlClient.SqlConnection(@"Data Source=GAURAV-31B52EEB\SQLEXPRESS;Initial Catalog=master;Integrated Security=True")));// your connection string I place mine for illustration.. DON'T HARDLY WRITE IT, pass it as argument or add it in application configuration
Backup backupMgr = new Backup();
backupMgr.Devices.AddDevice(filePath, DeviceType.File);
backupMgr.Database = databaseName;
backupMgr.Action = BackupActionType.Database;
backupMgr.SqlBackup(sqlServerInstance);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + " " + ex.InnerException);
}
}
错误
=====================
{服务器" GAURAV-31B52EEB \\ SQLEXPRESS"的备份失败.}
error
======================
{"Backup failed for Server ''GAURAV-31B52EEB\\SQLEXPRESS''. "}
答
可能是权限问题.
Windows 7将访问任何硬盘的根文件夹的权限仅限制为Admin:尝试将备份写入具有任何用户"读写权限的子文件夹.
Chances are it''s a permissions problem.
Windows 7 restricts access to the root folder of any hard disk to Admin only: try writing your backup to a subfolder that has "any user" read and write permissions instead.
Hi use below sp
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Sp_DatabaseBackup]
as
Begin
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- file name for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
SET @path = ''C:\Users\Publishing\Desktop\''
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
End
尝试使用 SQL身份验证进行备份.使用SQL Server用户之一修改您的ConnectionString.
希望对您有帮助,
谢谢
-amit.
Hi,
try to use SQL Authentication to backup. modify your ConnectionString with one of the SQL server user.
hope that may help you,
thanks
-amit.