在 Visual Studio 中,我可以使用“发布到提供程序”选项将整个数据库及其所有数据、架构等导出到.sql 转储文件。有没有办法用 C# 或 VB.NET 生成该文件?
问问题
1382 次
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 帖子...
于 2013-07-09T20:13:52.027 回答