![通过网络将MSSQL数据库备份到客户端本地磁盘](https://linux22.com/image/16231/%E9%80%9A%E8%BF%87%E7%BD%91%E7%BB%9C%E5%B0%86MSSQL%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%87%E4%BB%BD%E5%88%B0%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%9C%AC%E5%9C%B0%E7%A3%81%E7%9B%98.png)
我正在尝试MSSQL
从 Linux 备份服务器。我可以使用tsql
(来自 freetds 项目)连接到服务器,我什至可以使用备份数据库命令备份服务器上的数据库,但我无法将此备份下载到计算机上我用来连接到MSSQL
服务器。
如果这是一台mySQL
服务器,我可以使用下载数据库的备份mysqldump
。我可以为 Linux 中的 MSSQL 服务器做类似的事情吗?
答案1
在 Linux 计算机上安装 mssql-tools 包,其中包括 sqlcmd 实用程序。您可以使用适用于您的 Linux 发行版的包管理器来安装它。
安装 mssql-tools 后,您可以使用以下命令执行备份:
sqlcmd -S <server_name> -U <username> -P <password> -Q "BACKUP DATABASE <database_name> TO DISK='<backup_file_path>'"
将 <server_name> 替换为 SQL Server 实例的名称或 IP 地址以及访问服务器的相应凭据,将 <database_name> 替换为要备份的数据库的名称,将 <backup_file_path> 替换为所需的位置和文件名用于备份文件。
例如:
sqlcmd -S localhost -U sa -P mypassword -Q "BACKUP DATABASE MyDatabase TO DISK='/backup/MyDatabase.bak'"
该命令将执行并执行数据库备份。生成的备份文件将保存到指定位置。
请注意,您可能需要根据特定的 SQL Server 配置和身份验证方法调整命令。此外,请确保运行 sqlcmd 命令的用户具有执行备份操作的适当权限。
创建备份文件后,您可以使用各种方法(例如 SCP、SFTP 或任何其他文件传输协议)将其下载到本地计算机,具体取决于您的网络设置和首选项。
答案2
这个问题关于SO建议一种可能的方法:将数据从 MSSQL 转储到 MySQL。然后你就可以使用你熟悉的MySQL工具了。
对于 MSSQL -> MySQL 转储,有几种建议的方法,因此请选择您的方法。
答案3
您无法使用 mysql 客户端连接到 mssql 服务器。 MSSQL 是基于 Windows 的 SQL 数据库服务,而 MySQL 是完全不同的协议,MSSQL 是完全不同的协议。正是 TDS 协议将两者分开。如果你想从 Unix 上的工具连接到 MSSQL 服务,那么有很多这样的工具。您可以使用 FreeTDS、PyMSSQL、ODBC/JDBC 方法。
如果您正在寻找一些现成的方法工具,那么我知道的工具很少:
http://sqldump.sourceforge.net/
看看他们。
脆弱,
mysqldump 实用程序支持数据库备份文件到本地磁盘位置,但 mssql 或 sybase 似乎没有直接提供这种灵活性。然而,在 MSSQL 中,我们可以将数据库备份文件写入 UNC 路径(例如网络共享),这些路径也可以称为本地安装在 mssql 数据库服务器上的远程文件系统路径。还可以直接从 SQL 命令本身支持 ftp BACKUP DATABASE
,因此可以将数据库备份文件作为流上传到 ftp 上传位置。不过,仍需考虑带宽差异和协议限制。如果您可以在本地计算机上设置 winbind/smb 共享,并且可以使其在工作组/AD 域中可用,然后可由 MSSQL 服务器访问,那么使用 UNC 路径会很好;前提是有网络带宽限制。如果是本地的,我会选择它,以确保覆盖所有安全要素。
如果是 ftp,那就很简单,因为 ftp 管理完全是本地的,您可以在 ftp 文件系统区域限制上传路径。您无需担心 samba 加入/AD 用户要求等问题。只是 ftp 服务作为纯粹的网络位置,也许会强制执行安全权限。顺便说一句,请确保您的转储是安全的,如果是生产,我将加倍确保它们的安全:-)