扩展存储过程xp_create_subdirreturns"Invalid Parameter"消息

Extended stored procedure xp_create_subdir returns "Invalid Parameter" message

自版本 2005 Microsoft SQL 服务器允许创建不存在的路径。只需使用指向磁盘上所需路径的参数调用存储过程。

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 Error executing extended stored procedure: Invalid Parameter

奇怪的是,如果您将代码更改为

exec xp_create_subdir N'E:\backup'

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

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

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

并执行以下语句

exec xp_create_subdir @targetDirectory

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

Command(s) completed successfully. in the message window.

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

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