是否可以从 Linux 命令行备份 MS SQL 数据库?

是否可以从 Linux 命令行备份 MS SQL 数据库?

Is it possible to create a local backup file of a remote Microsoft SQL Server database, from a linux command line?

I know I can use SQLCMD from a Windows command line, but is the same possible from a linux box?

答案1

When you issue a backup command with sqlcmd from a windows command line, you are telling the server to backup a database. sqlcmd just relays the command; it doesn't really know what you have asked SQL Server to do. I would be surprised if any other tool worked in any other way.

SQL Server expects to write (and read, if required) backups to either local storage (something with a drive letter, like c:\temp\mybackupdir) or a UNC path (something that looks like \hal9000\mybackupshare).

只要 Windows 可以欺骗 SQL Server 认为它是“真正的”本地驱动器,本地路径就可以是 iSCSI 设备。SQL Server 中没有内置对 nfs、ftp、scp 或类似内容的支持。我知道和/或假设有软件可以使 nfs 或 ftp“共享”看起来像本地路径。我不太确定 scp。也没有可以通过 netcat 转换成文件的原始数据输出。

另一个常见问题是,在 Windows 上,驱动器映射是针对每个用户的。这意味着您可以登录到该 Windows 计算机,使用存储的凭据永久映射 R 驱动器(或任何驱动器),而 SQL Server 将看不到该映射,因为 SQL Server 服务可能在不同的帐户下运行。

UNC 路径可以是 Samba 服务器上的共享,该服务器可以与您运行 *nix 命令工具的同一主机上。

答案2

你必须注意 bitplayer 提到的问题,但你可以使用以下命令在 Linux 中远程运行 SQL自由TDS还有一个 Perl 模块可以运行它:http://www.perlmonks.org/?node_id=392385

您可以使用它来远程运行执行备份所需的 SQL。然后,您可以在 Linux 中安装 Windows 共享来提取备份文件,除非您有其他方法将备份文件发送到您想要的位置。

答案3

搜索 SQL 服务器的 ODBC 驱动程序以在您的操作系统上运行。使用此 ODBC,您可以连接(前提是您有权限)并向 SQL 服务器发送备份命令。如果您可以将 UNC 路径映射到本地驱动器,则可以备份到此位置。

相关内容