[英]SQL Server error "Operand type clash: varchar is incompatible with int "
I have made below stored procedure for taking the backup of a database我已经制作了以下用于备份数据库的存储过程
CREATE PROCEDURE [dbo].[usp_databasebackup]
@DatabaseName NVARCHAR(200),
@Path NVARCHAR(500)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sqlQuery VARCHAR(5000)
BEGIN
SET @sqlQuery = ' BACKUP DATABASE ['+@DatabaseName+'] TO DISK = N''D:\@DatabaseName.bak''
WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = N''@DatabaseName-Full Database Backup'',
SKIP, NOREWIND, NOUNLOAD, STATS =''10'' '
EXEC (@sqlQuery)
END
END
GO
When I execute the stored procedure with a database name and path as parameters, I get this error:当我使用数据库名称和路径作为参数执行存储过程时,出现此错误:
Operand type clash: varchar is incompatible with int操作数类型冲突:varchar 与 int 不兼容
You can backup a database without using Dynamic SQL.您可以在不使用动态 SQL 的情况下备份数据库。
You just need to use the backup command like this你只需要像这样使用备份命令
backup database @DatabaseName
to disk=@DiskName
with name=@Name,
compression, format, init, skip, norewind, nounload, stats=10
@DatabaseName
should be sysname
@DatabaseName
应该是sysname
You need to prepare / concatenate names and paths prior to using variables in the backup command - ie, @DiskName
would be a concatenation of a path
and filename
with a ".bak" suffix.在备份命令中使用变量之前,您需要准备/连接名称和路径 - 即, @DiskName
将是带有“.bak”后缀的path
和filename
的连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.