1

我正在为数据库开发 asp.net(4.0) Web 应用程序,我有 SQL SERVER 2008。我创建了一个 Web 服务,它的功能是将数据插入数据库。我已经在本地 IIS 上部署了我的 Web 服务,在浏览器中它工作正常意味着它正在向数据库中插入数据,但我的任务是创建一个将参数传递给 Web 服务的过程,然后 Web 服务将插入该数据。我为此尝试了很多东西,但可以完成这项任务。关于如何从 SQL SERVER 调用 Web 服务的任何想法。我已经尝试了很多东西,比如下面的链接和这个 URL 上提到的类似技术

http://www.sqlservergeeks.com/forums/microsoft-data-platform/sql-server-bi/9/sql-programming-calling-the-web-service-thru-sql

我也尝试过终点但无法完成。甚至 HelloWork 方法也不会从 SQL SERVER 调用。

Web 服务名称 WebService1.asmx 方法 public string SaveRecord(string a, string b, string c, string d)

    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }



    [WebMethod]
        public string SaveRecord(string userid, string fname, string lname, string email)
        {

            //here is my code to save records is database 
 return "";

        }
4

1 回答 1

0

通过与 SQLCLR 集成,可以从 sql server 调用 Web 服务。下面是 CLR 触发器的代码片段,它从 DB 接收有关已删除记录的数据,并通过 Web 服务调用将其发送到远程。

[SqlTrigger(Name = "OnDelete", Target = "Contact1", Event = "FOR DELETE")]
public static void OnDelete()
{
    string recid, accountno, address3;

    recid = accountno = address3 = string.Empty;

    var sqlContext = SqlContext.TriggerContext;
    using (var connection = new SqlConnection("context connection=true"))
    {
        var command = new SqlCommand("SELECT recid, accountno, address3 FROM DELETED; ", connection);
        connection.Open();

        using (var reader = command.ExecuteReader())
        {
            if (reader.Read())
            {
                recid = reader[0].ToString();
                accountno = reader[1].ToString();
                address3 = reader[2].ToString();
            }
        }
    }

    if (!string.IsNullOrEmpty(address3))
    {
        var token = new CrmAuthenticationToken();
        token.AuthenticationType = 0;
        token.OrganizationName = "organization";

        using (var crmService = new CrmService())
        {
            crmService.Url = "http://domain:5555/MSCRMServices/2007/CrmService.asmx";
            crmService.Credentials = new System.Net.NetworkCredential("username", "password", "domain");
            crmService.CrmAuthenticationTokenValue = token;
            crmService.UnsafeAuthenticatedConnectionSharing = true;
            crmService.PreAuthenticate = true;

            crmService.Delete(EntityName.contact.ToString(), new Guid(address3));
        }
    }
}
于 2013-08-22T12:20:51.663 回答