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