1

私はSQL SERVER 2008を持っているデータベース用のasp.net(4.0) Webアプリケーションに取り組んでいます。私は1つのWebサービスを作成しました。その機能はデータベースにデータを挿入することです。Web サービスをローカル IIS にデプロイしました。ブラウザーで正常に動作していると、データベースにデータが挿入されますが、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 サービスを呼び出すことができます。以下は、DB から削除されたレコードに関するデータを受信し、Web サービス呼び出しを介してリモートに送信する CLR トリガーのコード スニペットです。

[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 に答える