我们正在测试从本地 MSSQL 数据库迁移到 Azure。
我们有一个旧的 ASP 经典站点,我们需要维护它,它创建一个 ADODB 命令来使用 MSSQL 存储过程存储电子邮件消息。 Body 列的类型为 nvarchar(max)。
ADODB代码如下:
set azurecon = Server.CreateObject("ADODB.Connection")
set azurecmd = Server.CreateObject("ADODB.Command")
azurecon.Open sconn
azurecmd.ActiveConnection = azurecon
azurecmd.CommandType = 4
azurecmd.CommandText = "sp_add_mail"
azurecmd.Parameters.refresh
azurecmd.Parameters("@FromAddress")= fromemail
azurecmd.Parameters("@ToAddress")= toemail
azurecmd.Parameters("@Subject")= subject
azurecmd.Parameters("@Body")= body
azurecmd.Execute
存储过程是:
create PROCEDURE [dbo].[sp_add_mail] ( @FromAddress nvarchar(32),
@ToAddress nvarchar(48),
@Subject nvarchar(160),
@Body nvarchar(max))
AS
INSERT INTO tbl_Mail(FromAddress, ToAddress, Subject, Body)
VALUES ( @FromAddress, @ToAddress, @Subject, @Body )
我们将表和存储过程复制到Azure,但是在运行代码时,我们收到以下错误:参数对象定义不正确。提供的信息不一致或不完整。
但是,如果我们将存储过程从 @Body nvarchar(max) 更改为固定值,例如 @Body nvarchar(4000) ,一切都会正常。
向 Azure 发送 nvarchar(max) 参数时是否有不同的要求?
使用以下作品:
azurecmd.Parameters("@Body").Size = -1
azurecmd.Parameters("@Body")= body