【问题标题】:Backup DB on Remote SQL Server Express远程 SQL Server Express 上的备份数据库
【发布时间】:2010-12-14 00:29:30
【问题描述】:

我需要创建一个 TSQL 脚本来备份远程 SQL Server Express (2005) 上的数据库。我在另一个盒子上有一个 SQL Server 2005。不知道如何从这个 SQL Server 2005 运行脚本来完成备份工作。

脚本是这样的:

RESTORE DATABASE [myDB] FROM  DISK = N'C:\Tmp\myDB.bak' WITH  FILE = 1,
   NOUNLOAD,  STATS = 10

实际上,我使用 SQL Server Management Studio Express 在远程 SQL Server Express 上尝试了这个 SQL 脚本,它运行正常。我问这个问题的原因是我可以在 SQL Server 2005 上安排作业,但不能在远程 SQL Server Express 上创建安排作业。

我认为另一种方法是首先在 SQL Server Express 上创建一个 SQL SP。然后我将编写一个简单的控制台应用程序来连接到 SQL 并将 SP 作为 Windows 计划作业运行。

【问题讨论】:

    标签: sql-server-2005 sql-server-express


    【解决方案1】:

    TSQL 不需要这样做。 SQL Server(也称为 Express)包含一个名为 sqlmaint.exe 的实用程序,它允许您在本地或远程 SQL 服务器上执行备份操作。只需使用正确的命令行参数 (documentation) 编写一个调用 sqlmaint 的批处理文件,然后将此批处理文件放入 Windows 调度程序。

    如果你还想通过 TSQL 来做,SQL Server 还包含 osql.exe,它允许你在本地或远程服务器上执行任意 SQL 语句。同样,您可以使用简单的批处理文件将其自动化。

    编辑:如果您想使用自己的应用程序调用 TSQL 脚本,了解您选择的编程语言或数据访问技术可能会有所帮助。

    【讨论】:

    • 阅读文档。什么是 PlantName 或 PlantID?我如何定义一个?我的理解是一个计划定义了一个数据库列表(在我的例子中是一个远程 SQL Server Express 中的数据库列表。
    • 您不需要 PlanName 或 PlanID。看看页面末尾的最后一个示例。
    • 所以,在你的情况下,你会使用类似“sqlmaint -S myServer -D myDB -BkUpDB C:\Tmp”的东西。但是请注意,备份文件的名称是自动生成的(请参阅该页面上的 BkUpDB)。如果需要固定文件名,可以考虑 osql 解决方案。
    • 感谢@Heinzi 提供的信息。通过使用 -S -D,我可以从一台服务器进行一次备份。不确定我是否可以使用 Plan 从服务器列表中备份数据库列表?顺便问一下,sqlmaint.exe 是否适用于 SQL Server Express? MSDN 说它适用于 SQL Server 2005。
    • 我可以运行 exe,但出现错误。有什么遗漏吗?这是错误:[Microsoft SQL-DMO (ODBC SQLState: 08001)] 错误 0:[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝。 [Microsoft][ODBC SQL Server 驱动程序][DBNETLIB]ConnectionOpen (Connect())。
    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多