Sql server SQL Server 2008中通过sp_方法发送SMS时出现的问题
我使用下面给定的过程从SQL Server发送短信。它一直工作到昨天晚上 但是,今天我遇到了以下错误:- -2146697212 Msg 50000,16级,状态1,程序pr_SendSmsSQL,第61行 sp_方法发送失败 我添加了sp_OAGetErrorInfo以了解确切的错误,然后在下面给出的消息中显示:- 错误源描述 msxml3.dll无法连接到目标服务器 请指导如何解决这个问题。同一代码在另一台SQL Server上正常运行 存储过程代码:-Sql server SQL Server 2008中通过sp_方法发送SMS时出现的问题,sql-server,Sql Server,我使用下面给定的过程从SQL Server发送短信。它一直工作到昨天晚上 但是,今天我遇到了以下错误:- -2146697212 Msg 50000,16级,状态1,程序pr_SendSmsSQL,第61行 sp_方法发送失败 我添加了sp_OAGetErrorInfo以了解确切的错误,然后在下面给出的消息中显示:- 错误源描述 msxml3.dll无法连接到目标服务器 请指导如何解决这个问题。同一代码在另一台SQL Server上正常运行 存储过程代码:- SET ANSI_NULLS ON
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
/*
Purpose : To send SMS from SQL.
declare @sResponse as varchar(1000)
exec pr_SendSmsSQL '1234567891','This Is a Test SMS From SQL Server - Regards, BSethi24',''
print @sResponse
*/
ALTER Procedure [dbo].[pr_SendSmsSQL]
@MobileNo varchar(12),
@smstext as varchar(300),
@sResponse varchar(1000) OUT
as
BEGIN
Declare @iReq int,@hr int
Declare @sUrl as varchar(500)
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescription VARCHAR(8000)
-- Create Object for XMLHTTP
EXEC @hr = sp_OACreate 'Microsoft.XMLHTTP', @iReq OUT
print @hr
if @hr <> 0
Raiserror('sp_OACreate Microsoft.XMLHTTP FAILED!', 16, 1)
set @sUrl='http://122.22.12.12/smsportal/sendsms.aspx?usr=test&pass=test&senderid=BSethi24&mobileno=#MobNo#&messagetext=#Msg#'
set @sUrl=REPLACE(@sUrl,'#MobNo#',@MobileNo)
set @sUrl=REPLACE(@sUrl,'#Msg#',@smstext)
print @sUrl
-- sms code start
EXEC @hr = sp_OAMethod @iReq, 'Open', NULL, 'GET', @sUrl, true
print @hr
if @hr <> 0
Raiserror('sp_OAMethod Open FAILED!', 16, 1)
EXEC @hr = sp_OAMethod @iReq, 'send'
select @iReq
print @hr
if @hr <> 0
Begin
EXEC sp_OAGetErrorInfo @iReq, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
Raiserror('sp_OAMethod Send FAILED!', 16, 1)
end
else
Begin
EXEC @hr = sp_OAGetProperty @iReq,'responseText', @sResponse OUT
print @hr
insert into s_SmsLog (Id,Mobile_No,SMSText,SMSResponse,Created_By,Created_Date,Modified_By,Modified_Date)
values(0,@MobileNo,@smstext,@sResponse,'System',GETDATE(),null,null)
End
存储过程应该只写入队列表。 外部应用程序应该从那里管理流程,也可以通过存储过程
如果需求证明了一个更可扩展的解决方案,请考虑使用Service Buffer-< /P>