Я пытаюсь развернуть мой CLR Trigger, построенный на .Net 4.0, но изменил целевую среду на 3.0, но я получил следующее сообщение об ошибке.
------ Развертывание началось: Проект:ServiceClient, конфигурация: отладка любого процессора ------ Сборка началась 18.01.2012 14:16:24.SqlClrDeploy: Начало развертывания сборки ServiceClient.dll на сервере WS037298: custDB. При развертывании проекта SQL CLR, созданного для версии .NET Framework, несовместимой с целевым экземпляром SQL Server, может возникнуть следующая ошибка: «Развернутьошибка SQL01268: СОЗДАТЬ СБОРКУ для сборки не удалось, поскольку сборка не прошла проверку ".Чтобы решить эту проблему, откройте свойства проекта и измените версию .NET Framework.Сценарий развертывания, созданный для: D: \ Visual Studio 2010 \ Projects \ ServiceClient \ ServiceClient \ bin \ Debug \ ServiceClient.sql
Создание [ServiceClient] ... D: \ Visual Studio 2010 \ Projects \ ServiceClient \ ServiceClient\ bin \ Debug \ ServiceClient.sql (39-39): ошибка развертывания SQL01268: поставщик данных .Net SqlClient: Msg 6503, уровень 16, состояние 12, сборка строки 1 'system.servicemodel, версия = 3.0.0.0, культура = нейтральная, publickeytoken = b77a5c561934e089. 'не был найден в каталоге SQL.Произошла ошибка во время выполнения пакета.
Сборка не выполнена.
Время истекло 00: 00: 24.64 ========== Сборка: 1 выполнена успешно или до-дата, 0 не выполнена, 0 пропущена ========== ========== Развертывание: 0 выполнено, 1 не выполнено, 0 пропущено ==========
public partial class Triggers
{
//Create an endpoint addresss for our serivce
public static EndpointAddress endpoint =
new EndpointAddress(new Uri("http://localhost:8000/services/myservice"));
//Create a binding method for our service
public static WSHttpBinding httpBinding = new WSHttpBinding();
//Create an instance of the service proxy
public static ServiceClient.ServiceReference1.ServiceContractClient myclient = new ServiceClient.ServiceReference1.ServiceContractClient(httpBinding, endpoint);
// public static ServiceClient.localhost.ServiceContractClient myClient = new ServiceClient.localhost.ServiceContractClient(httpBinding, endpoint);
//A delegate that is used to asynchrounously talk
//to the service when using the FAST METHOD
public delegate void MyDelagate(String crudType);
[SqlProcedure()]
public static void SendData(String crudType)
{
/*A very simple procedure that accepts a string parameter
based on the CRUD action performed by the
trigger. It switches based on this parameter
and calls the appropriate method on the service proxy*/
switch (crudType)
{
case "Update":
myclient.UpdateOccured();
break;
case "Insert":
myclient.InsertOccured();
break;
}
}
[Microsoft.SqlServer.Server.SqlTrigger(Name = "WCFTrigger",
Target = "tbCR", Event = "FOR UPDATE, INSERT")]
public static void Trigger1()
{
/*This is a very basic trigger that performs two very simple actions:
* 1) Gets the current trigger Context
* and then switches based on the triggeraction
* 2) Makes a call to a stored procedure
* Two methods of calling the stored procedure are presented here.
* View the article on Code Project for a discussion on these methods
*/
SqlTriggerContext myContext = SqlContext.TriggerContext;
//Used for the FAST METHOD
MyDelagate d;
switch (myContext.TriggerAction)
{
case TriggerAction.Update:
//Slow method - NOT REMCOMMEND IN PRODUCTION!
SendData("Update");
//Fast method - STRONGLY RECOMMENDED FOR PRODUCTION!
//d = new MyDelagate(SendData);
//d.BeginInvoke("Update",null,null);
break;
case TriggerAction.Insert:
//Slow method - NOT REMCOMMEND IN PRODUCTION!
SendData("Insert");
//Fast method - STRONGLY RECOMMENDED FOR PRODUCTION!
//d = new MyDelagate(SendData);
//d.BeginInvoke("Insert", null, null);
break;
}
}