从SQL Server中的存储过程调用URL?

Spo*_*oks 6 sql sql-server stored-procedures

只是想知道是否可以从存储过程调用URL(最终将该过程添加到sql作业)当网页刷新我的数据库时,如果我可以自动执行此过程,那将是非常好的.

编辑:

我希望能够通过商店程序请求网页.在所需网页的页面加载上,有一个刷新我的数据库的功能.我希望它每天凌晨4点刷新我的数据库.为了让我不要在凌晨4点手动上网(还在睡觉),我需要别的东西给我做.我认为sql工作会非常好,因为我可以设置时间和工作.我不太了解PowerShell,并且想知道我是否可以请求URL,或者使用存储过程或任何其他方式访问URL.

小智 6

我很确定MS SQL不允许你直接这样做..明显的安全问题.但是,我认为您可以通过使用xp_cmdshell执行vbscript文件来解决它,并在该文件中,为站点创建xmlhttp请求.

xp_cmdshell命令:

EXEC master..xp_cmdshell 'c:\<file>.vbs',no_output  
Run Code Online (Sandbox Code Playgroud)

VBScript中:

call main()
sub main()
    Dim xmlHTTP, url
    Set xmlHTTP = WScript.CreateObject("Msxml2.XMLHTTP")
    url = "<url>"
    xmlHTTP.Open "GET", url, False
    xmlHTTP.Send  ""
end sub 
Run Code Online (Sandbox Code Playgroud)

编辑

回应关于如何异步执行此操作的注释.

xp_cmdshell命令:

EXEC master..xp_cmdshell 'c:\caller.vbs',no_output
Run Code Online (Sandbox Code Playgroud)

调用者的VBScript:

call main()
sub main()
    Dim scmd
    Set scmd = "c:\windows\system32\cscript.exe //nologo c:\<originalVBS>.vbs"
    createobject("wscript.shell").run scmd,0,false
end sub
Run Code Online (Sandbox Code Playgroud)


小智 5

@newurl是您要点击的网址@response是您收到的回复

EXEC Sp_oacreate  'MSXML2.XMLHTTP',@obj OUT;
EXEC Sp_oamethod @obj,'open',NULL,'get',@newurl,'false'
EXEC Sp_oamethod @obj,'send'
EXEC Sp_oamethod @obj,'responseText',@response OUTPUT   
EXEC Sp_oadestroy @obj
Run Code Online (Sandbox Code Playgroud)


Ben*_*thy 2

您可以使用任务计划程序(Windows 的一部分)来完成此操作。只需创建一个打开 Internet Explorer 并浏览到以下页面的计划任务:

"C:\Program Files\Internet Explorer\iexplore.exe" "http://yoursite.com/yourpage.aspx"
Run Code Online (Sandbox Code Playgroud)

或者对于 64 位 Windows:

"C:\Program Files (x86)\Internet Explorer\iexplore.exe" "http://yoursite.com/yourpage.aspx"
Run Code Online (Sandbox Code Playgroud)

或者,使用 SQL Server 代理创建作业,并使用上述命令创建类型为“操作系统 (CmdExec)”的单个步骤。