【发布时间】:2017-08-14 05:35:36
【问题描述】:
我想将远程 SQL Server 数据库备份到本地计算机上。
到目前为止我已经尝试过:
using (SqlConnection defaultSqlConnection = new SqlConnection(Constants.Database_Constants.GetConnectionStringFromProfile(Constants.Profiles.Staging)))
{
string pathDatabase = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\backup_production_database"+DateTime.UtcNow.ToString("d_MMM_yyyy_HH_mm_ss", CultureInfo.InvariantCulture)+".bak";
WriteLine("The backup will be stored in " + pathDatabase);
string backupDb = "BACKUP DATABASE DB_Staging TO DISK = '" + pathDatabase+ "' WITH INIT, COMPRESSION";
File.Create(pathDatabase);
using (SqlCommand backupCommand = new SqlCommand(backupDb, defaultSqlConnection))
{
defaultSqlConnection.Open();
backupCommand.ExecuteNonQuery();
}
}
但我收到此错误:
无法打开备份设备“XXXX\bin\Debug\backup_production_database22_Mar_2017_08_04_42.bak”。 操作系统错误3(系统找不到指定的路径。)。 BACKUP DATABASE 异常终止。
我知道我可以使用 SQL Server Management Studio 生成脚本,但它对我没有帮助。我想在 powershell 脚本中自动备份我的数据库,而无需手动进入 SQL Server Management Studio
【问题讨论】:
-
使用该方法,文件将被写入 SQL 服务器本地文件系统。所以,这就是它不喜欢路径的原因。
-
也许您应该从服务器复制 pendrive 上的数据库并粘贴到您的计算机上
-
如果您想从 remote SQL Server 创建备份到本地计算机的文件系统,您必须在本地计算机上创建一个 share 指向到本地文件系统上的目录,然后在服务器上的路径
\\YourPC\YourBackupShare\.......中使用 UNC 表示法 - 前提是服务器 可以 连接到本地系统,以及远程 SQL Server 实例的用户运行在有权限编写你自己的本地文件系统.....
标签: c# sql-server powershell