Quantcast
Channel: SQL Server Replication forum
Viewing all articles
Browse latest Browse all 4054

Custom Resolver Stored Procedure

$
0
0

I have a merge replication that uses Sql Server Express 2008R2 on the client machines and SQL Server 2008 R2 on the main server.

I tried to create a custom resolver stored procedure on my simplest table. I receive this error message when the resolver is needed:

The Stored Procedure Resolver encountered the following
error executing the stored procedure 'uspCustomerServiceNotesConflictsHandler'.
Could not find server 'DLI000WHE\SQLExpress' in sys.servers. Verify that the cor
rect server name was specified. If necessary, execute the stored procedure sp_ad
dlinkedserver to add the server to sys.servers.

Does a custom resolver work with SQL Express? I have 85 clients and setting them up as linked servers is not something I want to do.

Here is my sproc

ALTER procedure [dbo].[uspCustomerServiceNotesConflictsHandler]
 @tableowner sysname,
 @tablename sysname,
 @rowguid varchar(36),
 @subscriber sysname,
 @subscriber_db sysname,
 @log_conflict INT OUTPUT,
 @conflict_message nvarchar(512) OUTPUT

AS
 set nocount on
 DECLARE
  @ServiceNotes nvarchar(max),
  @ServiceNotesConflict nvarchar(max),
  @ServiceNotesUsed nvarchar(max),
  @CustomerID int,
   @SQL_TEXT nvarchar(2000)

/*** Temp table to hold ServiceNotes value from the conflicting subscriber ***/
create table #tempSubscriber
 (CustomerID int,
 ServiceNotes nvarchar(max),
 rowguid varchar(36)
 )

SET @SQL_TEXT ='insert into #tempSubscriber
   (CustomerID, ServiceNotes,  rowguid)
   Select CustomerID, CustomerServiceNotes, rowguid
     From  ['+@subscriber+'].'+@subscriber_db+'.'+@tableowner+'.'+@tablename+
       '  Where rowguid='''+@rowguid+''''

EXEC sp_executesql @SQL_TEXT

Select @ServiceNotesConflict = ServiceNotes
From  #tempSubscriber
where  rowguid=@rowguid

/*** Get the current values from the publisher. Use the one with the most characters ***/
select @ServiceNotes = CustomerServiceNotes
from tblCustomerServiceNotes
where rowguid=@rowguid

If LEN(@ServiceNotes) >= LEN(@ServiceNotesConflict)
 Begin
  Select @ServiceNotesUsed = @ServiceNotes
 end
 else
 Begin
  Select @ServiceNotesUsed = @ServiceNotesConflict
 End
/***Update the publisher and Subscriber with the new column values ***/
select CustomerID, @ServiceNotesUsed, rowguid
from tblCustomerServiceNotes
where rowguid=@rowguid

drop table #tempsubscriber




Viewing all articles
Browse latest Browse all 4054

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>