This is a discussion on Accessing publication properties from Visual Basic (VB6) within the SQL Server forums, part of the Microsoft SQL Server category; --> Hi all, I have an existing application that checks a few things before it launches another application. One thing ...
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| Hi all, I have an existing application that checks a few things before it launches another application. One thing that the application needs to check is the subscription properties of both the local database and the remote (LAN) server. I've stumbled upon some properties but I am trying to fit in the last ones and I can't seem to find the right code to accomplish this... Can anyone shine a little light on this please ? The following code queries the SQL Server (remote) to get (some of) the properties of the replicated database. What I would like to fit in after the 'state' are the properties that you can retrieve with the EnumAllSubscriptions function. However, I can't seem to find the right object (sample code) to retrieve those (or I'm just overlooking the obvious)... Here is (part of) the code I'm using to query the publication on the remote server : Dim oMergePublication As SQLDMO.MergePublication2 Dim oSubscription As SQLDMO.MergeSubscription2 Me.lstPublications.Clear For Each oReplicationDatabase In objSQLSERVER.Replication.ReplicationDatabases If oReplicationDatabase.Name = Me.txtSQLServerDatabase.Text Then For Each oMergePublication In oReplicationDatabase.MergePublications bFoundReplicated = True Me.lstPublications.AddItem "Database replicated as '" & oMergePublication.Name & "'" For Each oSubscription In oMergePublication.MergeSubscriptions Me.lstPublications.AddItem " - subscriber :" & oSubscription.Subscriber Me.lstPublications.AddItem " - local DB :" & oSubscription.SubscriptionDB Me.lstPublications.AddItem " - state :" & GetReplStatus(oSubscription.Status) Next Next 'For Each osubscriber In oReplicationDatabase. 'Next End If Next Set oReplicationDatabase = Nothing Set oMergePublication = Nothing After this, I also want to check the local DB (=pulled subscription) and show some of the properties (from EnumAllSubscriptions). For example to warn the user about the need to synchronise (last_updated value)... Any help appreciated, Many thanks GB -- Your eyes are weary from staring at the CRT. You feel sleepy. Notice how restful it is to watch the cursor blink. Close your eyes. The opinions stated above are yours. When I snap my fingers, you cannot imagine why you ever felt otherwise. <snap> |
| |||
| I'm not sure what you're asking - do you mean that you know that EnumAllScubscriptions will return the information you need, but you don't know how to manipulate a SQL-DMO QueryResults object? If so, then you need to iterate over it, and use the GetColumn% methods to return the data in the format you want - in this case, GetColumnString is probably the best one to use. This is a simple VBScript example of using a QueryResults object: Option Explicit Dim oSrv, res, c, r Set oSrv = WScript.CreateObject("SQLDMO.SqlServer2") oSrv.LoginSecure = True oSrv.Name = "MyServer" oSrv.Connect Set res = oSrv.ExecuteWithResults("select * from sysobjects") For r = 1 To res.Rows For c = 1 To res.Columns If res.ColumnName(c) = "name" Then WScript.Echo res.GetColumnString(r, c) End If Next Next If this isn't helpful, you might get a better answer in microsoft.public.sqlserver.replication. Simon |
| ||||
| Sort of Simon, I'm having difficulty to get the returnset from EnumAllSubscriptions in a workable object. It just returns nothing or won't compile. In the code I've added, I managed to get the right call for the EnumAllSubscriptions but I'm not sure on the syntax it requires. Like : Dim oSubscription as SQLDMO.Subscriber2 Dim oSubscriptionData as SQLDMO.<??> For each oSubscriptiondata in oSubscription.EnumAllSubscribers(SQLDMOSubscriptio n_All) OR do I need to make something like Dim Result Dim oSubscription as SQLDMO.Subscriber2 Result = oSubscription.EnumAllSubscribers(SQLDMOSubscriptio n_All) and then walk that Result for the correct data Thanks anyway. I'll give this a try in the .repication group. GB Simon Hayes bracht volgend idée uit : > I'm not sure what you're asking - do you mean that you know that > EnumAllScubscriptions will return the information you need, but you > don't know how to manipulate a SQL-DMO QueryResults object? If so, then > you need to iterate over it, and use the GetColumn% methods to return > the data in the format you want - in this case, GetColumnString is > probably the best one to use. > > This is a simple VBScript example of using a QueryResults object: > > Option Explicit > > Dim oSrv, res, c, r > > Set oSrv = WScript.CreateObject("SQLDMO.SqlServer2") > oSrv.LoginSecure = True > oSrv.Name = "MyServer" > oSrv.Connect > > Set res = oSrv.ExecuteWithResults("select * from sysobjects") > > For r = 1 To res.Rows > For c = 1 To res.Columns > If res.ColumnName(c) = "name" Then > WScript.Echo res.GetColumnString(r, c) > End If > Next > Next > > > If this isn't helpful, you might get a better answer in > microsoft.public.sqlserver.replication. > > Simon -- Your eyes are weary from staring at the CRT. You feel sleepy. Notice how restful it is to watch the cursor blink. Close your eyes. The opinions stated above are yours. When I snap my fingers, you cannot imagine why you ever felt otherwise. <snap> |