David
I think the most 'elegant' solution would be to script write a set of
DML triggers that wrote to a log and you could poll that, AFAIK the
notifications system in 2008 only works on DDL events. At least if you
did it with a set of triggers then you wouldn't need a timestamp column
and you wouldn't need to alter your polling code on each DB Change
a quick script to gen the code would be something like
DECLARE
@SQL VARCHAR(MAX),
@Template VARCHAR(MAX) = 'CREATE TRIGGER TR_#Tablename# ON
#Tablename# FOR INSERT, UPDATE AS
BEGIN
DECLARE
@I INTEGER,
@RowCount INTEGER = @@ROWCOUNT,
@ErrorNumber INTEGER,
@Action VARCHAR(10)
IF @ROWCOUNT = 0 RETURN
SET NOCOUNT ON;
/* Get The Task */
SET @I = (SELECT COUNT(*) FROM inserted) - (SELECT COUNT(*) FROM
deleted)
SET @Action =
CASE
WHEN @I = 0 THEN ''Update''
WHEN @I > 0 THEN ''INSERT''
ELSE ''Delete''
END
INSERT INTO ChangeLog(TableName, Action, When)
SELECT ''#Tablename#'', @Action, GETDATE()
END
go
'
DECLARE C1 CURSOR LOCAL STATIC FOR
SELECT REPLACE(@Template, '#Tablename#', a.Name) FROM sysobjects a
WHERE xtype = 'u'
OPEN C1
FETCH NEXT FROM C1 INTO @SQL
WHILE @@FETCH_STATUS = 0 BEGIN
-- do work here
PRINT @SQL
FETCH NEXT FROM C1 INTO @SQL
END
CLOSE C1
DEALLOCATE C1
HTH Neven
Yes, thanks. That is the solution at the moment, I thought there may be a more
elegant one :-)
Crosstalk looks to be a brilliant solution for a number of issues here (mixed
.net and native).
________________________________
From: [email protected] on behalf of Xander van der Merwe
Sent: Tue 3/04/2012 9:51 a.m.
To: 'NZ Borland Developers Group - Delphi List'
Subject: Re: [DUG] SqlDependency
I very simple (but reliable) alternative approach might be to periodically (say every 30
seconds or whatever makes sense for your app) fire a simple query like "select
max(DateUpdated) from MyTable" (assuming you have a DateUpdated column) and if the
result returned is greater than the last value you have, you just do a refresh on that
particular table/query in the UI.
Regards
From: [email protected]
[mailto:[email protected]] On Behalf Of David O'Brien
Sent: Tuesday, 3 April 2012 8:47 a.m.
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] SqlDependency
Thanks.
From: [email protected]
[mailto:[email protected]] On Behalf Of Jolyon Smith
Sent: Tuesday, 3 April 2012 8:08 a.m.
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] SqlDependency
As far as I can tell, SQLDepedency is just a high level wrapper around SQL Server Query
Notifications - you could (if someone hasn't done it already) create such a high level wrapper
yourself, or just build what you need on the core services themselves. Instead of Google'ing
"SQLDependency", try instead "SQL Server Query Notification".
These articles in particular may be useful:
http://msdn.microsoft.com/en-us/library/ms130764.aspx
http://www.simple-talk.com/sql/t-sql-programming/using-and-monitoring-sql-2005-query-notification/
You will note that there is quite a bit of infrastructure required in the DB itself to
get this stuff up and running and there are some quite specific conditions that have to
be met by the query itself - it's not just a case of "notify me about this
query". At the very least you need a queue and Service Broker to be running.
Whether you are in a position to put that infrastructure in place may determine whether
or not this approach is even viable in your case.
hth
On 3 April 2012 02:33, Jackson Gomes<[email protected]> wrote:
you may try CrossTalk, which allows you to import .NET classes and Libs and use
them on Delphi
http://www.atozed.com/crosstalk/index.en.aspx
________________________________
Date: Mon, 2 Apr 2012 11:49:25 +1200
From: [email protected]
To: [email protected]
Subject: [DUG] SqlDependency
I would like to get SQL Server (2008 R2) to notify my app when data in a table
changes.
I'm looking for something like the SqlDependency class in .net, but for an XE2
VCL (Pascal) app.
Does anyone know of a component, class, or way to replicate this (Not .net)?
Cheers,
Dave.
_______________________________________________ NZ Borland Developers Group -
Delphi mailing list Post: [email protected] Admin:
http://delphi.org.nz/mailman/listinfo/delphi Unsubscribe: send an email to
[email protected] with Subject: unsubscribe
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: [email protected]
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to [email protected] with
Subject: unsubscribe
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: [email protected]
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to [email protected] with
Subject: unsubscribe
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: [email protected]
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to [email protected] with
Subject: unsubscribe