如何部署 Sql 服务器数据库作为应用程序设置的一部分?
How can I deploy a Sql Server database as part of an application's setup?
我想通过 C# (.Net 4.0) 程序将一个(尚不存在的)数据库从 .bak 文件恢复到远程数据库服务器。
我知道无法通过 SQL 脚本执行此操作,因为 .bak 文件需要位于 SQL 服务器计算机上。可以通过 C# 实现吗?
基本上我想要这个:
public bool RestoreDatabase(FileInfo backupFile, string connectionString, string dbName)
{
// Magically Restore Database
// Throw Exception on error (Db already exists, file not found, etc)
}
在我投入数小时的编程和调查之前,我想知道这在技术上是否可行,或者我是否必须将 .bak 文件传输到 SQL 服务器。
编辑:
上下文是,我想尽量减少 "manual" 当前项目中需要完成的工作。目前,在新环境中安装软件时,必须有人通过将 .bak 文件复制到 SQL 服务器,打开 SQL 服务器管理器并在那里恢复数据库来手动安装数据库。需要 2 个数据库,这些数据库可能被放置在 2 个不同的 SQL 服务器上。
我的想法是 运行 1 在与 SQL 服务器处于同一网络的任何系统上进行编程,输入 SQL 登录凭据,并从一个系统恢复数据库,没有任何网络驱动器。因为这将再次意味着手动配置(将 .bak 文件复制到网络驱动器,启用 SQL 服务器访问网络驱动器 [实际上你可以直接将文件复制到 SQL 服务器],我想要避免它。
编辑2:
由于不同的上下文相关问题,我无法将数据库导出为 SQL/DACPAC/Snapshot。遗憾的是它必须是.bak。
你问了"Is it possible via C# though?"。
答案是否定的,通过 C# 是不可能的。
正如@Mithrandir 在评论中所说,计算机 运行 SQL 服务器必须能够以某种方式访问物理备份文件。这意味着文件要么需要位于该计算机上的某个位置,要么必须驻留在该计算机可以访问的文件共享上。
另一种选择是生成 sql 脚本,将整个数据库 even with initial data 创建为 INSERT 语句。届时您无需传输任何 BAK 文件。
我想通过 C# (.Net 4.0) 程序将一个(尚不存在的)数据库从 .bak 文件恢复到远程数据库服务器。
我知道无法通过 SQL 脚本执行此操作,因为 .bak 文件需要位于 SQL 服务器计算机上。可以通过 C# 实现吗?
基本上我想要这个:
public bool RestoreDatabase(FileInfo backupFile, string connectionString, string dbName)
{
// Magically Restore Database
// Throw Exception on error (Db already exists, file not found, etc)
}
在我投入数小时的编程和调查之前,我想知道这在技术上是否可行,或者我是否必须将 .bak 文件传输到 SQL 服务器。
编辑: 上下文是,我想尽量减少 "manual" 当前项目中需要完成的工作。目前,在新环境中安装软件时,必须有人通过将 .bak 文件复制到 SQL 服务器,打开 SQL 服务器管理器并在那里恢复数据库来手动安装数据库。需要 2 个数据库,这些数据库可能被放置在 2 个不同的 SQL 服务器上。
我的想法是 运行 1 在与 SQL 服务器处于同一网络的任何系统上进行编程,输入 SQL 登录凭据,并从一个系统恢复数据库,没有任何网络驱动器。因为这将再次意味着手动配置(将 .bak 文件复制到网络驱动器,启用 SQL 服务器访问网络驱动器 [实际上你可以直接将文件复制到 SQL 服务器],我想要避免它。
编辑2: 由于不同的上下文相关问题,我无法将数据库导出为 SQL/DACPAC/Snapshot。遗憾的是它必须是.bak。
你问了"Is it possible via C# though?"。
答案是否定的,通过 C# 是不可能的。
正如@Mithrandir 在评论中所说,计算机 运行 SQL 服务器必须能够以某种方式访问物理备份文件。这意味着文件要么需要位于该计算机上的某个位置,要么必须驻留在该计算机可以访问的文件共享上。
另一种选择是生成 sql 脚本,将整个数据库 even with initial data 创建为 INSERT 语句。届时您无需传输任何 BAK 文件。