如何使用 Transact-SQL (Osql 工具)备份 Microsoft 数据引擎数据库MSDE的方法

Tagged:  

SQL 企业管理工具都不是 Microsoft Data Engine (MSDE) 安装一部分。MSDE 2000没有自己的用户界面,因为它主要设计为在后台运行 因此, 唯一工具是 osql 来备份 MSDE 数据库, 可使用 Transact - SQL BACKUP DATABASE 语句, 这是本文中讨论。

如果您有 Microsoft Access 2000, 您是 Access 项目 数据库实用工具 菜单中使用 BACKUP 命令来备份了 MSDE 数据库。 如果安装 SQLServer 客户工具, 可用于 SQLEnterpriseManager 备份 MSDE 数据库。

但是, 如果只有 MSDE 安装, 您没有这些选项。 因此, 来备份了 MSDE 数据库, 您可以使用 Transact - SQL BACKUP DATABASE 语句, 并运行 Osql.exe (命令行查询工具)。

注意 以下代码是如何与 MSDE 使用各种存储过程来执行备份的示例。 此代码 不 备份使命关键数据库 " 作为并可能需要对您环境中运行某些修改 "。 例如, 数据库名称、 服务器名称, 等。

• 以下 Transact-SQL 脚本粘贴到记事本, 并再保存到名为 MyBackupScript.sql 文件:

--This Transact-SQL script creates a backup job and calls sp_start_job to run the job.
-- Create job.
-- You may specify an e-mail address, commented below, and/or pager, etc.
-- For more details about this option or others, see SQL Server Books Online.
USE msdb
EXEC sp_add_job @job_name = 'myTestBackupJob',
@enabled = 1,
@description = 'myTestBackupJob',
@owner_login_name = 'sa',
@notify_level_eventlog = 2,
@notify_level_email = 2,
@notify_level_netsend =2,
@notify_level_page = 2
-- @notify_email_operator_name = 'email name'
go
-- Add job step (backup data).
USE msdb
EXEC sp_add_jobstep @job_name = 'myTestBackupJob',
@step_name = 'Backup msdb Data',
@subsystem = 'TSQL',
@command = 'BACKUP DATABASE msdb TO DISK = ''c:\msdb.dat_bak''',
@on_success_action = 3,
@retry_attempts = 5,
@retry_interval = 5
go
-- Add job step (backup log).
USE msdb
EXEC sp_add_jobstep @job_name = 'myTestBackupJob',
@step_name = 'Backup msdb Log',
@subsystem = 'TSQL',
@command = 'BACKUP LOG msdb TO DISK = ''c:\msdb.log_bak''',
@on_success_action = 1,
@retry_attempts = 5,
@retry_interval = 5
go
-- Add the target servers.
USE msdb
EXEC sp_add_jobserver @job_name = 'myTestBackupJob', @server_name = N'(local)'
-- Run job. Starts the job immediately.
USE msdb
EXEC sp_start_job @job_name = 'myTestBackupJob'

• 从命令行, 使用 osql 语法来运行 Transact-SQL 脚本:

OSQL -Usa -PmyPasword -i myBackupScript.sql -n

可能要计划作业代替手动运行它。 要这样做, 可用于早期代码创建作业。 不用调用要运行作业手动, sp_start_job 存储过程可用于 sp _ add _ jobschedule 存储过程配置作业在运行在指定日期和时间。 SQL 代理管理作业安排。 此代码演示使用 sp _ add _ jobschedule 存储过程:

-- Use the job creation code from the previous sample and call sp_add_jobschedule instead of sp_start_job.
-- Schedule job.
USE msdb
EXEC sp_add_jobschedule @job_name = 'myTestBackupJob',
@name = 'ScheduledBackup_msdb',
@freq_type = 4, --daily
@freq_interval = 1, --once
@active_start_time = '153000' --(3:30 pm) 24hr HHMMSS.
go
--Use the following code to remove or delete the backup job, created earlier, and then remove the job from the Scheduler.
-- Delete scheduled job.
USE msdb
EXEC sp_delete_jobschedule @job_name = N'myTestBackupJob',
@name = N'ScheduledBackup_msdb'
-- Delete job.
USE msdb
EXEC sp_delete_job @job_name = N'myTestBackupJob'

如果做不希望创建备份作业或计划备份, 使用 osql 运行 BACKUP DATABASE (或 BACKUP LOG) 语句直接从命令行。 如果您使用 - Q 参数, osql 运行 Transact-SQL 语句, 然后退出。 例如:

OSQL -Usa -PmyPasword -n -Q "BACKUP DATABASE msdb TO DISK = 'c:\msdb.dat_bak'"

更多信息请参考:http://support.microsoft.com/kb/325003/zh-cn