0

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

4

3 回答 3

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 上恢复此文件

于 2013-07-09T20:24:55.643 回答
1

SQL SMO 可以成为你的一个选项,我很久以前就用它来生成模式,看看这个,虽然它最初只说模式,但它后来指的是包括数据脚本的选项以及它说的地方:-

If you want to include the data as well in the script then write
options.ScriptData = true;
于 2013-07-10T05:32:27.380 回答
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

以编程方式为数据库中的所有对象生成脚本

于 2013-07-09T20:13:52.027 回答