以编程方式备份​​到sql文件

时间:2013-07-09 20:10:06

标签: c# .net sql sql-server vb.net

在Visual Studio中,我可以使用"发布到提供程序"将整个数据库及其所有数据,模式等导出到 .sql转储文件。选项。有没有办法用C#或VB.NET生成该文件?

3 个答案:

答案 0 :(得分:2)

您可以尝试使用此代码,

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "Cmd.exe";
psi.Arguments = "/C sqlcmd -S servername -E -Q " + 
                "\"BACKUP DATABASE [dbname] TO  DISK = " + 
                "N'D:\\TEMP\\test.bak' WITH NOFORMAT, INIT,  " + 
                "NAME = N'dbname-Complete Backup', " + 
                "SKIP, NOREWIND, NOUNLOAD,  STATS = 10\"";

Process.Start(psi);

当然,您需要将servername替换为您的服务器名称,dbname使用您的首选输出名称替换数据库名称和目标文件名(d:\temp\test.bak) 。
最后,您将拥有一个包含数据库完整备份的文件。您只能在相同或较新版本的Sql Server上恢复此文件

答案 1 :(得分:1)

SQL SMO可以为您提供一个选项,我长期用它来进行模式生成,看一下this,虽然它最初只说模式,但后来又指的是包含脚本数据的选项在哪里说: -

If you want to include the data as well in the script then write
options.ScriptData = true;

答案 2 :(得分:0)

您可以使用sqlcmd执行许多不同的备份操作。例如,要获取.BAK文件,您可以从批处理文件或命令行运行以下内容...

sqlcmd -S host\DBName -E -Q "BACKUP DATABASE [Name_of_Database] TO DISK=’X:PathToBackupLocation[Name_of_Database].bak’"

*编辑

由于OP似乎正在寻找DDL和DML来重新创建数据库,而不是.BAK文件,上面的内容并不是他所需要的,但我会把它留在这里,以防它帮助其他任何人。

为了满足OP的需求,您可能想要查看SMO库。

另见这些SO帖子......

https://stackoverflow.com/a/1162348/1246574

Programmatically generate script for all objects in a database