扩展存储过程xp_create_subdir返回"无效参数"信息

时间:2016-04-25 14:20:46

标签: sql-server stored-procedures subdirectory

自2005版以来,Microsoft SQL Server允许创建路径(如果它不存在)。只需调用带有参数的存储过程,该参数将指向磁盘上的所需路径。

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

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

  

Msg 22048,Level 15,State 0,Line 0   执行扩展存储过程时出错:参数无效

如果您将代码更改为

,这很奇怪
exec xp_create_subdir N'E:\backup'

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

1 个答案:

答案 0 :(得分:4)

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

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

并执行以下语句

exec xp_create_subdir @targetDirectory

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

  

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

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

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