当前位置: 首页 > 编程语言 > C#

使用c#创建SQL Server备份文件(.bak)到任何位置分享

时间:2023-04-10 14:10:21 C#

C#学习教程:使用c#创建一个SQLServer备份文件(.bak)到任何地方我备份、压缩和ftp我的SQLServer数据库。我遇到的一个问题是,如果我尝试在“C:\ProgramFiles\MicrosoftSQLServer\MSSQL.3\MSSQLBackup”以外的位置执行此操作,则无法创建备份文件(.bak)或“C:\ProgramFiles\MicrosoftSQLServerMSSQL.3MSSQLData”文件夹。我知道这是一个延期问题。有人可以指出我的资源或在这里写一个简短的片段如何以编程方式将此类权限添加到我系统上的任何文件夹。关注Chris我假设您正在将程序作为计划任务运行...您是否为任务的执行用户授予了对目标文件夹的写访问权限?编辑:有了权限,您可以有两种情况:如果您使用的是Windows身份验证,您将获得Windows用户的读写权限。否则sqlserver服务帐户的权限。虽然这种行为对我来说很有意义,但它可能会影响您的场景!编辑2:我不想鼓励你这样做......当你弄乱他们的acls时,有些管理员可能会讨厌你,但这可能会起作用顺便说一句:MagnusJohansson已经给了你一个“试试这个”链接无论哪个你采取的方法-一定要将它提供给正确的用户(如上所述!)(完整历史记录)...旁注:我知道这不是你问题的确切答案,但我建议你smo生成备份...喜欢使用Microsoft.SqlServer.Management.Smo;varbdi=newBackupDeviceItem(/*包含所需文件的路径*/);varbackup=newBackup{Database=/*数据库名称*/,Initialize=true};备份。设备。添加(bdi);varserver=newServer(this.SqlServer);尝试{backup.SqlBackup(server);}catch(Exceptionex){//*logorsth}你只需要关心.dll。获取所需服务器版本的程序集(一些参数/属性因服务器版本而异)更多信息,好家伙,Magnus和dittodhole!非常感谢您的帮助。我将Magnus'es链接到关于设置文件夹权限的文章和一些更多的研究,最后我明白了:)。所以回顾一下,我正在使用Smo,并创建一个具有适当权限的文件夹,我必须查找组而不是win32_Users。如果有人发现这篇文章,他可能会觉得它有用,您可以在这里找到一个简短的片段:stringtempPath=Directory.CreateDirectory("C:\path_to_your_folder").FullName;//设置权限SelectQuerysQuery=newSelectQuery("Win32_Group","Domain='"+System.Environment.UserDomainName.ToString()+"'");尝试{DirectoryInfomyDirectoryInfo=newDirectoryInfo("C:\path_to_your_folder");目录安全myDirectorySecurity=myDirectoryInfo.GetAccessControl();ManagementObjectSearchermSearcher=newManagementObjectSearcher(sQuery);foreach(ManagementObjectmObjectinmSearcher.Get()){stringUser=System.Environment.UserDomainName+"\"+mObject["Name"];if(User.StartsWith("your-machine-name\SQL")){myDirectorySecurity.AddAccessRule(newFileSystemAccessRule(User,FileSystemRights.FullControl,AccessControlType.Allow));}}myDirectoryInfo.SetAccessControl(myDirectorySecurity);}catch(Exceptionex){Console.WriteLine(ex.StackTrace);}再次感谢你的帮助!Stackoverflow摇滚!这是C#中的备份过程。希望它有帮助publicvoidBackupDatabase(stringBackUpLocation,stringBackUpFileName,stringDatabaseName,stringServerName){字符串fileUNQ=DateTime.Now.Day.ToString()+"_"+DateTime.Now.Month.ToString()+"_"+DateTime.Now.Year.ToString()+"_"+DateTime.Now.Hour.ToString()+DateTime.Now.Minute.ToString()+"_"+DateTime.Now.Second.ToString();BackUpFileName=BackUpFileName+fileUNQ+".bak";stringSQLBackUp=@"BACKUPDATABASE"+DatabaseName+"TODISK=N'"+BackUpLocation+@""+BackUpFileName+@"'";stringsvr="Server="+ServerName+";Database=master;IntegratedSecurity=True";SqlConnectioncnBk=newSqlConnection(svr);SqlCommandcmdBkUp=newSqlCommand(SQLBackUp,cnBk);尝试{cnBk.Open();cmdBkUp.ExecuteNonQuery();Label1.Text="完成";Label2.Text=SQLBackUp+"########服务器名称"+ServerName+"数据库"+DatabaseName+"成功备份到"+BackUpLlocation+@""+BackUpFileName+"n备份日期:"+DateTime.Now.ToString();}catch(Exceptionex){Label1.Text=ex.ToString();Label2.Text=SQLBackUp+"########服务器名称"+ServerName+"数据库"+DatabaseName+"成功备份到"+BackUpLocation+@""+BackUpFileName+"n备份日期:"+DateTime.Now.ToString();}finally{if(cnBk.State==ConnectionState.Open){cnBk.Close();}}}看看这篇文章,记得给运行SQLServer实例的账户设置权限。虽然这可能无法回答您的直接问题,但我建议您查看SQLServerIntegrationServices(SSIS)。这看起来像SSIS的创建方式,在2008版本中,如果标准组件不能满足您的需求(早期版本使用VB.NET),您可以根据需要使用C#代码。MSDNSSIS信息链接1SSIS2005教程链接2检查一下。以上就是C#学习教程:使用c#创建SQLServer备份文件(.bak),随时随地分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: