想要将文件路径作为参数传递给存储过程,但保存到默认位置并将其命名为参数的第一个字母

时间:2018-01-08 15:33:39

标签: sql ado

它不是在指定的文件路径上创建备份,而是在SSMS中像普通查询一样运行时,它会在默认位置创建备份,并调用文件“N' N'在这种情况下,但当我更改文件路径以删除N时,它会将其称为offtraphe。

我的存储过程:

ALTER PROCEDURE [dbo].[BackUpTo]
    -- Add the parameters for the stored procedure here
    @FilePath nvarchar 
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    -- N'c:\temp\backups\lob_backup.bak'
    BACKUP DATABASE [lob]
    TO DISK = @FilePath
END

打电话给我的测试:

try
{
    SqlCommand cmd = new SqlCommand("BackUpTo", conn);

    cmd.CommandType = CommandType.StoredProcedure;

    SqlParameter filepath = cmd.Parameters.Add("@FilePath", SqlDbType.NVarChar);
    filepath.Direction = ParameterDirection.Input;
    filepath.Value = @"N'c:\temp\backups\lob_backup.bak'";

    conn.Open();
    cmd.ExecuteNonQuery();
}

finally
{
        conn.Close();
}

编辑:

HoneyBadger指出的解决方案是我没有设置长度,因此默认为1(第一个字符)。

0 个答案:

没有答案