扩展存储过程xp_create_subdir返回“无效参数”消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展存储过程xp_create_subdir返回“无效参数”消息相关的知识,希望对你有一定的参考价值。

从2005版开始,Microsoft SQL Server允许创建路径(如果它不存在)。只需使用参数指向存储过程,该参数将指向磁盘上的所需路

DECLARE @targetDirectory nvarchar(max) = N'E:ackup' 
exec xp_create_subdir @targetDirectory

因此,如果您将上面的代码写入Microsoft SQL Server Management Studio的查询窗格中,则会收到以下错误消息:

消息22048,级别15,状态0,行0执行扩展存储过程时出错:无效参数

如果您将代码更改为,这很奇怪

exec xp_create_subdir N'E:ackup'

并执行它,在所需的路径上创建目录,假设sql服务帐户有权写入。

答案

虽然nvarchar(max)的最大长度为2GB字符,但是如果将@targetDirectory变量声明更改为

DECLARE @targetDirectory nvarchar(4000) = N'E:ackup' 

并执行以下语句

exec xp_create_subdir @targetDirectory

您成功在磁盘E上创建子目录备份:如果它不存在并返回消息

命令已成功完成。在消息窗口中。

原因是存储过程xp_create_subdir不接受nvarchar(max)数据类型。

**编辑:**根据Sean Lange评论,原因是变量长度在上面的陈述中是不同的。

以上是关于扩展存储过程xp_create_subdir返回“无效参数”消息的主要内容,如果未能解决你的问题,请参考以下文章

PDO 存储过程返回值

java中如何获取oracle存储过程返回的多个值。

将存储过程中选择查询的结果返回到列表

27-SQLServer系统扩展存储过程

如何使用多个输出参数执行存储过程?

带参数的ms sql server的扩展存储过程,怎么传递参数