I went to View Synchronization status and see that the sychronization has been running for two hours already. Is that normal? I thought it would just find the one change I made and update that one change?
hi, my Backup job, took a backup at 3.00am , backup went well, but this job is still running , now the time is 10.00am. I tried to kill this job but it is still running. Why my process still running after taking a backup also. Can anyone suggest me, how i have to resolve this.
Hi Can somebody suggest optimization on this query. ITs running for hours,I have checked on mutiple Servers but dont know where the problem is.It starts when i add the not exists piece if the query. Pls help
SELECT distinct isnull(P.id,'') PersonID , s.status , isnull(replace(Ltrim(Rtrim(P.Firstname)),',',''),' ') FirstName , isnull(replace(Ltrim(Rtrim(P.MiddleName)),',',''), '') MiddleName , isnull(replace(Ltrim(Rtrim(P.lastname)),',',''),'' ) LastName , isnull(replace(Ltrim(Rtrim(P.Suffix)),',',''),'') Suffix , isnull(replace(Ltrim(Rtrim(p.company)),',',''),'') Company , isnull(replace(Ltrim(Rtrim(PA.AddressLine1)),',',' '),'') AddressLine1 , isnull(replace(Ltrim(Rtrim(PA.AddressLine2)),',',' '),'') AddressLine2 , isnull(replace(Ltrim(Rtrim(PA.City)),',',''),'') City , State = isnull(replace(Ltrim(Rtrim(PA.State)),',',''),'') , ZipCode = ISNULL(CASEWHEN LEN((LTRIM(RTRIM(PA.Zipcode)))) = 3 THEN ('00' + (PA.Zipcode)) WHEN LEN((LTRIM(RTRIM(PA.Zipcode)))) = 4 THEN ('0' + (PA.Zipcode)) WHEN SUBSTRING(LTRIM(RTRIM(PA.Zipcode)),6,1) = '-' THEN ISNULL(PA.Zipcode,'') WHEN SUBSTRING(PA.Zipcode,6,1) = ' ' THEN ISNULL(PA.Zipcode,'') ELSE substring(PA.Zipcode,1,5)+'-'+ substring(PA.Zipcode,6,4) END ,'') , b.code , CommitteeTermID = '' , RevenueCategoryid = '' FROM vwpersons p with (nolock) join vwsubscriptions s on p.id = s.recipientid join vwcompanies c WITH (NOLOCK) on c.id = p.companyid join vwbusinesscodes b WITH (NOLOCK) on b.id = c.primarybusinesscode join vwRevenueCategorys rc WITH (NOLOCK)on rc.id = c.RevenueCategoryid join vwPersonPrefAddr pa WITH (NOLOCK) on p.id = pa.id WHERE NOT EXISTS (SELECT s1.recipientid FROM vwsubscriptions S1 WHERE S1.SHIPTOID =S.SHIPTOID AND S.PRODUCTID = S1.PRODUCTID AND S1.STATUSID IN (1,2,3,11,12)) and p.id in (select recordid from vwTopicCodeLinks tcl Where tcl.entityid = 457 And tcl.topiccodeid = 332 And tcl.value = 'Yes') and ((p.PreferredAddress = 'Business Address' and p.BadBusinessAddress = 0) or (p.PreferredAddress = 'PO Box Address' and p.BadPOBoxAddress = 0) or(p.PreferredAddress = 'Home Address' and p.BadHomeAddress = 0)) and b.code in ( 'M2','V2','V5','W1','W2','W3','W4' ,'W5','W6','W7','W8','W9','WZ','X2','X3','X4') and p.status <> 5 and S.statusID IN (4,5,6,7,8,9,10,13) and S.productid in (23) group by b.code ,p.id , p.firstname,p.lastname,p.MiddleName,p.suffix, p.company,pa.addressline1,pa.addressline2,pa.city, pa.state,pa.zipcode, s.status
I have a merge replication topology that allows some subscribers (clients) to retreive a number for certain columns (ie invoice number, order number, etc).
I have implemented a custom business logic handler to check for inserts from the subscriber and before updating the server, I call a stored proc on the server to generate a new number. I update the data set and call ActionOnDataChange.AcceptCustomData. This works great for the publication db but I am trying to get this new number back into the subscription db. I am using web synchronization so I really don't have a connection back to the subscriber database.
Any Ideas? I was thinking about keeping track of the updates myself and build a sql string and somehow get that back to the subscriber to run updates for those columns... I am wondering if I am pushing the limits of the business logic handler? Was it designed to do this? Of course the easy answer is to modify my client application but I am trying to avoid that at this point.
Any help/suggestions would be greatly appreciated!
The following basic UPDATE SQL statement has been running for 16 hours and counting. I need to get this done ASAP.
UPDATE Recipients SET UndeliverableTime = getdate() FROM Recipients INNER JOIN Domains ON (Recipients.DomainID = Domains.ID) INNER JOIN Undeliverables ON ( Recipients.UserName + '@' + Domains.Domain = Undeliverables.EmailAddress)
Is there any way I can see how far this has gone and how long it will take to finish? Will this take another hour to finish or another week?
Both tables (Recipients and Undeliverables) have approximately 80 million records
I did a nearly identical operation with another table that had only 7 million records and it took 10.5 hours. I hope this doesn't scale linearly to 115 hours.
I am tempted to cancel, retune, and rerun but that may be trigger a really expensive rollback operation that could take days. Any ideas?
We have an environment with 7 servers that are running replication with one another and I'm wondering if there are any tools or experiences that any of you might have that may assist in the auditing of these servers. The data should be in synch accross the boards for all tables, but sometimes problems can arise such as replication not being set up properly, stored procedure's being out of synch, or data gliches etc.
In dealing with these issues we have an in-house written program which analises each table on each server and takes a snapshot and does column by column compare. We also have another program that will synch the data up (basically a delete/insert statement on the publisher). This process can take up to 3 weeks for our quarterly update of every table. I'm wondering if anybody has used any tools such as in SSIS or a third party tool and has done or is doing something similar to what we are doing now. If so, are there any tips you wouldn't mind sharing on how our process might be sped up?
We are currently using a Merged replication and Push subscriber to replicate the databse from DB1 to DB2 every hours. The replication process successed for first 20 hours but we found that the replication process cannot be completed after 20 hours with the following error codes:
Action Code Last Action Msg
4 The process could not query row metadata at the 'Subscriber'
363 The process could not deliver insert(s) at the 'Subscriber'.
Creating a burn down chart using a running total of cumulative hours with the following formula:
CumulativeHoursLeft:=CALCULATE ( Â Â Â SUM('Projects'[Budget hours]) - SUM ( 'hours'[Hours] ), Â Â Â FILTER ( Â Â Â Â Â Â Â ALL ( 'hours'[Date] ), Â Â Â Â Â Â Â 'hours'[Date] <= MAX ('hours'[Date]) Â Â Â ) )
Works great except that in a Line Chart using [Date] as the Axis and CumulativeHoursLeft as the value, I get these spikes on days for which the employee reported no hours. I do know what exactly the measure is doing in this instance and I do not get this in a table, those dates simply do not appear. I have tried both Categories and Continuous for the Line Chart. I have also tried filtering where [Date] is not blank.how to get rid of the spikes?
I have data coming from a telephony system that keeps track of when anemployee makes a phone call to conduct a survey and which project numberis being billed for the time the employee spends on that phone call in aMS SQL Server 2000 database (which I don't own).The data is being returned to me in a view (see DDL for w_HR_Call_Logbelow). I link to this view in MS access through ODBC to create alinked table. I have my own view in Access that converts the integernumbers for start and end date to Date/Time and inserts some otherinformation i need.This data is eventually going to be compared with data from someelectronic timesheets for purposes of comparing entered hours vs hoursactually spent on the telephone, and the people that will be viewing thedata need the total time on the telephone as wall as that total brokendown by day/evening and weekend. Getting weekend durations is easyenough (see SQL for qryTelephonyData below), but I was wondering ifanyone knew of efficient set-based methods for doing a day/eveningbreakdown of some duration given a start date and end date (with theday/evening boundary being 17:59:59)? My impression is that to do thiscorrectly (i.e., handle employees working in different time zones,adjusting for DST, and figuring out what the boundary is for switchingfrom evening back to day) will require procedural code (probably inVisual Basic or VBA).However, if there are set-based algorithms that can accomplish it inSQL, I'd like to explore those, as well. Can anyone give any pointers?Thanks.--DDL for view in MS SQL 2000 database:CREATE VIEW dbo.w_HR_Call_LogASSELECT TOP 100 PERCENT dbo.TRCUsers.WinsID, dbo.users.username ASInitials, dbo.billing.startdate, dbo.billing.startdate +dbo.billing.duration AS EndDate,dbo.billing.duration, dbo.projects.name ASPrjName, dbo.w_GetCallTrackProject6ID(dbo.projects.descript ion) AS ProjID6,dbo.w_GetCallTrackProject10ID(dbo.projects.descrip tion) AS ProjID10,dbo.billing.interactionidFROM dbo.projects INNER JOINdbo.projectsphone INNER JOINdbo.users INNER JOINdbo.TRCUsers ON dbo.users.userid =dbo.TRCUsers.UserID INNER JOINdbo.billing ON dbo.users.userid =dbo.billing.userid ON dbo.projectsphone.projectid =dbo.billing.projectid ONdbo.projects.projectid = dbo.projectsphone.projectidWHERE (dbo.billing.userid 0)ORDER BY dbo.billing.startdateI don't have acess to the tables, but the fields in the view comethrough as the following data types:WinsID - varchar(10)Initials - varchar(30)startdate - long integer (seconds since 1970-01-01 00:00:00)enddate - long integer (seconds since 1970-01-01 00:00:00)duration - long integer (enddate - startdate)ProjID10 - varchar(15)interactionid - varchar(255) (the identifier for this phone call)MS Access SQL statement for qryTelephonyData (based on the view,w_HR_Call_Log):SELECT dbo_w_HR_Call_Log.WinsID, dbo_w_HR_Call_Log.ProjID10,FORMAT(CDATE(DATEADD('s',startdate-(5*60*60),'01-01-197000:00:00')),"yyyy-mm-dd") AS HoursDate,CDATE(DATEADD('s',startdate-(5*60*60),'01-01-1970 00:00:00')) ASStartDT,CDATE(DATEADD('s',enddate-(5*60*60),'01-01-1970 00:00:00')) AS EndDT,DatePart('w',[StartDT]) AS StartDTDayOfWeek, Duration,IIf(StartDTDayOfWeek=1 Or StartDTDayOfWeek=7,Duration,0) ASWeekendSeconds,FROM dbo_w_HR_Call_LogWHERE WinsID<>'0'
There is some strange behaviour i've recently noticed while watching synchronization progress in Replication Monitor on SQL 2005 Server Standard with merge replication configured. The merge process seems to repeat several times.
This is the initial synchronizaion (reinitalization at the subsciber). Client is using Microsoft.SQLServer.Replication objects from .net framework assemblies.
The synchronization starts normally (status is "Running"). The last message of selected session box shows (among other messages): "Beginning evaluating partial replication filters" then "Finished evaluating partial replication filters" and finally "Merge completed after processing xxx changes... etc." after a few seconds. Status changes to "Completed" and then... the merge process starts again!! "Beginning evaluating partial replication filters" etc. And this repeats about 15-20 times.
And so whole process takes about 15 minutes instead about 45 seconds to complete initial synchronization. The number of changes is "Merge completed after processing ..." never change since the first such message.
Is this some bug in web synchronization or some invalid configuration setting? Why does merge process repeat itself so many times??
In my environment, there is maintenance plan configured on one of the server and while running DBCC checkdb on a database of size around 200GB, log file usage of tempdb is increasing and causing the maintenance job to fail.
What can I do to make the maintenance job run successfully, size of the tempdb database is only 50GB and recovery model is set to simple. It cannot be increased as the mount point on which it is residing is 50GB.
If I start a long running query running on a background thread is there a way to abort the query so that it does not continue running on SQL server?
The query would be running on SQL Server 2005 from a Windows form application using the Background worker component. So the query would have been started from the background workers DoWork event using ado.net. If the user clicks an abort button in the UI I would want the query to die so that it does not continue to use sql server resources.
One of my stored procs, taking one parameter, is running about 2+ minutes. But if I run the same script in the stored proc with the same parameter hardcoded, the query only runs in a couple of seconds. The execution plans are different as well. Any reason why this could happen? TIA.
Is it possible in SQL Server to have replication happen immediately aschanges are made. That is, a change is made on server A, and that change isautomatically applied to server B, rather than the replication happening atset intervals?Thanks.
Hello guys! I went through the bunch of documentation pages about configuring the one for providing web subscriptions. The most usefull for me were:
Security Architecture for Web Synchronization How to: Configure an IIS Server for Web Synchronization (SQL Management Studio) How to: Configure a Subscription to Use Web Synchronization Topologies for Web Synchronization Securing the Publisher Subscribing to Publications Mssubscription_properties (Transact-SQL) How to: Configure a Subscription to Use Web Synchronization (Replication Transact-SQL) sp_addmergepullsubscription (Transact-SQL) Web Synchronization for Merge Replication But I still have questions about it. If you could help me with small notes about subscribing to web based merge publication I would really appreciate that!
I believe, I just need a bit of clarification. The target setting is simple as it is: a client should connect to the our hosting server via HTTPS and update his pull subscription on demand by running .NET application. Avoiding the server part, are the following steps correct and enough to accomplish what I need? 1. To create subscription, should I use the script:-- This script uses sqlcmd scripting variables. They are in the form-- $(MyVariable). For information about how to use scripting variables -- on the command line and in SQL Server Management Studio, see the -- "Executing Replication Scripts" section in the topic-- "Programming Replication Using System Stored Procedures". -- Publication must support anonymous Subscribers.-- Execute this batch at the Subscriber.DECLARE @publication AS sysname;DECLARE @publisher AS sysname;DECLARE @publicationDB AS sysname;DECLARE @websyncurl AS sysname;DECLARE @security_mode AS int;DECLARE @login AS sysname;DECLARE @password AS nvarchar(512);SET @publication = N'AdvWorksSalesOrdersMergeWebSync';SET @publisher = $(PubServer);SET @publicationDB = N'AdventureWorks';SET @websyncurl = 'https://' + $(WebServer) + '/WebSync';SET @security_mode = 0; -- Basic Authentication for IISSET @login = $(Login);SET @password = $(Password); -- At the subscription database, create a pull subscription -- to a merge publication.USE [AdventureWorksReplica]EXEC sp_addmergepullsubscription @publisher = @publisher, @publication = @publication, @publisher_db = @publicationDB, @subscriber_type = N'anonymous'; -- Add an agent job to synchronize the pull subscription. EXEC sp_addmergepullsubscription_agent @publisher = @publisher, @publisher_db = @publicationDB, @publication = @publication, @distributor = @publisher, @job_login = @login, @job_password = @password, @use_web_sync = 1, @internet_security_mode = @security_mode, @internet_url = @websyncurl, @internet_login = @login, @internet_password = @password;GO
What is @job_login parameter here? As I understand, I will not run SQL Agent job as our client uses MS SQL Server 2005 Express. And I do not want to run it as we will provide a client with .NET application for performing synchrinization on demand Parameter @publisher means full SQL Server instance name? For example, MYMACHINEMSSQLSERVER? What user will be used to connect to the distributor and to the Publisher? Will it be @internet_login? Do I need running sp_addmergepullsubscription_agent if I€™m going to use the following .NET application code to synchronize over the Internet?
2. To perform synchronization with our hosting servers, should a client use the following code? // Define the server, publication, and database names. string subscriberName = instanceName; string publisherName = instanceName; string publicationName = "AdvWorksSalesOrdersMerge"; string subscriptionDbName = "AdventureWorksReplica"; string publicationDbName = "AdventureWorks"; string hostname = "adventure-works\garrett1"; string webSyncUrl = "https://" + instanceName + "/SalesOrders/replisapi.dll";
// Create a connection to the Subscriber. ServerConnection conn = new ServerConnection(subscriberName);
// If the pull subscription exists, then start the synchronization. if (subscription.LoadProperties()) { // Get the agent for the subscription. agent = subscription.SynchronizationAgent;
// Check that we have enough metadata to start the agent. if (agent.PublisherSecurityMode == null) { // Set the required properties that could not be returned // from the MSsubscription_properties table. agent.PublisherSecurityMode = SecurityMode.Integrated; agent.DistributorSecurityMode = SecurityMode.Integrated; agent.HostName = hostname;
// Set optional Web synchronization properties. agent.UseWebSynchronization = true; agent.InternetUrl = webSyncUrl; agent.InternetSecurityMode = SecurityMode.Standard; agent.InternetLogin = winLogin; agent.InternetPassword = winPassword; } // Enable agent output to the console. agent.OutputVerboseLevel = 1; agent.Output = "";
// Synchronously start the Merge Agent for the subscription. agent.Synchronize(); } else { // Do something here if the pull subscription does not exist. throw new ApplicationException(String.Format( "A subscription to '{0}' does not exist on {1}", publicationName, subscriberName)); } } catch (Exception ex) { // Implement appropriate error handling here. throw new ApplicationException("The subscription could not be " + "synchronized. Verify that the subscription has " + "been defined correctly.", ex); } finally { conn.Disconnect(); }
What does HostName parameter use for? What is that host? Subscriber€™s machine name instance name? Or Publisher€™s? Or Distributor€™s? Why parameters PublisherSecurityMode and DistributorSecurityMode have value SecurityMode.Integrated? How it is used in the replication model for web synchronization? As I understood from the documentation, client (Merge Agent) should connect to the Subscriber, get the changes, connect to hosting server via HTTPS and perform transactions through the SQL Server Replication Listener, thus the internet login to the IIS should be used to perform all the operations on hosting server side? The same internet login will be used to get snapshot from UNC share? If I€™ve chosen to use FTP to provide with snapshots, should I then provide ftp parameters to sp_addmergepullsubscription_agent stored procedure or they will be used automatically by ISAPI filters on hosting server? Thank you.
I'm having to build a smart client application that works with an offline sql express database on the client. And works with several types of databases - that may be configured to work as a central server. The list includes the sql server family including 2000, 2005 and express and also IBM DB2.
I have to address some rather complex merge replication scenarios. By Merge I mean the ability to deal with handling and synchronization of bi-directional changes. More specifically changes to data may be made to any database in the system. either local or central.
I'm afraid, I cannot use sql replication in a heterogenous mode for several reasons. Some being - the database is being auto attached on the client, the application is expected to live up to the 'low impact' install ideology and should not need any major configuration etc.....
Are there any recomended approaches/Ideas one may use to acheive replication. Any links/information/ideas will be great.
I'm developing a Windows Mobile solution (Pocket PC Win 5-6). I have Sql Server CE on the device and I use RDA (Remote Data Access) to pull the tables to the Sql Server CE. I use RdaTrackOption.TrackingOffWithIndexes so I can Alter the table design. Then I use the function SubmitSql to push back my changes. On the server I have a table for example Customers, it has a column called CustomerId with identity(1,1). Let's say the highest Id is 100 and the lowest is 50, when I add a record in the Sql Server CE it gets CustomerId = 1 then next one 2 etc which means identity is working but does not continue after 100. I don't need to use the CustomerId when I push my data back because I have sql syntax taking care of @@IDENTITY when inserting new records. Anyone who knows why it begins on 1 and not 101?
We have a few Servers that have space issues that need full DB Backups every day. As a result, we have to carefully watch how many DB Backup files we keep on the Server. On the Maintenance Plan, if I set the 'Delete files older than:' to '1' 'Day', will this delete anything over 24 hours old? What I have noticed, is that it tends to delete on Tuesday anything that was created on Sunday, but not Monday. Therefore, I am assuming that instead of '1 Day' being 24 hours, it is anything less than 47 hours and 59 minutes...
Is my assumption correct or do I need to look at something else. Thanks!
I have 2 distributed databases which need to be synchronized at regular basis. I plan to write a service that does it. But I'm just curious how to do the update incrementally. Thanks
I have a website that is running on the intranet and on a notebook. I have a notebook that is not always connected to the internet.. when it is not connected, it will read in some data from a barcode reader; and when it's connected, it will synchronize the data with the db on the intranet.. any idea on how to achieve this?
Hi All, I want to do SQL Server DB Synchronization. The scenario is like this.. DataBase is presently on SQL Server 2005, When end user click on button or on some action event all data to from the server should be fetched & should be saved on client m/c. Afer that when user click on button or on some event, DB should be synchronized. i.e. if there is any change in Server Data, client data should be automatically update... How can i achieve this using C#.. Plzzz Help!!!!!
Once I go to client site (where production DB is located) I want to generate a DataSet (which I am able to do) and compare this DataSet with the DataSet created when I read in the XML file.
## 'read in XML file XMLDataSet.ReadXML(Server.MapPath("xDataDictionary.xml")) ##
There is a unique identifier in the table and XML file called 'FieldID'. What I need to do is compare DataSet (from Production DB) with DataSet from XML file.
If there is a 'FieldID' in the DataSet from XML file that IS NOT in DataSet from ProductionDB I want to insert this node/row into the database.
I was wondering if anyone knows if there is any software available or if it is easy to implement the following.
We are running a SQL Server database locally in house and also have the exact same database running on a hosted webserver. The data changes on both versions of the database daily and what we need to do is figure out a simple easy / cheap way to have the two databases synchronize with each other every evening so that the data is exactly the same every morning.
i want to create a web application architechture which having multiple web server. this all web server having sql server database. now what i want is to Keep all data in all databases. means i want to synchronize my all sql servers. it is also possible ki my one webserver can have multiple clusted database. hope to hear soon from u people.
Hi Guys: I am trying to synchronize my home sqlserver database with a database on my web hosting company. I am not really sure how to go about it, any suggestions?