首页 > 解决方案 > 使用 C++ sql.h 备份 SQL 数据库

问题描述

我试图使用 C++ 创建一个 backup.bak 文件。当我使用这个命令

BACKUP DATABASE myDB TO DISK = 'D:\folder\MyDatabase.bak'

在 Microsoft SQL Server 管理中它工作得很好

但是当我使用 C++ 执行相同的命令时

SQLExecDirect(SQLStatementHandle, (SQLCHAR*)SQLQuery2, SQL_NTS)

我得到错误号 42000,这意味着 -- 语法错误或访问冲突 *StatementText 包含无法准备的 SQL 语句或包含语法错误。

用户无权执行 *StatementText 中包含的 SQL 语句。

https://docs.microsoft.com/de-de/sql/odbc/reference/syntax/sqlexecdirect-function?view=sql-server-2017

虽然命令是一样的

标签: c++mysqlsqlsql-server

解决方案


用户无权执行...中包含的 SQL 语句

这是因为备份操作需要可以授予的额外权限:

在服务器级别:

GRANT BACKUP DATABASE TO [loginInUse]

或者,在某些特定的数据库级别:

use db
EXEC sp_addrolemember 'db_backupoperator', 'loginInUse'

推荐阅读