Published by

Comments

# re: NMA Kijk hier eens naar.......

Monday, March 01, 2004 8:53 PM by Patrick Wellink
Demon heerst! ;)

En wat een toffe layout heb je! ;)
Toffe plaat ook!

# re: NMA Kijk hier eens naar.......

Tuesday, March 02, 2004 8:36 AM by Patrick Wellink
Ja layout hebbik ergens gesjopt... ik weet alleen niet meer waar. Als plaatje wilde ik eerst een soort Microsoft iets dat JAVA plette...

maar helaas niet kunnen vinden. Dan deze maar....
Ik weet niet of je die film met Kurt Russel kent.... Soldier....

# re: Correlation & Biztalk 2004

Friday, March 12, 2004 4:05 PM by Patrick Wellink
Hey, what do you mean with the "unfortunately" bit? ;-)

# re: Correlation & Biztalk 2004

Sunday, March 14, 2004 1:42 AM by Patrick Wellink
well there is already a lot c# in the samples. some vb samples would not be nice.

;-)

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, March 15, 2004 1:07 PM by Patrick Wellink
Great summary, but I think that having GUIDs as a key have some great advantages as well, like:

- garanteed uniqueness across applications/servers
- support for key initialisation by the client (something you can't do with identities).

I wouldn't like to give that up to get smaller indexes. How often is bare-bone performance the one and most important required feature of a system anyway? Not often, I think.

Anyway, what was the question that started this discussion?

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, March 15, 2004 1:22 PM by Patrick Wellink
Carlo.......

About Statement nr 1
----------------------

- garanteed uniqueness across applications/servers

Don't Worry let MS-SQL take care of that. Or do you mean a Replicated Scenario.... Because this is one of the few scenario's where guid's are ok to use as a PK.

Statement Nr 2
_-----------------

- Support for key initialisation by the client

This is something you don't need. Have the sproc to create a record return the scope_identity() and everything should work fine.

Sure sure when you use dynamic SQL it could be a little tricky....

BUT THIS IS SOMETHING THAT SHOULD BE AVOIDED. Always use stored procedures to execute an insert.

Let the database worry about ID's and integity. Choosing a GUID will work for a small application. But when performance is an issue FORGET IT.

Choosing a GUID as PK can have SERIOUS implications in large tables. ( A simple insert that takes 30 seconds )

So forget the GUID and do it the proper way.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, March 15, 2004 2:45 PM by Patrick Wellink
Sorry? Forget about GUIDs? I couldn't disagree more.

I do agree that you should take care when using GUIDs, like you should take care when using any technology. But by declaring GUIDs dead, you miss the point here.

It's like saying that starting too many threads will slowdown the OS and then declare multi-threading a bad technology.

I think that great programmers use common sense to decide instead of this kind of generic rules based only on raw performance. Sometimes it's better to use GUIDs, sometimes it's not. Not all tables will grow to over a million rows.

BTW: It's quite a statement to say that just the choice of key type will lead up to 30 second inserts. Where did you find/experience this figures?

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, March 15, 2004 3:29 PM by Patrick Wellink
Well try it yourself. Create a table with a couple of fields (20 or 30 or so) and create a clustered index on the GUID.

Now start inserting records..........
Not just 10 or 20 but 100.000 at a time and watch performance degrade.....

And yes. Also for small files try to avoid a guid...

For example We create a table Countries with three fields

1 GUID
2 ISO CODE
3 DESCIPTION

There is nothing wrong with this file whatsoever I completely agree with you. But now we have a customer table with 3 million records that has a countrycode.....

By using the GUID we have increased the table (on disk) with 3.000.000 customers * 16 bytes = 48 Million bytes

By using an ID the table would be 3.000.000 * 4 bytes = 12 Million Bytes

So a difference of 36 Million Bytes.

And that is only for one field..... Suppose there is also a language table, a currency table etc......

I am not declaring the GUID dead. I only tell people to use it when there is a Reason for it.....

And Performance problems always come after the programmers are gone and the files start to grow.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, March 15, 2004 3:50 PM by Patrick Wellink
Okay, I completely agree with you there.

You can argue about the meaning of winning 36 MB when a regular harddisk is 20 GB or over, but that's too easy ;-). When you expect 1 million rows, you should better take this into consideration.

But you just can't wave away the benefits of a GUID, both for me as a developer as for you as a DBA.

For me as a developer it's very handy to know an entities key at the moment it's created, and not have to wait untill it's persisted to the database. A GUID gives you that possibility.

For you as a DBA, you must have been in a situation where you wanted to migrate a portion of staging data to production with a new release and you couldn't do it right away because keys overlapped. At least happened to me a couple of times in the last few years.

These are things that define the overall maintainability of the system and I think that is as important as it's performance.

Saying that, I think we agree more then I initially thought, which is good to know... ;-)

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, March 15, 2004 3:51 PM by Patrick Wellink
PROOF.

Run 1000 inserts on an identical table only the ID column Differs. And in the small test the difference was almost 5 seconds.....

ok here are the results :
------------- -----------
DURATION GUID 14500
----------- -----------
DURATION ID 9890

Don't believe me ????

try it yourself......

SET NOCOUNT ON

DECLARE @START DATETIME
DECLARE @END DATETIME
DECLARE @COUNTER INT

CREATE TABLE TESTTABLEGUID
(
ID UNIQUEIDENTIFIER DEFAULT NEWID() PRIMARY KEY,
FIELD1 CHAR(200) DEFAULT NEWID(),
FIELD2 CHAR(200) DEFAULT NEWID(),
FIELD3 CHAR(200) DEFAULT NEWID(),
FIELD4 CHAR(200) DEFAULT NEWID(),
FIELD5 CHAR(200) DEFAULT NEWID(),
FIELD6 CHAR(200) DEFAULT NEWID(),
FIELD7 CHAR(200) DEFAULT NEWID(),
FIELD8 CHAR(200) DEFAULT NEWID(),
FIELD9 CHAR(200) DEFAULT NEWID(),
FIELD10 CHAR(200) DEFAULT NEWID(),
FIELD11 CHAR(200) DEFAULT NEWID(),
FIELD12 CHAR(200) DEFAULT NEWID(),
FIELD13 CHAR(200) DEFAULT NEWID(),
FIELD14 CHAR(200) DEFAULT NEWID(),
FIELD15 VARCHAR(200) DEFAULT NEWID()
)



SET @START = GETDATE()
SET @COUNTER = 1
WHILE @COUNTER < 1000
BEGIN
INSERT TESTTABLEGUID DEFAULT VALUES
SET @COUNTER = @COUNTER + 1
END
SET @END = GETDATE()
SELECT 'DURATION GUID',DATEDIFF(MS,@START,@END)
DROP TABLE TESTTABLEGUID
-- IDENTICAL CODE BUT NOW WITH AN ID
DECLARE @START1 DATETIME
DECLARE @END1 DATETIME


CREATE TABLE TESTTABLEID
(
ID INT IDENTITY PRIMARY KEY,
FIELD1 CHAR(200) DEFAULT NEWID(),
FIELD2 CHAR(200) DEFAULT NEWID(),
FIELD3 CHAR(200) DEFAULT NEWID(),
FIELD4 CHAR(200) DEFAULT NEWID(),
FIELD5 CHAR(200) DEFAULT NEWID(),
FIELD6 CHAR(200) DEFAULT NEWID(),
FIELD7 CHAR(200) DEFAULT NEWID(),
FIELD8 CHAR(200) DEFAULT NEWID(),
FIELD9 CHAR(200) DEFAULT NEWID(),
FIELD10 CHAR(200) DEFAULT NEWID(),
FIELD11 CHAR(200) DEFAULT NEWID(),
FIELD12 CHAR(200) DEFAULT NEWID(),
FIELD13 CHAR(200) DEFAULT NEWID(),
FIELD14 CHAR(200) DEFAULT NEWID(),
FIELD15 VARCHAR(200) DEFAULT NEWID()
)



SET @START1 = GETDATE()
SET @COUNTER = 1
WHILE @COUNTER < 1000
BEGIN
INSERT TESTTABLEID DEFAULT VALUES
SET @COUNTER = @COUNTER + 1
END
SET @END1 = GETDATE()
SELECT 'DURATION ID',DATEDIFF(MS,@START1,@END1)
DROP TABLE TESTTABLEID

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, March 15, 2004 3:56 PM by Patrick Wellink
Carlo one more comment :

Quote : For me as a developer it's very handy to know an entities key at the moment it's created, and not have to wait untill it's persisted to the database. A GUID gives you that possibility.


THAT IS THE PROBLEM. You create a key and you don't want to wait until SQL has persisted the key...... INTEGRITY.......

The only way to know for SURE the key can be used is if it is persisted in the database. Otherwise the stuff can become corrupted.

And after the little test i hope you understand that me as a DBA am not happy with poor performing databases..... Better a good solid design from the start that will perform always.

Unfortunately when there is a Oracle DB involved everybody screams they need a DBA but with SQL everybody seems to know how things work.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, March 15, 2004 4:50 PM by Patrick Wellink
O jee, this can lead into an endless discussion ;-). But anyway, a little reaction on your note.

Integrity is a crucial thing, but that's exactly the reason why I want to know the key upfront. Because with that I can persist all related records in one batch in one transaction, instead of round-tripping the server for every record. I guess that even IMPROVES performance by shortening the life-time of the transaction. Of course, there are ways to get around the round-tripping, like using stored procedures, but that often gets complicated, especially in master-detail kind of scenario's.

But your performance figures are very impressive. You made your point about the GUIDs performance very clear and I now also feel one should take care about when to use GUIDs. Good job.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, March 15, 2004 4:55 PM by Patrick Wellink
Thanks carlo.

This is exactly why I wrote the article. Everybody uses the guids because they are so easy to use.

Sure you can use them, but with care and only when needed, not by default.

And indeed I will not discuss integrity with you.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Tuesday, March 30, 2004 9:51 AM by Patrick Wellink
I read this article just some minutes ago. Interesting topic that never ends. The comment of Carlo is what I would have written. But then my ramblings.. WHY would you put a clustered index on a PK? Choose a column where costly queries would benefit from. The insertdate for statistics for example or if data can be grouped it could be such an attribute like city, country or the combination gender with date of birth :)

Almost all projects I started were first using int/identities as PK's but most database were getting a replication treatment after some time. Using guid's as PK's is a wise decision when you know that database availability and growth are important issues and you don't know what kind of fail-over scenario will be used.

Using guid's has nothing to do with easier development in for example the middletier. I can only see a clear advantage for the dba with a minimal performanceloss. As said earlier the PK is 4 times bigger but this disadvantage does not compare to most total record lengths of tables that have lots of modifications compared to current hardware specs and prices, maintainability and performance gain in the applicationlogic.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Tuesday, March 30, 2004 11:36 AM by Patrick Wellink
If you create a table in SQL and you assign it a primary key, this becomes the default clustered index.

You have to change it in nonclustered.

The examples you give, CITY and Country are NO candidates at all for a CLUSTERED index. And indeed Only when you replicate you could use a GUID in a table.

And have you tried the query example ?. If it doe'n't make a big difference just increase the loop to 100.000 and see performance degrade.

The performance Loss is not minimal.

And if you know what you are doing you can use guids. (only in a replicated scenario). But unfortunately lot's of people design a table in the Enterprise Manager, they select a UniqeIdentifier as the primary key and then it becomes automatically a clustered index.

I hope this answers your question, Why put a Clustered index on a GUID.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Tuesday, March 30, 2004 6:29 PM by Patrick Wellink
Why wouldn't city and country not be a perfect candidate for a clustered index? It all depends of the costs of an insert againt the win of disk I/O with a select statement.

Ofcourse you will want columns in a clustered index that preferably won't change in time. But that is just preferable in most databases.

What I ment is that using guids as primarykey WITHOUT using it in an clusteredindex (because that would result in random datapage inserts thus resulting in huge performanceloss) relative to it's 4x size of a normal int does not result in a bad performance. You cannot test this in a queryanalyzer session just on SQL server because you must do these kind of test from a normal application that also generates the guid.

The performance loss is in most situation's neglectable because of application logic and network i/o.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Wednesday, March 31, 2004 8:49 AM by Patrick Wellink
No CITY and Country would neve be good clustered indexes.

As a rule of thumb, every table should have a clustered index. Generally, but not always, the clustered index should be on a column that monotonically increases--such as an identity column, or some other column where the value is increasing--and is unique. In many cases, the primary key is the ideal column for a clustered index.


City and country both share the same caracteristics. 'They don't Increase monotonically' and 'are not unique' that is why I would never create a clustered index on them.

Second....

I have seen the performance hit on a logging table. The logging table would grow to over 1.5 million records. The last insert took over 30 seconds and caused a Timeout.

So you really have to know hat you are doing if you are playing around with guids. If you do, it is ok to use them.


# re: The Last C# tool you will ever need !!!!!

Wednesday, March 31, 2004 7:30 PM by Patrick Wellink
Hahahaha, you *^$(#

Where did you get this image from? :)

# re: The Last C# tool you will ever need !!!!!

Thursday, April 01, 2004 10:25 AM by Patrick Wellink
Great april fools joke!

# re: The Last C# tool you will ever need !!!!!

Thursday, April 01, 2004 10:31 AM by Patrick Wellink
This is a real program !
Download the VB Resource kit and you will see...

# re: The Last C# tool you will ever need !!!!!

Thursday, April 01, 2004 10:34 AM by Patrick Wellink
If you don't want to downl;oad the resource kit :

http://authors.aspalliance.com/aldotnet/examples/translate.aspx

# re: The Last C# tool you will ever need !!!!!

Thursday, April 01, 2004 2:30 PM by Patrick Wellink
I actually works. Coolaboola

# re: The Last C# tool you will ever need !!!!!

Thursday, April 01, 2004 2:31 PM by Patrick Wellink
I actually works. Coolaboola

# re: The Last C# tool you will ever need !!!!!

Thursday, April 01, 2004 2:41 PM by Patrick Wellink

I told you this was not an april fools joke!
as it was posted Yesterday.......


# Stirring up the GUID discussion

Tuesday, April 13, 2004 1:51 PM by TrackBack

# re: The Last C# tool you will ever need !!!!!

Wednesday, April 14, 2004 9:27 AM by Patrick Wellink
The download url:

http://csharpconverter.claritycon.com/Default.aspx

# re: Nice Article About Exceptions in Biztalk.

Thursday, April 15, 2004 10:34 AM by Patrick Wellink
Don't you like C#? A couple of years ago I was a VB.NET advocate, but now I "speak" both languages. Sometimes I like VB.NET more, sometimes C#. Only one thing is missing from C#: background compilation, in VB.NET it saves me A LOT of time! :-)

# re: Nice Article About Exceptions in Biztalk.

Thursday, April 15, 2004 11:30 AM by Patrick Wellink

need i say more ....

# GUID is not always GOOD! (a true RTFM story)

Thursday, April 15, 2004 4:04 PM by TrackBack
GUID is not always GOOD! (a true RTFM story)

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Friday, May 14, 2004 10:05 PM by Patrick Wellink
This is currently a heated discussion within our organization. I personally do not care if my PK is a guid or autonumber. I DO care about generating this ID in the middle tier instead of at the database level. Can you please elaborate on why this is a bad practice and should be avoided? I know it revolves around database integrity, but I can remember the exact issue. Any help or other refrences would be greatly appreciated.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, May 17, 2004 10:52 AM by Patrick Wellink
Well I think it is better to let the database decide what a key is than decide yourself.

But ok here is the underlying logic....

Since the database decides if a record is valid, only the database can assure me that a key is valid. And a key is only valid if a record was succellfully committed....

By assuming that a GUID is unique you think you have solved the problem of creating keys....

But a key is only valid if it is accepted by the database... (and commited) So this involves a round trip to make sure it is accepted.

Since you are doing a roundtrip anyway why not get the pk back from the database in that same roundtrip.

I know this is not true for specific situations, but this is the general rule

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, May 17, 2004 4:24 PM by Patrick Wellink
Patrick, thanks for the response, it has been very helpful. I too am also strongly opposed to the use of GUID's as a priamry key. As you have pointed out the disadvanteges far outweigh the advantages of global uniqueness. (Even though this too can easily be accounted for with ints as you have pointed out.) Here is my exact problem, our team is convinced that a round trip can be avoided through the use of guids and an isolation level of serializeable. We will be using serializeable transactions for both reads and writes. In this scenario, is there anything else you can think of that would be determental to data integrity? What about cascading updates and deletes? I just need some sort of concrete evidence to turn the tides and convince everyone once and for all. This thread has been extremely helpful and has made a huge impact in our organization. I would like to thank everyone who has responded.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, May 17, 2004 4:42 PM by Patrick Wellink
Run the query !!!!!

If you don't see a difference your machine is to fast, just increase the numbers a little

This whole discussion was about performance.

The reason why you shouldn't use GUID's is performance...

And I mean performance in life situations with lotsa records....

Sure sure in a test environment everything works fine, until you start inserting a serious amount of records.

Success

# re: Very usefull tool for everybody with a PocketPC

Tuesday, May 18, 2004 9:13 AM by Patrick Wellink
Very funny indeed! About the MSX emulator, I don't have a PocketPC so I don't care! ;)

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, May 24, 2004 11:56 AM by Patrick Wellink
There seems to be some misunderstanding about advantages of clustering here - with a clustered index the index is the data so once the page entry of the index is found that page has the data - there are OFTEN times when a non-unique key is the best for clustering - e.g. take an app where you have a number of client's and their purchase history - chances are you will want to pull back full purchase history for each client - so on the purchase history table the id of the client would be the one to cluster - keeping all data for same client together in the same data pages so once SQL Server has retrieved a page most of the required data is there in the same page

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Friday, June 04, 2004 8:49 PM by Patrick Wellink
One thing that I found VERY interesting wasn't the bulk insert times, but rather comparing the search times on large tables with guids vs ints. Making all things equal by creating non-clustered indexes on all tables, I found that the search were between 35-40% faster by using the integer index!!! This test involved 2 sets of 4 tables with 10,000 rows each. One set was for integer primary keys, another for guids. The first table represents an "accounts" table, and the other three were joined in one-one relationships based on the primary key.

Here is the modified script taken from the previous example.

SET NOCOUNT ON

-- IDENTICAL CODE WITH AN ID

DECLARE @START1 DATETIME
DECLARE @END1 DATETIME
DECLARE @COUNTER1 INT
DECLARE @ACCOUNTID INT

CREATE TABLE ACCOUNTIDTBL
(
ID INT IDENTITY PRIMARY KEY NONCLUSTERED,
ACCOUNTCREATEDATE DATETIME DEFAULT GETDATE(),
ACCOUNTFIELD1 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD2 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD3 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD4 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD5 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD6 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD7 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD8 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD9 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD10 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD11 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD12 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD13 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD14 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD15 VARCHAR(200) DEFAULT NEWID()
)
CREATE TABLE TABLE1IDTBL
(
ID INT IDENTITY PRIMARY KEY NONCLUSTERED,
ACCOUNTID INT,
TABLE1CREATEDATE DATETIME DEFAULT GETDATE(),
TABLE1FIELD1 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD2 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD3 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD4 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD5 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD6 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD7 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD8 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD9 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD10 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD11 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD12 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD13 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD14 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD15 VARCHAR(200) DEFAULT NEWID()
)
CREATE TABLE TABLE2IDTBL
(
ID INT IDENTITY PRIMARY KEY NONCLUSTERED,
ACCOUNTID INT,
TABLE2CREATEDATE DATETIME DEFAULT GETDATE(),
TABLE2FIELD1 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD2 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD3 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD4 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD5 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD6 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD7 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD8 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD9 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD10 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD11 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD12 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD13 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD14 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD15 VARCHAR(200) DEFAULT NEWID()
)
CREATE TABLE TABLE3IDTBL
(
ID INT IDENTITY PRIMARY KEY NONCLUSTERED,
ACCOUNTID INT,
TABLE3CREATEDATE DATETIME DEFAULT GETDATE(),
TABLE3FIELD1 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD2 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD3 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD4 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD5 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD6 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD7 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD8 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD9 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD10 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD11 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD12 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD13 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD14 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD15 VARCHAR(200) DEFAULT NEWID()
)

SET @START1 = GETDATE()
SET @COUNTER1 = 1
WHILE @COUNTER1 < 10000
BEGIN
INSERT ACCOUNTIDTBL DEFAULT VALUES
SET @ACCOUNTID = @@IDENTITY
INSERT TABLE1IDTBL (ACCOUNTID) VALUES (@ACCOUNTID)
INSERT TABLE2IDTBL (ACCOUNTID) VALUES (@ACCOUNTID)
INSERT TABLE3IDTBL (ACCOUNTID) VALUES (@ACCOUNTID)
SET @COUNTER1 = @COUNTER1 + 1
END
SET @END1 = GETDATE()
SELECT 'INSERT DURATION TIME USING ID',DATEDIFF(MS,@START1,@END1)

--End of insert, now do select benchmarking
SET @START1 = GETDATE()

SELECT *
FROM ACCOUNTIDTBL INNER JOIN
TABLE1IDTBL ON ACCOUNTIDTBL.ID = TABLE1IDTBL.ACCOUNTID INNER JOIN
TABLE2IDTBL ON ACCOUNTIDTBL.ID = TABLE2IDTBL.ACCOUNTID INNER JOIN
TABLE3IDTBL ON ACCOUNTIDTBL.ID = TABLE3IDTBL.ACCOUNTID
WHERE (ACCOUNTIDTBL.ID = @ACCOUNTID)
SET @END1 = GETDATE()
SELECT 'SELECT DURATION TIME USING ID',DATEDIFF(MS,@START1,@END1)



-- IDENTICAL CODE BUT NOW WITH A GUID

DECLARE @START DATETIME
DECLARE @END DATETIME
DECLARE @COUNTER INT
DECLARE @ACCOUNTGUID UNIQUEIDENTIFIER

CREATE TABLE ACCOUNTGUIDTBL
(
ID UNIQUEIDENTIFIER DEFAULT NEWID()PRIMARY KEY NONCLUSTERED,
ACCOUNTGUID UNIQUEIDENTIFIER,
ACCOUNTCREATEDATE DATETIME DEFAULT GETDATE(),
ACCOUNTFIELD1 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD2 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD3 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD4 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD5 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD6 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD7 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD8 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD9 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD10 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD11 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD12 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD13 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD14 VARCHAR(200) DEFAULT NEWID(),
ACCOUNTFIELD15 VARCHAR(200) DEFAULT NEWID()
)

CREATE TABLE TABLE1GUIDTBL
(
ID UNIQUEIDENTIFIER DEFAULT NEWID()PRIMARY KEY NONCLUSTERED,
ACCOUNTGUID UNIQUEIDENTIFIER,
TABLE1CREATEDATE DATETIME DEFAULT GETDATE(),
TABLE1FIELD1 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD2 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD3 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD4 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD5 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD6 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD7 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD8 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD9 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD10 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD11 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD12 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD13 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD14 VARCHAR(200) DEFAULT NEWID(),
TABLE1FIELD15 VARCHAR(200) DEFAULT NEWID()
)

CREATE TABLE TABLE2GUIDTBL
(
ID UNIQUEIDENTIFIER DEFAULT NEWID()PRIMARY KEY NONCLUSTERED,
ACCOUNTGUID UNIQUEIDENTIFIER,
TABLE2CREATEDATE DATETIME DEFAULT GETDATE(),
TABLE2FIELD1 VARCHAR(200) DEFAULT NEWID(),
TABLE2IELD2 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD3 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD4 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD5 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD6 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD7 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD8 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD9 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD10 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD11 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD12 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD13 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD14 VARCHAR(200) DEFAULT NEWID(),
TABLE2FIELD15 VARCHAR(200) DEFAULT NEWID()
)

CREATE TABLE TABLE3GUIDTBL
(
ID UNIQUEIDENTIFIER DEFAULT NEWID()PRIMARY KEY NONCLUSTERED,
ACCOUNTGUID UNIQUEIDENTIFIER,
TABLE3CREATEDATE DATETIME DEFAULT GETDATE(),
TABLE3FIELD1 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD2 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD3 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD4 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD5 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD6 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD7 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD8 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD9 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD10 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD11 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD12 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD13 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD14 VARCHAR(200) DEFAULT NEWID(),
TABLE3FIELD15 VARCHAR(200) DEFAULT NEWID()
)

SET @START = GETDATE()
SET @COUNTER = 1
WHILE @COUNTER < 10000
BEGIN

SET @ACCOUNTGUID = NEWID()
INSERT ACCOUNTGUIDTBL(ACCOUNTGUID)VALUES(@ACCOUNTGUID)
INSERT TABLE1GUIDTBL(ACCOUNTGUID)VALUES(@ACCOUNTGUID)
INSERT TABLE2GUIDTBL(ACCOUNTGUID)VALUES(@ACCOUNTGUID)
INSERT TABLE3GUIDTBL(ACCOUNTGUID)VALUES(@ACCOUNTGUID)
SET @COUNTER = @COUNTER + 1
END
SET @END = GETDATE()
SELECT 'INSERT DURATION TIME USING GUID',DATEDIFF(MS,@START,@END)

--End of insert, now do select benchmarking
SET @START = GETDATE()

SELECT *
FROM ACCOUNTGUIDTBL INNER JOIN
TABLE1GUIDTBL ON ACCOUNTGUIDTBL.ACCOUNTGUID = TABLE1GUIDTBL.ACCOUNTGUID INNER JOIN
TABLE2GUIDTBL ON ACCOUNTGUIDTBL.ACCOUNTGUID = TABLE2GUIDTBL.ACCOUNTGUID INNER JOIN
TABLE3GUIDTBL ON ACCOUNTGUIDTBL.ACCOUNTGUID = TABLE3GUIDTBL.ACCOUNTGUID
WHERE (ACCOUNTGUIDTBL.ACCOUNTGUID = @ACCOUNTGUID)
SET @END = GETDATE()
SELECT 'SELECT DURATION TIME USING GUID',DATEDIFF(MS,@START,@END)

-- DROP TABLE ACCOUNTGUIDTBL
-- DROP TABLE TABLE1GUIDTBL
-- DROP TABLE TABLE2GUIDTBL
-- DROP TABLE TABLE3GUIDTBL
-- DROP TABLE ACCOUNTIDTBL
-- DROP TABLE TABLE1IDTBL
-- DROP TABLE TABLE2IDTBL
-- DROP TABLE TABLE3IDTBL

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, June 07, 2004 8:14 AM by Patrick Wellink
Thanks Chris,

Another reason to leave the guid.

GUID is not always bad, sometimes you have to but you need to have a real strong argument to use one.

# Reread post about GUID's

Monday, June 07, 2004 8:23 AM by TrackBack

# re: Whooooooooooow very nice indeed....

Friday, June 11, 2004 1:25 PM by Patrick Wellink
First off, I rolled over the floor, laughing, because of your funny post. And thanks for calling me a "very experienced C# programmer". :)

But seriously, I can't remember your question and deleted the emails, but I must've wrongly interpreted your question. I can't remember you asking this or I would've come up with an answer. If you could email our conversation again, I'd be happy to look into it again! :)

Any, if you only refer to the block that surrounds your choice, you copied that from my onto your own blog! And if you want menus, check out dhtmlcentral.com

Finally, if everything goes well, we'll order Infragistics tools (www.infragistics.com) for a project and we'll be able to use it on other projects as well. So if your question is business related, you can use it as well! :)

# re: Whooooooooooow very nice indeed....

Friday, June 11, 2004 2:43 PM by Patrick Wellink
Indeed I see what you mean....
it is the same menu like stuff used on wasabi....

Now I see that I copied it from your style sheet.......

But I never realised it was that easy

# re: Whooooooooooow very nice indeed....

Friday, June 11, 2004 3:04 PM by Patrick Wellink
So we notice some things:

- You asked a totally different question to me via email
- I DO know the answer
- You're not paying attention to your blog and/or do things you do yourself! ;)

Even?! ;)

# re: Whooooooooooow very nice indeed....

Friday, June 11, 2004 3:05 PM by Patrick Wellink
Oh, and btw, in the Microsoft menu there's the ability that items that have been chosen, are selected after page's refresh, if I'm not mistaken

# re: Whooooooooooow very nice indeed....

Friday, June 11, 2004 3:50 PM by Patrick Wellink
Simple CSS stuff, pff....

Every technical consultant of the former RTSD1 unit should know this...
Why else were we called a "web development" unit?

# re: Whooooooooooow very nice indeed....

Friday, June 11, 2004 3:52 PM by Patrick Wellink
If you want to see CSS taken to its extreme (almost), take a look at http://www.csszengarden.com/

# re: Whooooooooooow very nice indeed....

Friday, June 11, 2004 4:09 PM by Patrick Wellink
Yes I know now that CSS is powerfull, But Dennis, I Asked you the same......

But i thought you had to add the onmouse stuff. An dthat is why i wanted to put it in a usercontrol.

But the properties.add is not needed if you do it the right way.

And Ernst, I really don't know why we are called "Web Developement" unit.

Maybe because we browse the web a lot about devolpement ?

# re: Very nice Smiley

Friday, June 18, 2004 9:19 AM by Patrick Wellink
Wow, thanks for sharing your knowledge with the world!!!

# re: Very nice Smiley

Friday, June 18, 2004 9:47 AM by Patrick Wellink

No thanks at all Dennis, hope you can improve some user's experience with it.......






# re: Biztalk Adapter Wizzard....

Friday, July 09, 2004 9:56 AM by Patrick Wellink
I really thing wizard is with a single "z"

But it's great there's a wizzard out for it, thanks for the link! :)

# re: Biztalk Adapter Wizard....

Friday, July 09, 2004 1:51 PM by Patrick Wellink
corrected the post

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Friday, July 23, 2004 11:42 PM by Patrick Wellink
Patrick,

I am about to use GUIDs since I have to support an online/offline briefcase model.

GUID is the only way I can create data in the offline mode without a trip to the server for a PK. The other option is to code a complex "pending" local database to run parallel with the server-approved local database or some-such malarky. Tell me if there are other solutions you have seen that are possible.

(There is enough data on the clients to have necessitated MSDE. I don't plan to use Sql Server's merge replication feature, though I am aware that it works and uses GUIDs. Our system is more real-time when online than merge-replication can offer. I have some data that is read-only for the remote users, and other that they must author -- use GUID only for the data they must author or standardize with GUIDs everywhere? I have control of schema.)

In my case, GUIDs seem the best choice.
Also, the data volume is not large whatsoever.

Any last suggestions, blessings, wardings?

Very good thread; a meaningful debate.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Friday, July 23, 2004 11:43 PM by Patrick Wellink
Patrick,

I am about to use GUIDs since I have to support an online/offline briefcase model.

GUID is the only way I can create data in the offline mode without a trip to the server for a PK. The other option is to code a complex "pending" local database to run parallel with the server-approved local database or some-such malarky. Tell me if there are other solutions you have seen that are possible.

(There is enough data on the clients to have necessitated MSDE. I don't plan to use Sql Server's merge replication feature, though I am aware that it works and uses GUIDs. Our system is more real-time when online than merge-replication can offer. I have some data that is read-only for the remote users, and other that they must author -- use GUID only for the data they must author or standardize with GUIDs everywhere? I have control of schema.)

In my case, GUIDs seem the best choice.
Also, the data volume is not large whatsoever.

Any last suggestions, blessings, wardings?

Very good thread; a meaningful debate.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, July 26, 2004 7:33 AM by Patrick Wellink
Well if you feel you have to use GUIDs, use them, But one of the issue's in the debate was, to only use them when you really have to. So the second part of your question is a definite no. (should we use them everywhere)

In the scenario you describe I would probably use a GUID as well.

# re: Why I Like If / Endif

Friday, August 20, 2004 2:54 PM by Patrick Wellink
Well, I spotted the error right away so thanks for the compliment ;-)

I guess any good coder will spot the error almost instantly because the absence of brackets in this case is clearly going to cause confusion.

I ALWAYS use {} to keep code readable and maintainable, even with only one line of code.

# re: Why I Like If / Endif

Friday, August 20, 2004 4:00 PM by Patrick Wellink
You forgot the 'h' in which? ;-)

BTW. I guess you mean VB.NET when you speak of VB?

# re: Why I Like If / Endif

Friday, August 20, 2004 5:02 PM by Patrick Wellink
Well Ernst,

This was done by some Microsoft dude.....
I guess they know c#...

Are you saying they are not good coders at MS ??? (or are you only guessing)

And Roland thanks I corrected the error.
And yep I do mean VB.NET.

# re: Why I Like If / Endif

Friday, August 20, 2004 7:18 PM by Patrick Wellink
So, Patrick, what are you trying to say? Everybody at MS is perfect? Is that why we know expressions like "DLL hell" and "blue screen of death"...? :-)

>> "Are you saying they are not good coders at MS" - I think some people would love to argue with you on this one...

And MS released VB for .NET so it's hard to argue they don't make mistakes ;-)

Even guys at MS make mistakes and I've had my share of errors, but I'm just saying that in this particular case, I always use brackets.

# re: Why I Like If / Endif

Saturday, August 21, 2004 1:59 AM by Patrick Wellink
Well Ernst,

I just tried to make clear that the people who invented c# even get confused themselves....

In VB this error would never have happened.
And the code would be more compact.

Something needing only 10 lines of VB code
and perfectly clear to everybody would need 22 lines in C# to be clear.

No wonder all these real programmers (you no c# boyz) need a 40 inc LCD.

# re: Why I Like If / Endif

Saturday, August 21, 2004 1:43 PM by Patrick Wellink
De geneste if in deze code is zowiezo overbodig. Je had ze kunnen combineren in een if statement (zie m'n comment op blog zelf). Voor if statements met slechts een statement erna vindt ik {} de leesbaarheid van de code aanzienlijk verminderen, want in plaats van 2 regels heb ik er nu 4, wat het overzicht over een routine vermindert. Blijft een questie van smaak (en teamafspraken!).

# re: Why I Like If / Endif

Tuesday, August 24, 2004 8:00 AM by Patrick Wellink
hehehe..... Gerke...... long time no see!

# re: Why I Like If / Endif

Wednesday, August 25, 2004 5:02 PM by Patrick Wellink

Come on guys...... admid it

If / Endif RULEZ !!!!!

# re: Some things can make a Difference

Saturday, August 28, 2004 9:42 AM by Patrick Wellink
LOL. I don;t care in which language I have to work. There are things in VB I like, and there are things in C# as well. And you saw in my posting I now use both in one project :-)

# re: Some things can make a Difference

Saturday, August 28, 2004 3:12 PM by Patrick Wellink
I wonder why you post this kind of articles, like you want to defend yourself...

Maybe there's a reason why you feel this way ;-)

# re: Some things can make a Difference

Saturday, August 28, 2004 7:04 PM by Patrick Wellink

Yep Ernst there is a reason why I feel this way.....

For some obscure reason everybody went from vb to c#.

There is no real reason for that, and in a lot of companies it was a MANAGEMENT decision. And now everybody is brainwashed and won't even take vb serious.

At least that is the way it seems.....

# re: Some things can make a Difference

Sunday, August 29, 2004 7:41 PM by Patrick Wellink
Patrick,

In our case (you and me and almost everyone who posts at this blogserver) management did indeed make the decision to change from VB6 to C#. That's kinda odd because management usually knows diddley squad about technology.
But in this case they were advised by very senior consultants and some management of our unit does know a bit about .net (like Mark).

Anyway, it did sound obvious to change from VB6 to VB.NET. But after a while of getting used to it, I like C# better.
Why? There are a lot of reasons, but my choice and reasons don't matter. It's like a religious discussion, no-one will win.
Just use the language you like, depending which solution you want to build.

And as for our discussions about C# and VB.NET...
We like a funny discussion and you bring out the best in us ;-)

# re: Some things can make a Difference

Monday, August 30, 2004 12:10 AM by Patrick Wellink
Ernst...

Couldn't have said it better myself....
And hey..... Just because there is some kind of establishment...... You should kick it just every now and then....... Just to keep everybody awake....

And oh yes..... Just because some Heavy dudes had a look at it, doesn't make it a good management decision at all....Do you know how many very expensive heavy dude advisors told the dutch people they Really Really REALLY need a 'Betuwe lijn' ..... If you need somebody else to prove your point to don't even bother.........

A good management decision would be...
Hmmm we got XXX mony from the customer and we got YYY work to do....

Dammmm programmer Go to work, program as fast as you can, deliver YYYY for XX and we want it yesterday....

And NO we don't care if you smell and if you walk backwards as long as you get the job done in time with the tools you need.....

What are you saying... VB...C#.... who the hell cares, as long as it gets the job done in time.. please don't bother me with details.......

# re: Some things can make a Difference

Monday, August 30, 2004 3:12 AM by Patrick Wellink
Blame me (for the C# advise)! And I agree that VB.NET does have its place. No language can be good in everything.

By the way, the advise for C# was more motivated by non-language factors than the languages themselves: (non-Microsoft) tool support being an important one...

# re: Some things can make a Difference

Monday, August 30, 2004 7:17 AM by Patrick Wellink
I was not referring only to our company Gerke... It is more general than that....

# re: VB Adds new Keyword !

Tuesday, August 31, 2004 7:49 AM by Patrick Wellink
LOL!

# re: VB Adds new Keyword !

Tuesday, August 31, 2004 8:16 AM by Patrick Wellink
ain't it great

# re: Why I Like If / Endif

Tuesday, August 31, 2004 11:19 AM by Patrick Wellink
Easy one... when watching/debugging code one of the first things to check is alignment.

Our company policy it to use brackets but I don't agree with that one. The same as also using just one return in a method. If that would be the semantics of a language then the compiler would punish us for being stupid :)

Dennis will probably remember the drills for learning c of the teacher at Zadkine College Christiaan Huygens van 't Hof. Bracket checks and alignment was part of that. The for uninitialized variables but c# won't allow that anymore :) damn those were the days on those f**king old VMS machines.

if statements that contains just one line of code should be put on one line :) but that is my opinion. Not of my employer.

# re: Why I Like If / Endif

Tuesday, August 31, 2004 11:22 AM by Patrick Wellink
B.t.w. the new C++ compiler allows such readable code in .NET that I am thinking of moving from C# to C++ because why use C# when you have workable/readable C++ available?

Then this discussion will turn into a nice VB againt C++ battle like some years ago :)

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Thursday, September 02, 2004 12:22 AM by Patrick Wellink
Hi John,

Try using COMB GUIDs as described in
http://www.informit.com/articles/article.asp?p=25862&redir=1

It may help in increasing performance.

Could you let me know what replication technology you are using if you are not using Merge Replication...just curious.

Niben

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Thursday, September 02, 2004 9:18 AM by Patrick Wellink

Well I had a read of the article, interesting but it is still VERY undesirable to have them as a clustered primary key.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Thursday, September 02, 2004 6:19 PM by Patrick Wellink
Patrick, why is it undesirable to have as clustered pk?

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Thursday, September 02, 2004 6:59 PM by Patrick Wellink
Also, any thoughts about GUID as non-clustered index. It seems to work pretty well for me.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Friday, September 03, 2004 9:10 AM by Patrick Wellink
Well Try it yourself....

Create a table with a GUID as a PK
Insert 2 milion records to it in batches of 10.000

Note the time it takes to insert the records.

you will see a real SUBSTANTIAL increase in time.

To get you started here is a sample table :

SET NOCOUNT ON

DECLARE @START DATETIME
DECLARE @END DATETIME
DECLARE @COUNTER INT

CREATE TABLE TESTTABLEGUID
(
ID UNIQUEIDENTIFIER DEFAULT NEWID() PRIMARY KEY,
FIELD1 CHAR(200) DEFAULT NEWID(),
FIELD2 CHAR(200) DEFAULT NEWID(),
FIELD3 CHAR(200) DEFAULT NEWID(),
FIELD4 CHAR(200) DEFAULT NEWID(),
FIELD5 CHAR(200) DEFAULT NEWID(),
FIELD6 CHAR(200) DEFAULT NEWID(),
FIELD7 CHAR(200) DEFAULT NEWID(),
FIELD8 CHAR(200) DEFAULT NEWID(),
FIELD9 CHAR(200) DEFAULT NEWID(),
FIELD10 CHAR(200) DEFAULT NEWID(),
FIELD11 CHAR(200) DEFAULT NEWID(),
FIELD12 CHAR(200) DEFAULT NEWID(),
FIELD13 CHAR(200) DEFAULT NEWID(),
FIELD14 CHAR(200) DEFAULT NEWID(),
FIELD15 VARCHAR(200) DEFAULT NEWID()
)



SET @START = GETDATE()
SET @COUNTER = 1
WHILE @COUNTER < 10000
BEGIN
INSERT TESTTABLEGUID DEFAULT VALUES
SET @COUNTER = @COUNTER + 1
END
SET @END = GETDATE()
SELECT 'DURATION GUID',DATEDIFF(MS,@START,@END)
DROP TABLE TESTTABLEGUID


# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Friday, September 03, 2004 9:12 AM by Patrick Wellink
Oh and I forgot to tell yopu to try it with an ID as a PK too, you will see there is no performance loss at all....

# re: Important to know when building scalable .NET applications

Thursday, September 16, 2004 9:53 AM by Patrick Wellink
Ok now the interresting question is how do you set an application to server build ?

# re: Important to know when building scalable .NET applications

Thursday, September 16, 2004 9:57 AM by Patrick Wellink
I don't knwo but surely there is something about it on google......

hey and if you find it post it here please.....

# re: Important to know when building scalable .NET applications

Thursday, September 16, 2004 10:50 AM by Patrick Wellink
Found a link.... Added it to the article

# re: Important to know when building scalable .NET applications

Thursday, September 16, 2004 11:00 AM by Patrick Wellink
Finally something usefull from you, Patrick...

And something that works with both VB.NET and C# ;-)

# re: Important to know when building scalable .NET applications

Thursday, September 16, 2004 11:11 AM by Patrick Wellink
From what I understand is that the config file only influences the way the GC works.

Why do you think it also makes a difference in the usage of CPU's? Do you have some info or link?

# re: Important to know when building scalable .NET applications

Thursday, September 16, 2004 12:09 PM by Patrick Wellink
Well thanks Ernst....

added another link from MSDN where the number of processors is explained

# re: Important to know when building scalable .NET applications

Thursday, September 16, 2004 1:10 PM by Patrick Wellink
I've read a number of articles on this topic.

Conclusion: there is NO supported way with v1.0 or v1.1 to specify server GC mode without an unmanaged host...!

With Whidbey (v2.0) and v1.1 SP1 (recently released) there is the ability to specify the gc mode in the application's config file.

# re: Important to know when building scalable .NET applications

Thursday, September 16, 2004 11:45 PM by Patrick Wellink
According to this article http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/highperfmanagedapps.asp you do not have to worry about ASP.NET applications because they always use the Server GC.

# re: Important to know when building scalable .NET applications

Friday, September 17, 2004 9:32 AM by Patrick Wellink
Hmmm... a lot of contradictory info on this topic.

Why does the article, posted by Erwyn, mention the MSDN article from March 01 in which the CLR is explicitly hosted by an unmanaged host?

How can this article say that ASP.NET always hosts the server GC automatically when in other articles it is said that the workstation GC is loaded when only 1 CPU is available?

# re: I would like to do that but I don't know how.....

Friday, October 01, 2004 7:27 AM by Patrick Wellink
very simple Patrick:

For Each Mystr As String In BlaBla
Mystr.Trim()
Next

# re: I would like to do that but I don't know how.....

Friday, October 01, 2004 10:16 AM by Patrick Wellink
Hmmmmmm...(easy)

thanksalot Jan

# re: Ok, a .NET question this time

Tuesday, October 05, 2004 3:56 PM by Patrick Wellink
Why have a service to do something that a Class Library can do?

# re: Ok, a .NET question this time

Tuesday, October 05, 2004 3:58 PM by Patrick Wellink
Because a class can't.....

Complicated biztalk issue.....

I tried a class and it won't work from within Biztalk.....

I have to use a service.....

# re: Ok, a .NET question this time

Tuesday, October 05, 2004 4:18 PM by Patrick Wellink
It looks like you need another security context for your class (am I right?).

I guess the best way to go is Enterprise Services. Configure your component with a specific identity that suites your need. That way you can directly call it from you code.

Sounds easier then it is, though.

# re: Ok, a .NET question this time

Tuesday, October 05, 2004 4:36 PM by Patrick Wellink
Well carlo,

I have a component that performs a submitsync (it is from the biztalk samples) if i use this component form a forms app everything works as expected. But if I use it in an orchestration i get error messages.

I really don't know why but some other guru From Microsoft told me submitsync in an orchestration rings a bell and he thought it wouldn't work.

I REALLY need the submitsync Functionality so i now want to wrap that in a service and then call the service from the orchestration....

I know this solution doesn't deserve a 'Schoonheidsprijs' but the other programmers keep shifting all problems my way.

# re: Ok, a .NET question this time

Tuesday, October 05, 2004 8:48 PM by Patrick Wellink
Windows Services is Ch. 6 from QUE MCAD 70-320. Send me a message and I'll mail you back the examples zip of that chapter. I guess that is legal given that we are colleagues and our company paid for the book.

# re: Ok, a .NET question this time

Friday, October 08, 2004 12:52 PM by Patrick Wellink
My guess is you want your Windows Service to act as a container for a Math component implementing the AddNumbers function?

- Expose the service interface using .Net remoting (note that .Net remoting offers no build-in security)

- Host the Math component in COM+ and generate a proxy referenced by your WinForm client

- Wire up a web service as the Facade over your Math component

And Roland is correct, 320 offers a lot of information on how to service functionality.

# re: Ok another simple .NET question about namespaces

Monday, October 11, 2004 5:52 PM by Patrick Wellink
I have hacked together some code for a command line tool that displays all namespaces used by elements and attributes in an XML document. You can download the source and executable from here http://www.xs4all.nl/~yorrick/code/ReadOutXmlNamespaces.zip

For your convenience I have written it in C# :) It is provided "AS IS".

Usage: NamespaceReader.exe [/I | xmlfilename]

/I Read stdin
xmlfilename The filename of an XML document

# re: Ok another simple .NET question about namespaces

Monday, October 11, 2004 8:47 PM by Patrick Wellink
XmlTextReader implementeert de W3C Namespace specificatie. De namespace van de huidige node is op te vragen middels de NamespaceURI (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxmltextreaderclassnamespaceuritopic.asp).

# re: Ok another simple .NET question about namespaces

Tuesday, October 12, 2004 11:27 AM by Patrick Wellink
thanks guys

# re: Why I Like If / Endif

Friday, October 15, 2004 6:18 PM by Patrick Wellink
Ernst is right; it is Good, disciplined coding practice (in any language) to alwaye use braces. It shouldn't surprise you so much that someone at M$ has less-than-perfect coding practices!

# re: Biztalk Behaviour..

Tuesday, October 26, 2004 9:47 AM by Patrick Wellink
And this collegue is Fijsjan Heijkoop. The latest member of the BizTalk crew at the Rotterdam office.

Thanks alot Fijsjan!

# re: Trouble with BizTalk Isolated host (Help)

Thursday, October 28, 2004 8:06 PM by Patrick Wellink
I have the exact same problem. The submit works fine when it is called from some c# code but when I try it from an orchestration, I get the same error. Did you figure out the problem? I can't figure it out for the life of me.

# re: Trouble with BizTalk Isolated host (Help)

Friday, October 29, 2004 8:11 AM by Patrick Wellink
No i did not,
couldn't figure it out and I am still trying to find another way to solve it.

# re: Trouble with BizTalk Isolated host (Help)

Friday, October 29, 2004 7:44 PM by Patrick Wellink
I just talked to some msft consultants and they told me that it is not possible to use the submit direct from an orchestration. Looks like I'll have to find another way. Good luck.

# re: Trouble with BizTalk Isolated host (Help)

Monday, November 01, 2004 7:28 AM by Patrick Wellink
Ok thanks....

I already figured out another way.....
but thanks for the feedback.....

# re: Ok Very BASIC .NET Question

Tuesday, November 09, 2004 9:47 AM by Patrick Wellink
I'd like to know more about the stretching. Why and when does it stretch? Why is it so important?

I know with javascript you can get the width of the browser and use it to postback to the server, draw the image with that information, but that's a sucking solution.

I don't know exactly how you can use an image as background in a table and make it stretch along with the table width. Maybe it's easy, dunnow exactly. Then you place some text inside the table and done. I think that's the best solution, because using the width of the browser for the width of the picture isn't hard, but probably a lousy solution.

# re: Ok Very BASIC .NET Question

Tuesday, November 09, 2004 10:00 AM by Patrick Wellink
Well if you have a very small picture as a basis the webpage remains fast if you have limited bandwith. Also if the same picture is used everywhere caching can be effective !

If you generate it all the time over and over again caching is impossible and the webserver would be generating pictures all the time instead of serving webpages.

That's why i want the image to stretch

# re: Ok Very BASIC .NET Question

Tuesday, November 09, 2004 11:20 AM by Patrick Wellink
Have a look at CSS relative/absolute positioning documentation.

# re: Ok Very BASIC .NET Question

Tuesday, November 09, 2004 11:56 AM by Patrick Wellink
I will,

But as you mention this you probably have a clou how to fix it........

Are you absolutely shure you can fix it with this or is it yust a guess

And if you are absolutely sure please gimme some more help.......

# re: Ok Very BASIC .NET Question

Wednesday, November 10, 2004 10:16 AM by Patrick Wellink
I see gradient.. I see text.. Why don't you use DX filters in your css classes? Works perfect in IE. If you are doing a intranet site then this works perfect. I used a DX filter to get the gradient and on top of that a generated gif image that contains the text with the fonttype you want to use. If you are using a font that the client already has then you can even forget the image rendering.

# re: Ok Very BASIC .NET Question

Wednesday, November 10, 2004 1:33 PM by Patrick Wellink
Can you paste a sample here ????

# re: Ok Very BASIC .NET Question

Thursday, November 11, 2004 8:03 AM by Patrick Wellink
Patrick, have a look at this link. It describes the use of DX-Filters in ASP.Net:
http://www.developer.be/index.cfm/fuseaction/tutorialDetail/GroupID/78.htm

# re: Ok Very BASIC .NET Question

Thursday, November 11, 2004 8:11 AM by Patrick Wellink
This link is more detailed on opacity and gradients: http://www.codeproject.com/books/learnsvgchapter07.asp

# re: Ok Very BASIC .NET Question

Thursday, November 11, 2004 8:15 AM by Patrick Wellink
Hmmm, remove that last link. Useless

# re: Ok Very BASIC .NET Question

Thursday, November 11, 2004 9:15 AM by Patrick Wellink
Let's try it with simle DHTML:

<pre>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<style type="text/css">
.bgimg
{
width: 100%;
height: 100%;
}
.bgdiv
{
z-index: auto;
position: absolute;
top: 0px;
left: 0px;
width: 102%;
height: 200%;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
.topdiv
{
z-index: auto;
position: absolute;
top: 10px;
left: 10px;
width: 100%;
height: 100%;
margin: 0 0 0 0;
}
</style>
</head>
<body>
<div class="bgdiv"><img class="bgimg" src=sub-verloopbalk.gif></div>

<div class="topdiv">ernst is een toffe gozer die het wel even met DHTML oplost.</div>
</body>
</html>
</pre>

# re: Ok Very BASIC .NET Question

Thursday, November 11, 2004 9:27 AM by Patrick Wellink
Of course you must leave out the PRE tags...

# re: Ok Very BASIC .NET Question

Thursday, November 11, 2004 12:57 PM by Patrick Wellink
Thanks Guys,

That IS a help. Not that I will use it but it has pushed me to the right direction.

Thanks for all your care !!!!!!




# re: 1 reason to drink Beer !

Thursday, November 11, 2004 7:57 PM by Patrick Wellink
Try: show

# re: 1 reason to drink Beer !

Thursday, November 11, 2004 9:53 PM by Patrick Wellink
its the same as 'ass' or 'beer.com'!!

other ones:
lick
kiss (the best!)
boobs/bra
beer (of course!!)
dance
hair
arm
shoe

anyone else got some?

# re: 1 reason to drink Beer !

Friday, November 12, 2004 9:16 AM by Patrick Wellink
Strip ;)
Pushup

# re: 1 reason to drink Beer !

Friday, November 12, 2004 9:43 AM by Patrick Wellink
ASS !

# re: 1 reason to drink Beer !

Friday, November 12, 2004 9:45 AM by Patrick Wellink
SHIRT

# re: 1 reason to drink Beer !

Friday, November 12, 2004 9:49 AM by Patrick Wellink
SING

# re: 1 reason to drink Beer !

Friday, November 12, 2004 9:56 AM by Patrick Wellink
JUMP,LIE,FAKE,LAP

# re: 1 reason to drink Beer !

Friday, November 12, 2004 2:50 PM by Patrick Wellink
Try CHANGE ...

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:01 PM by Patrick Wellink
Hat Stand

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:05 PM by Patrick Wellink
CAN

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:07 PM by Patrick Wellink
Bottle

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:08 PM by Patrick Wellink
shoot

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:35 PM by Patrick Wellink
Fight..(very jedi!)

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:37 PM by Patrick Wellink
I think it's friday ...

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:42 PM by Patrick Wellink
Thanks dennis

And yes THINK is a command as well !!!!

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:46 PM by Patrick Wellink
And LOOK also

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:49 PM by Patrick Wellink
FIRE

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:51 PM by Patrick Wellink
Talk

# re: 1 reason to drink Beer !

Friday, November 12, 2004 3:56 PM by Patrick Wellink
karate

# re: Virtual Beer Tender Complete commandlist

Friday, November 12, 2004 4:24 PM by Patrick Wellink
Groin is really funny !

# re: Relative References in a VS project

Monday, November 22, 2004 11:47 PM by Patrick Wellink
Never did get it working. Instead, I copied the outputed DLLs of each project to a known relative location as a post build step and referenced those from each (sub)project.

Under project properties, Common Projecties,
Build Events, Post Build Event Command Line, type:

copy $(TargetPath) $(SolutionDir)\bin

This way, you can easily switch from Debug to Release and back again.

# re: Relative References in a VS project

Tuesday, November 23, 2004 12:37 PM by Patrick Wellink
Maybe I just don't understand the problem. But I have a solution with several assemblies. And when I move the entire solution tree to another location, it compiles without a problem. Do you use DLL references, or project references?

# re: Relative References in a VS project

Tuesday, November 23, 2004 1:09 PM by Patrick Wellink
Well this is not always clear.....

It is a Biztalk Project and this is added to the GAC.

So physical location should not matter but it does because Visual studio requires an absolute reference path.....

# re: Finally got Yukon running Smoothly

Tuesday, December 07, 2004 10:06 AM by Patrick Wellink
Wrong hyperlink...?

# re: Finally got Yukon running Smoothly

Tuesday, December 07, 2004 11:17 AM by Patrick Wellink
Those kind of patches help indeed! I was looking for an alternative patch. Like the 'Asus K8N-E Deluxe'. Just because it has 6 SATA channels.

But you definately made a good choice.

# re: Finally got Yukon running Smoothly

Tuesday, December 07, 2004 11:44 AM by Patrick Wellink
I Can Assure you it's fast AND reliable...

I had to use my old harddisks so that's wht 6 sata channels where not that important to me.

I will add another HD in the future and that will probably be a SATA drive.

But i already had 4 old IDE drives and wanted to use those. Otherwise upgrading would become very expensive.......

# re: Finally got Yukon running Smoothly

Tuesday, December 07, 2004 11:46 AM by Patrick Wellink
No Ernst....

It was the correct hyperlink.......

# re: Finally got Yukon running Smoothly

Friday, December 10, 2004 9:55 AM by Patrick Wellink
I want to use the K8N for a server in combination with a coolermaster stacker box and coolermaster fan. Starting with 3x 200GB (thus ~ 400GB RAID5) and expandable with 3 more in the future (adding 600GB resulting in 1TB). SATA HD's in software RAID 0,1 and 5 partitions. The system should become my file, mail, massstorage, web, database, etc. server at home. Linking my server my primairy workstation with gigabit for ISO's, MSDN, etc.

I would select the MSI if I had to build a workstation. Putting in 3x 120GB 5400RPM disks in RAID 0 to keep the sound down but throughput high. But only if I would have a server that has my documents and multimedia crap stored in a faulttolerant setup.

# re: One advantage of MS over Open Source

Friday, December 17, 2004 9:39 AM by Patrick Wellink
I think most of us will agree that Microsoft has made great improvements on the quality of their products over the last years.
I must admit that in the past I was very sceptical of MS products.
But with the release of W2K and the .NET platform, it's clear MS has made big steps towards a credible partner for enterprise solutions.

And the world agrees, because i.e. .NET has conquered the development market in a way that SUN with Java could only dream about.

The time that Java developers laughed at MS products is over. In fact, I know of a company that's retraining some of it's Java consultants to .NET. ;)

Anyone in IT that still calls Microsoft MickeySoft doesn't have a clue what going on...

# re: One advantage of MS over Open Source

Friday, December 17, 2004 10:01 AM by Patrick Wellink
@Patrick:
I think Microsoft has always released good quality products, it's just that the bugs kept people from using them. Until, as Ernst says, products like W2K came out and proved MS-DOS (like) memory management was the problem in Win98. It had to be compatible. Win2K is based in WinNT.

But also the older Office suite and other products by Microsoft became popular way before they were really stable.

The key to the succes of Microsoft are thing like :
- Best marketing in the world!
- Better good at stealing, then badly self-invented.
- Best marketing in the world!

:)

Look at the XBox, it's not the best system, it's also not a bad system. It's just, like the PS2, _a_ system to play games on. But the succes is from marketing and giving them away almost for free. :)

Same with Whidbey, Longhorn, WinFS, etc. Everyone is just soooo interested because of marketing hype. Why would you want WinFS? Because search is faster? Because for normal users, WinFS doesn't bring much more then that, I guess...

# re: One advantage of MS over Open Source

Friday, December 17, 2004 10:13 AM by Patrick Wellink
Dennis you are Wrong......

XBOX is Much... Much more than a PS2.
because the XBOX is a Media Center Extender as well.

This means that if you have a Media Center PC somewhere in the house you can enyou all the digital media on it everywhere in the house via an XBOX.

This is a pretty cheap solution cause a xbox is under 200 Euro's.

For example some people have Digital TV. The problem with that is if you have more televisions you will buy more receivers.

Now by connection the Receiver to the media center pc you can wacht the digital channel everywhere where there's an XBOX.

I Believe a Media Center PC can serve up to 5 Media Extenders Simultaniously.

So Record once and look everywhere where there's an XBOX.

You can forget this functionality when you buy and PS2.




# BizTalk Server 2004 Unleashed Sample Chapter: Building Message Specifications

Friday, December 17, 2004 3:28 PM by TrackBack

# re: Problems with the BizTalk SQL Adapter......

Thursday, December 23, 2004 12:59 PM by Patrick Wellink
Hi Patrik,

I agree with you on the performance issue, the SQL adapter is not too quick when it's doing lots of updates. I think this is more due to the request and response messages passing through the message box than the isolation level (I could be wrong though).

To reduce deaslocks with multiple calls, one option is to override the serailazation level in the stored procedure (if you are using SPs). This has helped me a couple of times.

As for the performace, adapters are usually used to communicate with external systems. They use the tracking, and the configurable ports, and retry on failure, which is great if the SqlServer is an another location and the connection is unrelyable. I have started building a C# data access layer when I need quick database access to a local server. It beats the adapter when it comes to performance and error handling.

Regards,

Alan

# re: Problems with the BizTalk SQL Adapter......

Thursday, December 23, 2004 1:20 PM by Patrick Wellink

I tried overriding the isolation level but it didn't really work for me.

I created an Adapter that handles Send calls to SQL and it greatly outperforms the SQL Adapter in all ways, and almost everything is supported.

I am working on a receive adapter now.

# OH MAN .......A SECRET ABOUT GUID

Wednesday, December 29, 2004 4:26 PM by Patrick Wellink
GUID's are life savers.

1.RAM is gonna be cheap

2.Harddisk is gonna be cheap.

******

we will be fired to write a "spagetti code".

WE NEED INTEGRITY

:=)

Code Name: write less ,DO MORE

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, January 03, 2005 8:56 AM by Patrick Wellink
Well always nice to know that you know it better than the SQL-Server Books online....

Guess you never really programmed a big database...

And you mention ram and HD is gonna be cheap....

But you forget to mention the most important thing....

P E R F O R M A N C E

And let me tell you that changing a table here and there is far cheaper than buying a new Server.
Furthermore, you can't win the performance you loose with hardware if the table design is bad.

Faster hardware can increase performance by a factor 2 or so but designing your tables differently can increase performance by 30.000 times....

# re: Possible way to pass object(state) between ASP.NET pages

Tuesday, January 04, 2005 12:59 PM by Patrick Wellink
Indeed, a <b>simple</b> solution, but only usable for <b>simple</b> objects.
Not every object is this easily serializable...

But thanks for the info anyway, Patrick ;)

# re: Possible way to pass object(state) between ASP.NET pages

Tuesday, January 04, 2005 2:57 PM by Patrick Wellink
I don't think the object itself is a problem here, I think it's the length of the url that's the problem.

According to the following kb article, the max length in Internet Explorer can only be 2048 characters.

http://support.microsoft.com/kb/q208427/

And besides that, there are way, way more possibilities! Store it in session, in cache, make a post and submit it to another form, etc, etc.

Most of the time I use hidden fields to store stuff and try to keep away as much possible from both session and querystring.

Btw, the example got the querystring with the code : Request["obj"].ToString()
That in itself already sucks, because what this functionally does is walk through all options (form, querystring and session) untill it has a match.

Why not use querystring, like you yourself specified? It's faster, more secure and much, much more readable.

I think in all this is a bad example of how to pass objects between pages. However, the writer says he wanted to pass between APPLICATIONS! This, I am sure, can be done much better and does not need a crappy solution like this.

# re: Possible way to pass object(state) between ASP.NET pages

Tuesday, January 04, 2005 3:06 PM by Patrick Wellink
Ok thanks that was a littlebit the kind of comment I was looking for.....

It was a way I hadn't seen before. I usually use the cache.




# re: Possible way to pass object(state) between ASP.NET pages

Tuesday, January 04, 2005 7:37 PM by Patrick Wellink
@Dennis,
What you suggest is nice and common practice but less- or none-usable for passing objects from one application to the next and that's what this example is about.
Then it gets more complicated. You cannot share sessions because the two webapps are separate processes.
But I agree that this is a questionable way of doing things...

# re: Possible way to pass object(state) between ASP.NET pages

Tuesday, January 04, 2005 9:33 PM by Patrick Wellink
@Ernst: Do you always repeat what I say? ;)

Come on mate, that's what I said.

# re: Possible way to pass object(state) between ASP.NET pages

Wednesday, January 05, 2005 8:22 AM by Patrick Wellink
I just wanted to point out that the first part of your reaction wasn't relevant to the goal that this solution was trying to achieve.

BTW: I don't think that there is a nice and clean way to pass data from one webapp to the next...

# re: Escher for Real.....

Saturday, January 08, 2005 10:42 PM by Patrick Wellink
check out http://www.lipsons.pwp.blueyonder.co.uk/escher/ascending.html

# BizTalk Server 2004 Installation Guide

Thursday, January 20, 2005 10:07 AM by TrackBack

# re: Rad Race I don't Get it, Please help.....

Wednesday, January 26, 2005 1:10 PM by Patrick Wellink
Some answers to your questions:

1. You can create a dataform based on a table in a database connection. It's standard in VisStud. So no need for Oracle designer.
2. We have experience with that, but the RAD race team I was part of decided not to use it because it did not fit with the framework we wanted to use.
3 We used a Codegen tool (CodeSmith) to generate code. But we had problems with one of the templates.

The templates will soon be upgraded, so they will not have any unwanted side effects. Such as stripping some parts of database column names.

There are also plans to build UI templates. These templates will generate a WinForms interface or an ASP.Net interface. But these things take time.

I'm sure that if we had these templates we would have given the Oracle boys a hard time.

# re: Rad Race I don't Get it, Please help.....

Wednesday, January 26, 2005 1:19 PM by Patrick Wellink
Thanks for the clarification Jan.....

But do we really have to build it ourselves.... Isn't there a smart company that has already build a full featured CodeGenerator
including UI, Business rules etc.....

So we can Draw the dam'n thing hit the generate button and only add some minor tweaks..........

# re: Rad Race I don't Get it, Please help.....

Wednesday, January 26, 2005 1:31 PM by Patrick Wellink
You'd have your O/R Mappers, but most of the time these don't add GUI. Why should they? It's not their job.

And code generators like CodeSmith could add this and probably have the templates online.

What did Jan do to the column names that the templates screwed up?

# re: Rad Race I don't Get it, Please help.....

Wednesday, January 26, 2005 1:33 PM by Patrick Wellink
I didn't say Jan Screwed up.....

His templates were screwed up......

# re: Rad Race I don't Get it, Please help.....

Wednesday, January 26, 2005 2:58 PM by Patrick Wellink
I'm not saying both, I might be implying however! ;)

I said the templates screwed up, because of some weird table names or something.

# re: Code generation Tools for .NET

Wednesday, January 26, 2005 3:53 PM by Patrick Wellink
Last Friday, I've spoken to a collegue who used CodeSmith on a project. The project was quite successful, so I guess CodeSmith did quite a good job.

# re: Code generation Tools for .NET

Wednesday, January 26, 2005 4:44 PM by Patrick Wellink
Well i took al ook at TCDesigner and was quite impressed.....

Generate , Drop into Studio , and run .....

# BizTalk Server 2004 Installation Guide

Thursday, January 27, 2005 4:08 AM by TrackBack

# re: Rad Race I don't Get it, Please help.....

Thursday, January 27, 2005 7:29 AM by Patrick Wellink
Guys, it was very simple. I had one template that generated code that did not compile. That was my fault. I somehow managed to get a version that was NOT in our source safe database.

BUT, the templates remove everything from the column until the first underscore. So if you have something like ddd_mycolumnname in your table, the templates would use mycolumnname in all the generated code, with the exception of the stored procedures.

Apparently, this behaviour was intentional. But it's pretty annoying, and time consuming, when you look at the database design and the code doesn't match.

But I believe that unwanted behaviour will soon change!

# re: Rad Race I don't Get it, Please help.....

Thursday, January 27, 2005 8:17 AM by Patrick Wellink
Well i have another thread running about code generation.......

i mean dow e really have to build it ourselves...

The Oracle designer isn't a build it yourself tool.. it is a propbably pretty expensive product that does the job well....

# re: Code generation Tools for .NET

Thursday, January 27, 2005 8:19 AM by Patrick Wellink
I had a look at codesmith..

and it looks nice but it isn't a complete integrated suite ....

So building a n'tier application with it (Completely generated like TCDesigner does)
would be a pretty hard job...

Were with TCDesigner you just hit the generate button.....

# re: Rad Race I don't Get it, Please help.....

Thursday, January 27, 2005 10:49 AM by Patrick Wellink
We also had generated code that didn't compile (lblgen based solution).

Patrick, I've been there, I used Oracle Developer/Designer and I knew that they had a great chance on winning. Why? Well, you didn't have a look at there UI. It looks like, like, well you know like, looks like something like, well like a generated Oracle Designer application. And yes: we should do more, be more productive and CodeGen is one side of the equation, knowing the power of your IDE is the other ;-).
Oracle Designer is great for RAD and needs non demanding customers.
'I want that field to the left'
'No, you don't'
'Yes I really want that'
'Ok, I will generate the app, Start up Forms Developer, navigate through the generated code/forms, apply the change you requested, and add this change to the Post-Generation document'
Just ask some Oracle guys about designer and they all probably had a Post-Generation document and on the size of this document you could tell if they used the right tool. And no, there are no generators for the post generation steps :-)

# re: Rad Race I don't Get it, Please help.....

Thursday, January 27, 2005 12:06 PM by Patrick Wellink
Well i mean we could generate once......
and from then on Program ourselves....

# re: Code generation Tools for .NET

Friday, January 28, 2005 1:10 AM by Patrick Wellink
And then you find that the generated code does not do everything that you want it to do...
Can you modify/extend the generated code without loosing changes when regenerating the rest?
How hard is it to change the architecture when the application is not as simple as you orginally thought?
Some questions to think about before falling in love with a code generation tool.

CodeSmith's strength is that it provides a code generation platform that can be used in practically any way you like it. That brngs with it some complexity and the need to taylor its templates to your needs, i.e. you need to already have an idea about what design/architecture you want for your app. For serious app development that is not a bad thing. I would get very nervous about tools that do "everything" for me..., because generally they don't. Otherwise many of us would be out of business/jobs very soon ;-)

# re: Code generation Tools for .NET

Friday, January 28, 2005 10:49 AM by Patrick Wellink
What do you mean by "everything"? From GUI to Datalayer or less? Because OR/M do a LOT for you, but not any further then datalayer or perhaps some checks for your business layer.

# re: Rad Race I don't Get it, Please help.....

Friday, January 28, 2005 11:47 AM by Patrick Wellink
The point of Oracle Designer is that you can always re-generate. (like the Borg do). Generate once sounds to me as rather useless in new development (but will be handy if you have a datamodel that is rock solid), I'd rather propose something like generate 'add-ons'. You should look into those matters in your search for Codegenerators. But we both agree that we want to focus on business rules not on the plumbing.

# re: Rad Race I don't Get it, Please help.....

Friday, January 28, 2005 5:20 PM by Patrick Wellink
Okay, now I need to step in here ;-) Comparing Designer to the Borg, tsk. Don't you like Borg?

As you know I worked with Visual Studio, Java and Designer. The point is that codegen is the way to go always. It is not only for undemanding customers. We have made great systems for demanding sites and they are happy. I was a memeber of the jury and I was disappointed to see that C# and Java teams ended on the same level. Mainly because time was wasted on the plumbing. In Designer you can focus on the business logic and you don't have to worry if your screens will work. The ICT industry needs people that can do the plumbing but I don't think our customers should pay us to do that. Let Microsoft and Oracle make compilers for us, let us assemble apps using components and codegenerators. And if the customer wants a field at the left: you can do that with Designer :-) Really. We need not to judge the tools but make up our minds on how we do application development. It is a shame that after 30 years we still don't have the tools that do the work for us. (Ow except Oracle, because thay have the tools ;-) I almost forgot. But now we jump on the Java bandwagon, the collective memory of Designer is erased and at Oracle projects we also are doing plumbing. <Sigh>.

Bas

# re: Code generation Tools for .NET

Friday, January 28, 2005 11:11 PM by Patrick Wellink
Gerke as usual i Really don't agree with You... A Word processor is a tool to....

And Word Does it all !!! everything for me....
maybe it prooves we have a long way to go with code generation......

And dennis that is the bad thing about a lot of those tools around.....

They don't go any further then the data layer.... Well i don't need a codegen for that can do that from t-sql......

Generating a datalayer and stuff isn't that great at all.... It building the data layer but the presentation layer as well.

And then.... Ahhhh wouldn't it be nice a master detail screen that even looks nice...

# re: Rad Race I don't Get it, Please help.....

Friday, January 28, 2005 11:15 PM by Patrick Wellink
Borg sounded pretty good to me...

We Are Oracle Designers, You will adapt a nice UI is Futile...

# re: Rad Race I don't Get it, Please help.....

Saturday, January 29, 2005 8:12 PM by Patrick Wellink
It is hilarious that you guys compare Oracle to the Borg that assimilate complete civilizations. Haha. Isn't that ironic for Microsoft adepts.

# re: Rad Race I don't Get it, Please help.....

Monday, January 31, 2005 10:40 AM by Patrick Wellink
Well Borg NEVER assimilated the human species completely.......

# re: Haben sie das schön Geschnapt

Tuesday, February 01, 2005 12:34 PM by Patrick Wellink
http://www.nozzman.nl/images/edities/307.gif

# re: Haben sie das schön Geschnapt

Tuesday, February 01, 2005 12:50 PM by Patrick Wellink
Ha ha ha....

Der hat's schon geschnappt Jah !

# Oracle Developer Tools for Visual Studio .NET Beta 2 is out ...

Thursday, February 03, 2005 5:26 AM by TrackBack

# Oracle Developer Tools for Visual Studio .NET Beta 2 is out ...

Thursday, February 03, 2005 5:27 AM by TrackBack

# re: Is this a Good Idea or not ?

Tuesday, February 22, 2005 8:27 PM by Patrick Wellink
I'm not a fan of DataGrid, so I don't think it is a good idea. Then again, before lart week I didn't think much about O/R Mapping, so there you go.
At any rate, it is useful for you for it teaches you how write/extend components.

# re: Is this a Good Idea or not ?

Wednesday, February 23, 2005 10:51 AM by Patrick Wellink
Looks good, if it will give compile time errors if stuff isn't available I don't see any problems with going this route.

If it doesn't then it gets a little more dangerous... and for me a lot less usefull.

# re: Is this a Good Idea or not ?

Wednesday, February 23, 2005 11:09 AM by Patrick Wellink
Well it tries to load an assembly and if that fails it will give an error message.......

# re: Is this a Good Idea or not ?

Wednesday, February 23, 2005 12:33 PM by Patrick Wellink
I like the idea, but the standard datagrid is not really hard to use. What I find hard is to have a dataform with two-way databinding.

Bas.

# re: Is this a Good Idea or not ?

Wednesday, February 23, 2005 1:21 PM by Patrick Wellink
It's not that the standard datagrid is hard to use.. I am not Saying that.

But Don't you get sick and tird of alwayd typing the same code...

Doubleclick on the form to get to the Form.Load event

Then Datagrid.datasource = somedatalayer.somemethod
Datagrid1.datamember = something.

and idem for comboboxes....

This way you set the properties at design time and you're done with it.....


# re: Awesome Code generation !!!!

Monday, March 14, 2005 11:30 AM by Patrick Wellink
First and foremost!

DON'T SHOUT SO MUCH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

HAVE YOU EVER LOOKED AT YOUR POSTS ON THE FRONT PAGE?

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH!

And second, what's the differnce between an ugly .dll and a compiled library that you can set a refence to in your project?

# re: Awesome Code generation !!!!

Monday, March 14, 2005 12:53 PM by Patrick Wellink
Read this article (http://www.codeproject.com/dotnet/GriffinMyGen.asp) about MyGeneration on CodeProject.
At the bottom there are some discussion threads and "Business Objects shouldn’t be developed one for one per table" is especially interesting...

"I have successfully shipped many projects like this, big .NET apps, and can even out bid Indian based companies doing outsourcing for a dime on the dollar. Give me a SQL database and in a day or so I'll give you a complete, functional object model that can read and write, supports transactions (seemless via TSL) and more. This is the just the beginning.
"

Even with the disscussion about architecture and business objects still going on, it's quite promissing...: "a functional object model in a day" Cool!

# re: Awesome Code generation !!!!

Monday, March 14, 2005 12:57 PM by Patrick Wellink
However, I'm still looking into the possibilities of db4Objects (http://www.db4o.com/), which Robert Jan pointed out at http://bloggingabout.net/rj/archive/2005/03/01/2318.aspx.

If both O/RM and OODB work well, I prefer the latter for obvious reasons.

# re: Awesome Code generation !!!!

Monday, March 14, 2005 1:09 PM by Patrick Wellink
First of all Dennis you should know i ALWAYS shout if there's something exiting.....

I also wanted to shout cause i think every body should read this article...... even if they don't want to !!!!!

And to Ernst i can only Say.....

Ernst... It really works ..... !!!!!!


# re: Awesome Code generation !!!!

Monday, March 14, 2005 1:21 PM by Patrick Wellink
Oh and I forgot to mention in the article ....

I test with large datasets as well... my Northwind Customer database has over 100.000 records in it.....

You will see some nice surprises when you start using stuff like LLBLGEN and there are lotsa records......

dOOdad ouperforms LLBLGEN by a factor 8.....

so 1 second for dOOdad and 8 seconds in LLBLGEN !!!! I know the principles behind the tool are COMPLETELY different... but all the nice stuff of LLBLGEN comes at a big (performance) price......


# re: Awesome Code generation !!!!

Monday, March 14, 2005 2:00 PM by Patrick Wellink
"You will see some nice surprises when you start using stuff like LLBLGEN and there are lotsa records......

dOOdad ouperforms LLBLGEN by a factor 8..... "
I doubt it. For example, you can finetune your query by switching from joins to subqueries, which can gain you a lot in multi-table filters with lots of records.

There is no sql doodads can generate that LLBLGen Pro can't.

So, what's the code you ran?

# re: Awesome Code generation !!!!

Monday, March 14, 2005 2:06 PM by Patrick Wellink
Frans....

Sorry....

This was just a Query on a simple Postcode table with 300.000 records....

We simply wanted them all... No joins and only 4 fields in the table.......So there's nothing to optimize !!



So as easy/Simple !!!!!


# re: Awesome Code generation !!!!

Monday, March 14, 2005 2:53 PM by Patrick Wellink
Patrick, thanx for the compliment. You are correct in that dOOdads is extremly lightweight and has almost no overhead over and above ADO.NET. Our dOOdads architecture focuses on serving up your data with an elegant API. We're glad you like it.

- Mike Griffin

# There is no sql doodads can generate that LLBLGen Pro can't.

Monday, March 14, 2005 4:59 PM by Patrick Wellink
Frans Bouma
"There is no sql doodads can generate that LLBLGen Pro can't."

Frans, the SQL is not the issue, it's the underlying archtecture. The two greatest myths I hear all of the time are:

1) Never make business entities map directly to a table (I do it all the time and so do tons of our customers). Of course we can generate them for views too.

2) Never use a DataTable, they're too slow. Nonsense, DataReaders are faster sure, if you never plan to actually use the data you fetch. However when you go to copy the data out of the reader to populate your entities you waste a ton of time a memory and time, and you're garbage collection issues go up significantly on high end web sites. The dOOdads architecture literally never moves the data, it resides in the DataTable. So loading a dOOdad is no more than loading a DataTable, the elegant API is literally "laid over" the DataTable. The dOOdads technique (and our new EntitySpaces due out with 2.0) will really come into play with the terrific advances coming in .NET 2.0 concerning DataTables.

# re: Awesome Code generation !!!!

Monday, March 14, 2005 5:45 PM by Patrick Wellink
Yes, llblgen pro is a bit slower in entity collection fetches than normal datatable fetches. This is because for each row, an object has to be created, filled, added to the collection etc. which is a little more overhead than a new datarow added to a datatable.

Though, with a datatable based architecture you can't use the individual objects without having the datatable around, as the datarow doesn't have a public constructor. So 1 customer always creates one datatable.

In llblgen pro, if you want everything in a datatable, you can of course do that, or in a typed datatable, you can do that too. You can even define the list in code if you want.

As datatables use an arraylist to store the datarows, adding one has a performance hit in the long run, i.e. when there are a lot of rows in the datatable. MS doesn't recommend to fetch more than 57000 rows in a datatable, which is a lot also.

# re: Awesome Code generation !!!!

Monday, March 14, 2005 5:47 PM by Patrick Wellink
btw, I doubt you can fetch 300,000 rows in a datatable in 1 second, or the rows are very very small, but even then.

# re: Awesome Code generation !!!!

Monday, March 14, 2005 5:54 PM by Patrick Wellink
" However when you go to copy the data out of the reader to populate your entities you waste a ton of time a memory and time, and you're garbage collection issues go up significantly on high end web sites."
haha, and how are you filling your datatables, Mike... using Fill()? or copying the data yourself? Either way, it doesn't matter, you're copying data.

I also don't see the garbage collection issues, as you can't re-use the resultset produced by a datareader without copying it to some container (be it a datatable, custom object...).

The overhead you miss is that you don't have to setup fields with every object, just once with the datacolumns. So a datareader fill is then nothing more than creating a datarow and moving over the cells per value. It's a bit faster, but for a price.

# re: Awesome Code generation !!!!

Monday, March 14, 2005 10:53 PM by Patrick Wellink
Dennis: This post is classical Patrick; no filter between thought and post.

Patrick: As brilliant you are, I still think you haven’t given both products much time to evaluate. As such, you address only the out-of-box experience. Important as this property is for end user products, a software development tool is a different beast. Don’t make too hasty a conclusion. Do stay tuned though, and watch me do the same.

Frans: I haven’t given LLBLGen Pro the time it deserves to fully appreciate its potential power. In fact, I stopped evaluating LLBLGen Pro just one hour after downloading and installing it. The reason was that there does not seem to be a database-diagram kind of view of the database. At least, I couldn’t find it. So I stopped. Sorry.

In Visual Studio .NET 2003, you create a database diagram simply by adding all tables to a newly created empty diagram. The resulting diagram nicely shows the relations. To get a typed dataset, you can drag tables to a XML Schema. The code VS2003 generates may be horrible, I don’t really know. The point I’m trying to make is that I like interacting with a database in a graphical manner.

The Project Explorer in LLBLGen Pro has all the information necessary to build an UML view of the relations between tables (entities). But I still need to make a mental picture of the complete database. That doesn’t make sense to me.

# Patrick, thanx for the kind words

Tuesday, March 15, 2005 1:29 AM by Patrick Wellink
Patrick, I'm going to depart this thread, you've stirred quite a hornets nest you know. Talking kindly about a free product written by a couple of no-names without any Microsoft certifications is very dangerous <wink> and the long knives are going to come out soon.

Anyway, MyGeneration is my (our) side project and not my full time job so my weekend and evening time needs to be poured in MyGeneration 2.0 and our new architecture EntitySpaces ... Best of luck to you.

Mike Griffin
MyGeneration Software

# re: Awesome Code generation !!!!

Tuesday, March 15, 2005 8:19 AM by Patrick Wellink
Well Thanks mike...

And all the explanation of frans bouma.... I already knew why llblgen was slower..

"I know the principles behind the tool are COMPLETELY different... but all the nice stuff of LLBLGEN comes at a big (performance) price......"

I just wanted to point that out.... I am using dOOdad in a private project now and it really works great.

I bet those guys never even downloaded MyGen and never even looked at the dOOdad architecture.

And I dont want to mention LLBLGEN anymore..... cause this is about MyGeneration !

Mike Keep up the Good work.
( i am busy with the DAAB architecture as well..)

# re: Awesome Code generation !!!!

Tuesday, March 15, 2005 8:23 AM by Patrick Wellink
Oh yes and to frans......

"btw, I doubt you can fetch 300,000 rows in a datatable in 1 second, or the rows are very very small, but even then. "

We simply wanted them all... No joins and only 4 fields in the table.......So there's nothing to optimize !!

4 fields only, 3 of them are int, it's a 4 processor server with 4 GB of memory.... and hey if we would count HT as well there would be 8 processors.....

so this was a pretty powerfull server.....

# re: Awesome Code generation !!!!

Tuesday, March 15, 2005 8:40 AM by Patrick Wellink
oh yes and we have GB lan.....

# re: Awesome Screen Generation..... (part Two)

Tuesday, March 15, 2005 10:07 AM by Patrick Wellink
I used this tool before, but just for stored-procedures. Can you tell me what templates are best to use for generating from table to screen?

# re: Awesome Screen Generation..... (part Two)

Tuesday, March 15, 2005 10:12 AM by Patrick Wellink
Look at the MyKeySoft templates they do just that in combination with the dOOdad architecture

# re: Awesome Screen Generation..... (part Two)

Tuesday, March 15, 2005 10:17 AM by Patrick Wellink
k thanxs

# re: Awesome Dynamic SQL generation....

Tuesday, March 15, 2005 5:26 PM by Patrick Wellink
That is probably the feature folks love best about dOOdads. Equal is the default operator so you really don't even have to set that. To be honest I pull off about 80% - 90% of an average project with just that simple approach.

However, there are other ways to load dOOdads via custom SQL. Both the LoadFromSql() and the LoadFromRawSql() methods can be invoked if the dynamic query mechanism won't do what you want.

More on that topic:
http://www.mygenerationsoftware.com/phpbb2/viewtopic.php?t=894

# re: Awesome Screen Generation..... (part Two)

Tuesday, March 15, 2005 5:34 PM by Patrick Wellink
The beauty of MyGeneration is that if we don't have the template you are looking for it is quite easy to write your own. You pick the template language, VBScript, JScript, C# or VB.NET.

Suppose we don't have a template that will generate a screen directly from a Table, simply, go hand write a screen that does just that, then take it and make a template out of it. The effort pays off big time, and if you share you help others ...

Also, you can swipe code from other templates ...

# re: Template Code Generation... and my plans

Wednesday, March 16, 2005 2:05 PM by TrackBack

# re: Data Access Application Block Support....

Thursday, March 17, 2005 12:31 PM by Patrick Wellink
It all looks really cool. I even registered on the website. But is there a quickstart, or getting started?

# re: Data Access Application Block Support....

Thursday, March 17, 2005 12:52 PM by Patrick Wellink
Yep there is see your inbox....

# re: Data Access Application Block Support....

Thursday, March 17, 2005 1:02 PM by Patrick Wellink
1. Start Mygeneration…
2. File->New->Project
3. Right Click “New Project” in the treeview and select add “Template Instance”
4. First Enter A name for this Template ( For example NorthWind dOOdad Entities)
5. Select the Template you want. (dOOdad Business Entity C#)
6. Hit the Record Template Input button.
7. Select the directory where the Files will be placed
8. Select the Tables
9. Hit OK


10. You should do step 3 till 10 again for the Business Class and the SQL Stored procedures
11. Make sure you select different directories for everything


12. Now go to Visual Studio.
13. Open a new C# Project.
14. Add an Existing Project wich is the architecture in the \Program Files\MyGeneration\dOOdad ( or some of the subdirs )

15. Now Add all the generated stuff to your project and off you go…..

# re: Data Access Application Block Support....

Thursday, March 17, 2005 1:06 PM by Patrick Wellink
Oh.... I forgot one thing...

Once the dOOdad Project is included you have to select the database driver you want....

Do this by setting Compile to true..
So if you want MS-SQL set the compile option of :

SqlClientEntity.vb
SqlClientDynamicQuery.vb

To True....

Oh and you will need a config file as well....
But you can see that in the samples

and last but not least don't forget to set the settings correct for language and database....

# re: dOOdad, Sorting in an ASP datagrid made easy

Thursday, March 17, 2005 3:41 PM by Patrick Wellink
Good one :)

You caught this of of one of SBC's templates ?

# re: Awesome Code generation !!!!

Thursday, March 17, 2005 3:56 PM by Patrick Wellink
Good to see you joining the mygeneration bandwagon :)

Been using the product for a while and enjoying it's simplicity.

# re: dOOdad, Sorting in an ASP datagrid made easy

Friday, March 18, 2005 7:03 AM by Patrick Wellink
No invented it myself !!!!

But i will have a look at the SBC templates

# re: Prevent SQL injection !

Friday, March 18, 2005 7:54 PM by Patrick Wellink
Yes, and the mere fact that it is passed in via a parameter means that SQL injection is basically eliminated.

# re: Database Documenter MyGeneration Templates

Friday, March 18, 2005 11:13 PM by Patrick Wellink
Ik volg met intresse je avonturen in het hele dOOddAd verhaal in combinatie met Mygeneration.

De enige wens die ik nog zou hebben is dat de stored procedures en views ook de inhoud presenteerd zodat de klant hier ook alles op schrift heeft staan als alleen de naam + parameters..

Houd ons op de hoogte met de dOOddAds. Ik sta op het punt om het ook te gaan gebruiken in een nieuw project.. Twijfel nog een beetje tussen de dOOd's en MS App blocks

# re: Database Documenter MyGeneration Templates

Saturday, March 19, 2005 9:18 AM by Patrick Wellink
In beide gevallen kun je bij Mygeneration terecht....
Ik denk echter dat dOOdad het snelste werkt.
Ik ben overigens reuze beniewd naar je ervaringen...

# re: Can't delete service instances from the HAT or why you shouldn't rename a SQL Server

Wednesday, March 23, 2005 8:07 AM by Patrick Wellink
Is the correct servername in the SysServers table if it's not it defenitely is the cause !

# re: Can't we kill those very irritating Spammers....

Tuesday, April 05, 2005 12:39 PM by Patrick Wellink
Is this a call for a mass (D)DOS attack ("flood", "bogus requests", "can't conduct business") against those sites. If this is the case, this call wouldn't against the Dutch law.

# re: Can't we kill those very irritating Spammers....

Tuesday, April 05, 2005 12:44 PM by Patrick Wellink
Well then you misunderstood me...

I want to give them something they will find just as interesting ast the mail they send me....

And hey, if that will fill up their hard disk who the hell cares.... They don't care about my harddisk filling up either....

So the intention is not to start a DOS attach but if it would result in a DOS I can't help that

# re: Can't we kill those very irritating Spammers....

Tuesday, April 05, 2005 2:09 PM by Patrick Wellink
There was a project by lycos a while back which did such a thing but it was taken down because the interest in it was too great and it wound up killing several sites.

# re: Can't we kill those very irritating Spammers....

Tuesday, April 05, 2005 2:10 PM by Patrick Wellink

Well this sounds pretty promissing !

# re: Can't we kill those very irritating Spammers....

Tuesday, April 05, 2005 8:10 PM by Patrick Wellink
I think it would be more effective if this blogsite would ask the user to type in a combination of digits and characters, shown in a picture (this is used in many forum sites). That way, automatic spam wouldn't stand a chance...

# re: Can't we kill those very irritating Spammers....

Tuesday, April 05, 2005 8:11 PM by Patrick Wellink
Forgot to mention, although obvious, that you type in the mentioned combination when replying to a blog article.

# re: Using WMI to query the Eventlog

Friday, April 08, 2005 8:15 PM by Patrick Wellink
Improvement could be:
- use overloaders instead of optional parameters

more important is:
- call dispose on the ManagementObjectSearcher and EventLogEntry to release resources

# re: Using WMI to query the Eventlog

Saturday, April 09, 2005 6:14 PM by Patrick Wellink
Improvement could be:
- use overloaders instead of optional parameters

Well Pascal... remeber it still is VB.Net .... if it was c# jou would be right about that....

I have looked for the Dispose but I don't think there is one ......

# re: Using WMI to query the Eventlog

Monday, April 11, 2005 8:26 AM by Patrick Wellink
Can anyone tell me why Microsoft has kept optional parameters in VB.NET?! As far as I know, these methods aren't available to the other .NET languages.

# re: Awesome Code generation !!!!

Monday, April 11, 2005 11:14 AM by Patrick Wellink
I just started to use MyGeneration, it works well. but can one show me how to build the query that has "OR". All parameters should be compared against one column in my table.

eg.

emp.Where.Name.Value = "X%"
emp.Where.Name.Conjuction = WhereParameter.Conj.Or;

emp.Where.Name.Value = "E%"
emp.Where.Name.Conjuction = WhereParameter.Conj.Or;

# re: Using WMI to query the Eventlog

Monday, April 11, 2005 11:18 AM by Patrick Wellink
You asked for improvements and using overloadsers is an improvement when using overloaders.

dispose must be called on both classes i mentioned above.

in your case it will look like this:
...
MyEventClass.Dispose
...
oWMI_Results.Dispose

# re: Awesome Code generation !!!!

Monday, April 11, 2005 2:36 PM by Patrick Wellink
I believe you should use the cutoff

# re: Using WMI to query the Eventlog

Tuesday, April 12, 2005 10:51 AM by Patrick Wellink
I removed the overloads

And i could only call dispose on oWMI_Results...

The EventLogEntry class is a class of my own wich doesn't have a dispose...

Thanks for your help....

# re: Awesome Code generation !!!!

Tuesday, April 12, 2005 3:32 PM by Patrick Wellink
Or use the Raw query method... i don;t know it''s name but you can execute raw SQL statements.......

# MyGeneration and why it beats the rest: My take

Tuesday, April 12, 2005 4:13 PM by TrackBack

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Friday, April 29, 2005 3:17 PM by Patrick Wellink

there is a link somewhere on the internet to this discussion....

its here : http://dotnetjunkies.com/weblog/joeolsen/archive/2005/01/12/43722.aspx?Pending=true

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Sunday, May 01, 2005 7:06 PM by Patrick Wellink
Patrick, your point is well taken that GUIDs present a considerable performance issue--and all the cheap RAM and cheap disk space in the world won't help you at I/O time... the real performance hit comes every time you have to suck that ballooned data to or from the disk... all else being equal, it takes twice as long to load 200 bytes of data as it does 100 bytes.

My dilemma: While I am all about carrying the most cost-effective datatypes, I am building a large multi-site application where site autonomy is essential. I have been considering merge replication, but the performance nut in me isn't excited about the cost of repeating GUIDs hundreds of thousands of times over (in foreign key columns, for example).

We need a solution that allows any site to master new records independent of the others, but that will replicate changes to other sites when convenient.

My only thought is to build a mechanism to allocate blocks of integers to the various sites... or acquiesce and use GUIDs...

Even should I do some sophisticated managing of integers, I cannot use out-of-the-box SQL Merge Replication without including the GUID fields in my tables... arrgh!

Any observations on how you'd approach this problem?

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, May 02, 2005 8:20 AM by Patrick Wellink
Well if you really have to do merge replication, adding a GUID is a logical step.

You could indeed have a bigint and then allocate blocsks of integers to site's but i have no experience with that. (sorry)

However, this is just the place where you would introduce a guid.

# re: Database Documenter MyGeneration Templates

Saturday, May 07, 2005 11:57 PM by Patrick Wellink
There is now a template to create a similar report in FlexWiki format. It's not quite as nice looking but I'm working on it.

# Using VB collections in C#

Friday, May 13, 2005 3:15 PM by TrackBack

# re: dOOdad visual architecture

Friday, May 13, 2005 3:34 PM by Patrick Wellink
Enjoying your exploration of MyGeneration. I will be checking it out this weekend.

Do you know what tool was used to create the object model graphic in this post?

Thanks!

# re: dOOdad visual architecture

Friday, May 13, 2005 4:08 PM by Patrick Wellink
Yep Microsoft Visual Studio 2005 !!!!

(Whidbey !!!!!)

# re: HashTables are a bunch of nonordered objects reordering themselves to chaos

Friday, May 13, 2005 7:10 PM by Patrick Wellink


That will be;

ms.Add("key3", null);
ms.Add("key2", null);
ms.Add("key1", null);
foreach (string key in ms.Keys) {
Debug.WriteLine(key);
}

and

Collection ms = new Collection();
ms.Add("key3", "key3");
ms.Add("key2", "key2");
ms.Add("key1", "key1");
for (int x = 1; (x <= ms.Count); x++) {
Debug.WriteLine(ms(x));
}

# re: HashTables are a bunch of nonordered objects reordering themselves to chaos

Friday, May 13, 2005 8:16 PM by Patrick Wellink
Patrick, why not try the SortedList object. It sorts the list on the key you specify:

using System;
using System.Collections;
public class SamplesSortedList {

public static void Main() {

// Creates and initializes a new SortedList.
SortedList mySL = new SortedList();
mySL.Add("First", "Hello");
mySL.Add("Second", "World");
mySL.Add("Third", "!");

// Displays the properties and values of the SortedList.
Console.WriteLine( "mySL" );
Console.WriteLine( " Count: {0}", mySL.Count );
Console.WriteLine( " Capacity: {0}", mySL.Capacity );
Console.WriteLine( " Keys and Values:" );
PrintKeysAndValues( mySL );
}


public static void PrintKeysAndValues( SortedList myList ) {
Console.WriteLine( "\t-KEY-\t-VALUE-" );
for ( int i = 0; i < myList.Count; i++ ) {
Console.WriteLine( "\t{0}:\t{1}", myList.GetKey(i), myList.GetByIndex(i) );
}
Console.WriteLine();
}
}
/*
This code produces the following output.

mySL
Count: 3
Capacity: 16
Keys and Values:
-KEY- -VALUE-
First: Hello
Second: World
Third: !
*/

# re: HashTables are a bunch of nonordered objects reordering themselves to chaos

Friday, May 13, 2005 11:09 PM by Patrick Wellink
i guess kris you are missing the point....

are you saying the order in wich you insert is preserved ????

# re: HashTables are a bunch of nonordered objects reordering themselves to chaos

Saturday, May 14, 2005 8:54 AM by Patrick Wellink
Check out this link: http://bloggingabout.net/jschreuder/archive/2005/05/13/3963.aspx

You CAN use collections in C#.

# re: HashTables are a bunch of nonordered objects reordering themselves to chaos

Saturday, May 14, 2005 11:28 AM by Patrick Wellink
ja jan die haddik natuurlijk al meteen gelezen.......

je ken ook gewoon meteen in VB. beginnen....

Dun heb je ook meteen een normal Isnummeric ;-)

# re: Trouble with BizTalk Isolated host (Help)

Sunday, May 15, 2005 1:20 PM by Patrick Wellink
Hi, I was trying to find some solution for a problem related with submit direct adapter. If any of you can help me, I'll now tell you my problem:

After a lot of problems, I finally got the adapter working just fine (or almost). The things is that after a "not know" thedshold of concurrency load is exceeded, I get two diferent error (actually is a porcentage of all the trasactions executed the ones those fails):

2) Exception Information
*********************************************
Exception Type: System.NullReferenceException
Message: Invalid pointer
TargetSite: Void SubmitRequestMessage(Microsoft.BizTalk.Message.Interop.IBaseMessage, System.String, Boolean, System.DateTime, Microsoft.BizTalk.TransportProxy.Interop.IBTTransmitter)
HelpLink: NULL
Source: Microsoft.BizTalk.Interop.TransportProxy

StackTrace Information
*********************************************
at Microsoft.BizTalk.TransportProxy.Interop.IBTTransportBatch.SubmitRequestMessage(IBaseMessage requestMsg, String correlationToken, Boolean firstResponseOnly, DateTime expirationTime, IBTTransmitter responseCallback)
at Caixanova.Middleware.SubmitDirect.TransportProxyUtils.BizTalkMessaging.BeginSubmitSyncMessage(IBaseMessage message, AsyncCallback cb, Object asyncState)
at Caixanova.Middleware.SubmitDirect.TransportProxyUtils.BizTalkMessaging.SubmitSyncMessage(IBaseMessage message)
at Caixanova.Middleware.Utilities.MessageBoxSubmitDirect.SubmitSyncRequest(String submitURI)
at Caixanova.Middleware.Utilities.MessageBoxSubmitDirect.SubmitSyncRequest(String request, String submitURI)
at Caixanova.Middleware.Facade.Remoting.Service.SubmitSyncRequest(String request, TipoAplicacionBTS aplicacion)
-----------------------------------------------

# re: Trouble with BizTalk Isolated host (Help)

Sunday, May 15, 2005 4:14 PM by Patrick Wellink
If any of you need to comunicate with me ma email adress is Fernando.Sinagra@gmail.com

# re: Code generation Tools for .NET

Tuesday, May 17, 2005 5:30 AM by Patrick Wellink
I believe that any DataLayer must be a simple code block, that they allow operations against DB.

That code block would not have to know on the Business Entities. Single to specialize it is to execute the operations (Store Procedures and SQL Sentences) against the engine DB (SQL, Oracle, DB2, etc.), with which this setting.

Finally, I invite to you to download the DataLayer.Primitives Public Version.

This is very cool Data Layer :)

DataLayer.Primitives - Readme!
http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=1389

Cheers,

Javier Luna
http://guydotnetxmlwebservices.blogspot.com/

# re: Got confused about Strings

Thursday, May 26, 2005 2:25 PM by Patrick Wellink
Dim string1 As String = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Dim string2 As String = "AAAAAAAAAAAAA"
Dim string3 As String = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

Dim Sb As stringbuilder = New stringbuilder
Dim Result As String

Dim StartTime1 As DateTime = Now()
For x As Integer = 0 To 1000000
Result = String.Concat(string1, string2, string3)
Next
Dim EndTime1 As DateTime = Now()
Debug.WriteLine("Concat took :" + EndTime1.Subtract(StartTime1).TotalMilliseconds.ToString)

Dim StartTime2 As DateTime = Now()
For x As Integer = 0 To 1000000
Result = string1 + string2 + string3
Next
Dim EndTime2 As DateTime = Now()
Debug.WriteLine("++++++ took :" + EndTime2.Subtract(StartTime2).TotalMilliseconds.ToString)

Dim StartTime3 As DateTime = Now()
For x As Integer = 0 To 1000000
Sb.Length = 0
Sb.Append(string1)
Sb.Append(string2)
Sb.Append(string3)
Result = Sb.ToString
Next
Dim EndTime3 As DateTime = Now()
Debug.WriteLine("Stringbuilder took :" + EndTime3.Subtract(StartTime3).TotalMilliseconds.ToString)

Dim StartTime4 As DateTime = Now()
For x As Integer = 0 To 1000000
Result = String.Format("(1)(2)(3)", string1, string2, string3)
Next
Dim EndTime4 As DateTime = Now()
Debug.WriteLine("String format took :" + EndTime4.Subtract(StartTime4).TotalMilliseconds.ToString)

# re: Got confused about Strings

Thursday, May 26, 2005 3:08 PM by Patrick Wellink
You beat me to it! I ran the same tests yesterday and got similar results.

# re: Got confused about Strings

Thursday, May 26, 2005 3:50 PM by Patrick Wellink
Ok i just gat tired of use this and use that....
only in a loop where a big string is constructed it matters

# re: Got confused about Strings

Thursday, May 26, 2005 3:56 PM by Patrick Wellink
Sorry, maar dit is wat we noemen: "een open deur intrappen" ;)

# re: The best text search I ever saw.....

Tuesday, May 31, 2005 3:44 PM by Patrick Wellink
Nice one, Patrick!

It's bl**dy fast indeed. I used to use Windows Grep but I'll be using InfoRapid S&R from now on!

Hint: post a download URL...

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Friday, June 03, 2005 7:16 PM by Patrick Wellink
GUIDs are useful if you dont know SQL. Talented db engineers have been doing just fine without them for years. Its really sad to read about how "easy" GUIDs will make db development... and how performance is a non-issue because "RAM is cheap" and space is plenty.

That all may be true... but Im a little pissed that no one seems to care about developing quality code. Anyone can build a crappy database and get by. Using a GUID is one way to ensure that your key is unique... building a sound database system is anotherl.

If its 100 ms faster, then its 100 ms better. Using a GUID over an INT because its easy is like fishing for 3 lb trout with 300 lb test line. Sure, its easier... but wheres the sport? Wheres the style.

Long live the INT!

Suck it.

# re: What the .... CLS Compliancy ( VB Got it right all the time )

Wednesday, June 08, 2005 1:04 PM by Patrick Wellink
Dear Patrick,

The link you refer to talks about Cross-Language Interoperability. This means that if you build CLS complient, you need to make a difference between identifiers by more than just casing.
So, in C#, you can use 'int Number' and 'int numBer' and that would be 2 different identifiers.
But to be Cross-Language Interoperable you can't use that because a VB.NET user of your component can't see the difference (because VB.NET doesn't use casesensitivity).
So, the article om MSDN is correct.

However, I'm not sure why you should get this error in a VB.NET conversion, because you didn't / couldn't use 'int Number' and 'int numBer' in VB.NET 2003...

# re: What the .... CLS Compliancy ( VB Got it right all the time )

Wednesday, June 08, 2005 2:16 PM by Patrick Wellink
Well Ernst....

The casing has nothing to do with VB but with the specifications. ( as depicted in the URL above)

I just said that in VB it was always like that.... So I don't have to rewrite my programs to be cls compliant.

My guess is a lot of C# programmers have to.......

No the problem I got was ....

Public Class HieperDePiep

Class Name ''Hieperdepiep' is not CLS compliant


# re: What the .... CLS Compliancy ( VB Got it right all the time )

Wednesday, June 08, 2005 2:17 PM by Patrick Wellink
I mean depicted in this url....

www.unicode.org/unicode/reports/tr15/tr15-18.html

# re: What the .... CLS Compliancy ( VB Got it right all the time )

Wednesday, June 08, 2005 10:25 PM by Patrick Wellink
Ofcourse VB is right! ;)

I mean, for scope indication I prefer prefixes over casing any day. The prefixes can give you extra possibilities doing a find.

# re: What the .... CLS Compliancy ( VB Got it right all the time )

Wednesday, June 08, 2005 10:37 PM by Patrick Wellink
HERO !

# re: What the .... CLS Compliancy ( VB Got it right all the time )

Thursday, June 09, 2005 8:20 AM by Patrick Wellink
[comment]
Ofcourse VB is right! ;)
[/comment]

Luckely our "little" project will be 100% pure C#, mate! ;)

# re: What the .... CLS Compliancy ( VB Got it right all the time )

Thursday, June 09, 2005 9:31 PM by Patrick Wellink
The last two or three weeks, I started programming in VB.NET to build multi-threaded embedded applications. Today I had to switch back to C# for half an hour for some maintenance. What struck me was that one gets accustomed very easily to on-the-fly re-compiling during editing in VS2003. Hence, I expected the error indicators (i.e., the wiggly lines). I actually cursed the C# compiler for telling me *after* the compile that I failed to add the semi colons.

# re: What the .... CLS Compliancy ( VB Got it right all the time )

Friday, June 10, 2005 8:24 AM by Patrick Wellink
ROLAND YOU ARE MY HERO....

That's exactly the reason why I didn't switch to c#

And as an added bonus you get FREE CLS compliency with VB.Net....

At least for identifiers that is.......

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Monday, June 13, 2005 10:35 PM by Patrick Wellink
One aspect of a GUID over an INT that I have not seen discussed is the security aspect of a GUID. Having a constantly incrementing key be visible to users, as in a web based scenario where the ID of a record is often passed back and forth, is a security risk. Even if the value is encrypted, just the fact that the key increments and is "guessable" provides a hacker an easier method of determining how to break the key. A random GUID is much much harder to crack.

Just my 2 cents with another piece of info to help people make their decisions.

# re: GUID is not Always GOOD !!!!!!! (a true RTFM story)

Tuesday, June 14, 2005 4:19 PM by Patrick Wellink

What has this to do with good database design....

Where is the leak if you use parametherized queries ???

I dont get it this is only true if you use inline dynamic SQL.....

and if you do that you could as wel program a guid for everything........

Hyperlinks etc could still use GUIDs ..... I never said there shouldn't be any GUIDS.

But NEVER AS A PK.....
AND NEVER with a clusered index !!!!!!!!



# re:Got confused about Strings

Wednesday, June 15, 2005 9:06 AM by TrackBack
Got confused about Stringsooeess

# re:EVERY BizTalker should join this Group.

Wednesday, June 15, 2005 9:12 AM by TrackBack
EVERY BizTalker should join this Group.ooeess

# re:The killer patent for O/R Mappers

Wednesday, June 15, 2005 9:13 AM by TrackBack
The killer patent for O/R Mappersooeess

# re:It's There the BizTalk No Output Producing Endpoint Adapter !!!!

Wednesday, June 15, 2005 9:31 AM by TrackBack
It's There the BizTalk No Output Producing Endpoint Adapter !!!! ooeess

# re:Never reinstall a BizTalk adapter to a different location

Wednesday, June 15, 2005 9:34 AM by TrackBack
Never reinstall a BizTalk adapter to a different locationooeess

# re:BizTalk and Hyperthreaded processors

Wednesday, June 15, 2005 9:47 AM by TrackBack
BizTalk and Hyperthreaded processorsooeess

# re:Why Mygeneration Beats the Competition when it comes to codegeneration

Wednesday, June 15, 2005 10:06 AM by TrackBack
Why Mygeneration Beats the Competition when it comes to codegenerationooeess

# re:The best text search I ever saw.....

Thursday, June 16, 2005 12:29 AM by TrackBack
The best text search I ever saw.....ooeess

# re:BizTalk Persistency points and performance

Friday, June 17, 2005 1:21 AM by TrackBack
BizTalk Persistency points and performanceooeess

# re:A lot of BizTalk Whitepapers

Friday, June 17, 2005 1:23 AM by TrackBack
A lot of BizTalk Whitepapersooeess

# re: What the .... CLS Compliancy ( VB Got it right all the time )

Sunday, June 19, 2005 11:27 PM by Patrick Wellink
You may also be interested in my comments here:
http://www.danielmoth.com/Blog/2005/05/clscompliant-now-works.html

# re: Sorting XML Nodes with the BizTalk Mapper

Wednesday, June 22, 2005 5:52 PM by Patrick Wellink
Volgende keer ff naar boven lopen Patrick. Sortering binnen XSLT doen we al in een aantal projecten! :-)

# re: Sorting XML Nodes with the BizTalk Mapper

Thursday, June 23, 2005 8:05 AM by Patrick Wellink
`Ja ja maar niet in de biztalk mappert wijsneus

# re: Getting up to speed With MyGeneration. (MyGeneration QuickStart Guide)

Friday, July 01, 2005 8:40 AM by Patrick Wellink
Thanks a lot for your great demo, Patrick! I learned a lot and will definitely give MyGeneration a try in short notice. If you have any experience with developing webapps using the Templates, I'd love to read more...

# re: Getting up to speed With MyGeneration. (MyGeneration QuickStart Guide)

Friday, July 01, 2005 11:45 AM by Patrick Wellink
well there is a demo available on the mygen website, go to the templates and browse a little there.... I guess you will find it soon enough.

# re: Getting up to speed With MyGeneration. (MyGeneration QuickStart Guide)

Friday, July 01, 2005 5:11 PM by Patrick Wellink
It's a nice tool, but dOOdad is not that cool. I really miss the 1:n n:m relations.

# re: Getting up to speed With MyGeneration. (MyGeneration QuickStart Guide)

Friday, July 01, 2005 5:33 PM by Patrick Wellink
We'll have 1:n and n:m in EntitySpaces which is now underway ;)

# re: Can we do something about the Bloggingabout Homepage

Wednesday, August 10, 2005 1:05 AM by Jean-Paul Smit
I totally agree.
I think the previous homepage was much better and easier to navigate.

# re: Can we do something about the Bloggingabout Homepage

Wednesday, August 10, 2005 1:29 AM by Dennis van der Stelt
You could also email me privatly. This doesn't look good.

If you have time to code all this, feel free, send me the result and I'll have a look and might throw it online. The source can be downloaden from communityserver.org

Good luck Patrick!

# re: Can we do something about the Bloggingabout Homepage

Wednesday, August 10, 2005 7:47 AM by Ramon Smits
http://bloggingabout.net

Then select the BLOGS tab

Then on the right select Blogs -> .NET and there you are.. all blogs :)

# re: Can we do something about the Bloggingabout Homepage

Monday, August 15, 2005 4:04 AM by Dennis van der Stelt
Hehehehe, I forgot about that one. Noticed it later, but I expect Patrick to pick up the code and develop a nice solution! :)

# re: Yukon and Paging (Finally)

Tuesday, August 16, 2005 9:43 AM by Mischa Kroon
Still looks a bit complicated... I would think they could just implement it in the same way as mysql paging.

# My first few steps with... MyGeneration

Tuesday, August 30, 2005 3:03 AM by Arno Beljaars
Attracted by the enthousiastic demo and blogs of Patrick, I decided to give MyGeneration a try myself....

# My first few steps with... MyGeneration

Tuesday, August 30, 2005 3:11 AM by Arno Beljaars
Attracted by the enthousiastic demo and blogs of Patrick, I decided to give MyGeneration a try myself....

# My first few steps with... MyGeneration

Tuesday, August 30, 2005 4:45 AM by Arno Beljaars
Attracted by the enthousiastic demo and blogs of Patrick, I decided to give MyGeneration a try myself....

# re: MyGeneration has done it again ! ! ! ! ! !

Wednesday, August 31, 2005 12:38 AM by Patrick Wellink
And Happy with it ?????

# re: Nice BizTalk presentation

Wednesday, September 28, 2005 11:39 PM by Dennis van der Stelt
For what occasion did you present it?!

# re: Nice BizTalk presentation

Thursday, September 29, 2005 12:37 AM by Joris Arts
Thanks Patrick, as I was saying before this is certainly something I will use. It is so nice to get a head start.

# re: Whooooo.... Watch out with the latest MS Security Patches......

Friday, October 21, 2005 5:21 AM by Nathan Pledger
I've found repeatedly that the security patches are not tested sufficiently and one in particular screws ASP.NET up.

So I just have a vanilla SP2 platform.

# re: How many lines of code is that ?

Tuesday, January 10, 2006 8:54 AM by Olaf Conijn
Which makes it a terribly inefficiently written xml processor? ;-)

# re: SPX II Has been released.

Monday, January 30, 2006 8:40 AM by mcable
Hello Patrick,

I am intrigued by your adapter, but am having a problem trying to generate a schema with it. When I try to generate the schema using the "Add Adapter Wizard" after selecting "SPX" and clicking "Next", I get the following error:

"Unable to obtain service organization from the adapter.
Value cannot be null.
Paramter name: stream"

I'm assuming the code is based upon the sample file adapter in the SDK and is just looking for the CategorySchema.xml file. I'm not sure where to place it though, and this is truly the solution. Let me know.

Thanks!
Matt

# Lol @ Why I hate frameworks

Thursday, March 09, 2006 9:03 AM by Ramon Smits

This is a nice read : Why I hate frameworks

I got the url from Patrick Wellink

# re: Factories and Hammers... (Factory Factory Factories)

Thursday, March 09, 2006 11:27 PM by Ernst Wolthaus
Joel's always a good read!

# re: Factories and Hammers... (Factory Factory Factories)

Sunday, March 12, 2006 11:46 PM by Dennis van der Stelt
Yeah, just that this isn't Joel...

But you should read the comments as well. As one person says, it's easy to write a good story and trash something, if you're a writer. That commenter has some good comments as well.

I like the part about Spring that Benji trashes as well. He says Spring isn't that good at all when you look at the inner workings, and that everyone just jumps on the hype and starts using Spring. He doesn't argument it really well though.

# re: I wish i NEVER bought that LCD TV

Tuesday, March 14, 2006 6:03 AM by Nathan Pledger
TV's are much too expensive to buy.

We always rent them, which fair enough, its money down the drain - BUT if it breaks down it is fixed and if a newer model comes out it can be upgraded on a whim.

# re: I wish i NEVER bought that LCD TV

Wednesday, March 15, 2006 4:41 AM by Stephan Dekker
Don't follow this link then....
http://shrinkster.com/cdc

# re: This will make you and everybody laugh (if you are dutch)

Sunday, March 19, 2006 4:40 AM by Ramon Smits
hehe... order them? What about recording the wave master digital out on your card, convert them to mp3 and load them on your sdram for your phone.

That's how I did it ;)

# re: This will make you and everybody laugh (if you are dutch)

Sunday, March 19, 2006 12:03 PM by Patrick Wellink
Did you laugh.....

# re: This will make you and everybody laugh (if you are dutch)

Monday, March 20, 2006 11:40 AM by Dennis van der Stelt
@Ramon : Or you download Sothink SWF Decompiler and just extract the files! :)

# re: learn about the 400+ differences in VS2005 (supercool site)

Wednesday, April 05, 2006 12:43 PM by Chi Wai Man
The information is based on the microsoft site: http://msdn.microsoft.com/vstudio/products/newfeatures/Default.aspx

# re: Have your Business objects generated in 6 minutes !

Thursday, April 06, 2006 2:02 AM by Dennis van der Stelt
SIX WHOLE MINUTES?!?!?!!

And you think that's fast?!

o:-)

# re: Have your Business objects generated in 6 minutes !

Thursday, April 06, 2006 4:48 AM by Patrick Wellink
Yep but that's for you....
i have done it several times and I am done in the time you can say Six Minutes

# re: Have your Business objects generated in 6 minutes !

Monday, April 10, 2006 3:28 AM by Mischa Kroon
I'm personally going to have a look at the easyobjects architecture :)

I do like DooDads a great deal though :)

# re: Have your Business objects generated in 6 minutes !

Tuesday, April 11, 2006 3:31 AM by Dennis van der Stelt
dlinq ftw

# re: What the #^%#$%$#%$..... I HATE YAHOO TOOLBAR !!!!!! (IT'S A VIRUS)

Saturday, April 15, 2006 11:46 PM by Jip Fens
amen!

# Virtual Beertender II

Tuesday, April 18, 2006 12:34 AM by Patrick Wellink
Since it was mentioned on the blog once again,&amp;nbsp;I thought I should share with you the new and completely...

# re: See how MyGeneration is doing on The Code Project Poll

Friday, April 28, 2006 5:21 AM by Nathan Pledger
I'm a CodeSmith man myself, prefer the control and simplicity. Can't be doing with code generators getting in the way of my code, but accept that they are very useful. CodeSmith fits my bill perfectly - if a little slow ont he loading/unloading, but I put that squarely down to .NET

# Inserts with guids have become faster... (in SQL2005 that is)

Friday, April 28, 2006 7:07 AM by Patrick Wellink
Ok,
I am not a real fan of the GUID datatyoe in SQL server cause some people will create clustered indexes...

# re: Have your Business objects generated in 6 minutes !

Friday, April 28, 2006 7:08 AM by Patrick Wellink
I am going to have a look at entityspaces soon, see how that is......

# re: Inserts with guids have become faster... (in SQL2005 that is)

Monday, May 01, 2006 5:04 AM by Jan Schreuder
Haha. That F1 car will do 300 km/h easy. It's the caravan that will be torn apart by the force of that F1 car ;-)

# re: Inserts with guids have become faster... (in SQL2005 that is)

Monday, May 01, 2006 11:32 AM by Patrick Wellink
Whelllllll....

I guess it will corner quite bad with the basis of the caravan dangeling behind it....

I don't know which is heavier ... caravan basis / F1 car...

Well let's give Top Gear a call.....

# re: Is there something wrong with the DataGridView in .Net 2.0

Wednesday, May 03, 2006 12:17 AM by Patrick Wellink
Hmmmm....

Did some googling and found Frans Bouma has a BugReport for it :

http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=0ac37d78-964d-41d5-8b6c-07414253b047

# MyGeneration experiences

Tuesday, May 16, 2006 2:20 AM by Martijn Veken
I've been reading some of Patrick Wellink's posts about MyGeneration with dOOdads and I was curious if...

# re: MyGeneration keeps doing it.... See the successor of dOOdads in action

Tuesday, July 11, 2006 4:40 AM by Mischa Kroon
To be honest I looked at this a while back and I'm not to impressed.

dOOdads already delivers on the things you mention.

Executing same code multiple databases: done by dOOdads.

Not using stored procedures, there are templates for it.

Auto admin interfase (built nicer looking ones myself)

# re: MyGeneration keeps doing it.... See the successor of dOOdads in action

Tuesday, July 11, 2006 6:13 AM by Patrick Wellink
You are partially correct,

With EntitySpaces you have typed collections and you can use them design time.
So add the named columns to the grid.

Furthermore the hierarchial support is will be quite nice

but i do agree with yoy that doodads is in no way obsolete and still is a very powerfull data tier

# Great functionality for every BizTalk Developer.(XpathMutatorStream)

Wednesday, July 12, 2006 12:42 AM by Patrick Wellink
Ok first of all I have to give lots of credit to Martijn Hogendoorn for helping me with this one. I had...

# re: Getting a copy of a DLL that's only in the GAC

Wednesday, July 12, 2006 12:48 AM by Ramon Smits
There is a registry option that disables this explorer behaviour and then you see the same stuff as on the command-line. But I cannot remember exactly what the key is.

# re: Getting a copy of a DLL that's only in the GAC

Wednesday, July 12, 2006 1:11 AM by Patrick Wellink
Ok if anybody knows wich registry entry that is I would be interested......

# re: Getting a copy of a DLL that's only in the GAC

Friday, July 14, 2006 1:11 AM by Marc Jacobi
I usually make a copy of the entire gac (recursively). Just make a .cmd batch file that you rerun after you install a new product you want to develop against.

# re: Getting a copy of a DLL that's only in the GAC

Wednesday, July 26, 2006 11:01 PM by Patrick Wellink
I got a mail from somebody who couldn't react on the post. (For some reason it's disabled. But here is the mail I got.

Onderstaande url vertelt een heel verhaal over de GAC. Net voor hoofdstuk 4 staat de registry key waarmee je de GAC in z'n originele vorm in Windows Explorer ziet.



http://www.codeproject.com/dotnet/DemystifyGAC.asp?df=100&forumid=15829&exp=0&select=856234


Thanks Michel

# re: Another great sample of using XSLT inside the BizTalk mapper

Wednesday, August 02, 2006 11:43 AM by Ronderz
I googled and found, One more geek written the similar functionality in xlinq here

http://biztek.blogspot.com/2006/07/group-and-sum-of-account-biztalk-xlinq.html

# re: Sorting XML Nodes with the BizTalk Mapper

Wednesday, August 02, 2006 11:50 AM by Ronderz
This solution is also worth noting..

http://biztek.blogspot.com/2006/07/group-and-sum-of-account-biztalk-xlinq.html

# re: What the #^%#$%$#%$..... I HATE YAHOO TOOLBAR !!!!!! (IT'S A VIRUS)

Friday, August 04, 2006 12:08 PM by Hmm

go to control panel, add/remove programs, and remove the Yahoo Toolbar

# re: GUID can be good but should never be clustered

Monday, August 07, 2006 10:48 AM by Ross
Though this is an old thread, I am compelled to add to it for anyone that does a web search and reads through attempting to make a decision on GUID vs. INT.

I'd like to summarize all of the above into a simple, concise logic fork as a guideline to GUID vs. INT (disregarding natural keys).

1. For a non-replicated, non-clustered database, a clustered INT PK will most often be the better choice, giving performance and smaller data file sizes.

2. For a replicated, clustered, or otherwise distributed database where synchronization, data merging, etc is needed, a NON-CLUSTERED GUID PK will grant reliable record uniqueness, providing data integrity and simple data merging and updating.

That's it. Apply this simple fork to each table and you will achieve an acceptable solution for your needs.

One cautionary caveat, however: Look to the future. Maybe you requirements now don't include taking a client system off-line to go remote, then come back and merge changes, but what about in a year or two when you want to release version 2? I can say from personal experience that designing and implementing an upgrade strategy to convert your complex INT-based database to be GUID-based to support the data merge is no trivial task.

# Getting a copy of a DLL in the GAC

Wednesday, August 09, 2006 12:47 AM by Jan Schreuder on .Net
A few weeks ago, Patrick Wellink blogged about how you would get a copy of a DLL when it's in the GAC....

# re: Getting an image from an orchestration the easy way.....

Thursday, November 23, 2006 12:38 AM by Marc Jacobi

I prefer: http://martijnh.blogspot.com/2006/01/biztalk-server-2006-export.html

Simple and effective. ;-)

# re: Getting an image from an orchestration the easy way.....

Thursday, November 23, 2006 6:42 AM by Patrick Wellink

Yep I saw that one too, but then i had a problem. I use 2004.......

and i guess it doesn't work for 2004 the method I described works regardlessly of the version you are using.....

# Use XSLT and Xpath to sort in the BizTalk Mapper

Thursday, November 23, 2006 2:20 PM by Adam's Dev Doldrums

Typically when you use BTS to integrate with PeopleSoft Component Interfaces you find your self performing

# re: Failed message routing in BizTalk 2006 REALLY NICE !!!!

Wednesday, January 03, 2007 7:52 PM by Seamless Integration Solutions

good info

# re: Awesome Code generation !!!!

Wednesday, January 31, 2007 1:56 AM by Neil

Useful blog info except:

- all people commenting listed names as Patrick Wellink

- there is no wrap on the comments, i'm having to view source to read them

# re: Problems with the BizTalk SQL Adapter......

Saturday, February 03, 2007 2:34 PM by Hebron

Could you share your ideas on how you wrote a custom SQL Adapter for both Send and receive operation?

I have a legacy application which I'm porting to use BizTalk 2006. I am researching now on what performance and scalabiltiy gains I can expect. I read on several newsgroups that SQL Adapter is slow. Does this mean if I were to use a SQL Adapter to read in data from a databuffer (SQL Table) to my business process (BizTalk), I would face performance issues?

# re: BizTalk Generated WebService has wrong schema in WSDL

Monday, February 05, 2007 5:37 AM by Lars Christian

Hey!

Nice article, I have this exact problem on BTS 2006, but i cant gte it to work at all. Do you know if this even works on BTS2006. It does not even generate the WsdlExtension.cs, I hda co copy and modify from the SDK folders.

Regards,

Lars Christian

# re: Problems with the BizTalk SQL Adapter......

Monday, February 05, 2007 7:21 AM by Patrick Wellink

You could face performance issues. the transaction level is serializable for everything the adapter does, so updating and inserting into the same table can lead to issues

# re: BizTalk Generated WebService has wrong schema in WSDL

Monday, February 05, 2007 7:24 AM by Patrick Wellink

On my biztalk 2006 machine everything is generated. And everything is there so i really don't know what your problem could be. But maybe your installation isn't all that.. ( maybe it got corrupt )

# re: BizTalk Generated WebService has wrong schema in WSDL

Monday, February 05, 2007 7:24 AM by Patrick Wellink

On my biztalk 2006 machine everything is generated. And everything is there so i really don't know what your problem could be. But maybe your installation isn't all that.. ( maybe it got corrupt )

# re: Microsoft Tests its software on an industrial scale.

Wednesday, February 07, 2007 12:29 PM by me

"I also think this is why MS will always have an advantage over open source stuff.... The open source stuff just doesn't have these test facillities....." - it's called the community ;)

Betas and RC's are put into the public for this purpose.

# Microsoft offers lots of free E-Learning Courses

Wednesday, March 28, 2007 12:19 AM by Patrick Wellink

Besides the fact that you can test trive MS technology on their virtual machines &gt;&gt; LINK &lt;&lt;

# Open Source BizTalk Projects on CodePlex

Thursday, June 14, 2007 11:48 AM by Benny's BizTalk Blog (Seamless Integration Solutions)

Open Source BizTalk Projects on CodePlex

# - Jason Hyland

Wednesday, June 20, 2007 5:08 PM by - Jason Hyland

Pingback from  - Jason Hyland

# BizTalk Web Service Publishing Wizard Error: Method not found: System.Xml.Serial

Friday, August 17, 2007 3:01 PM by Edward Smit - BlogNote

# http://technorati.com/tag/biztalk

Monday, October 01, 2007 3:03 PM by TrackBack

# http://technorati.com/tag/biztalk

Monday, October 01, 2007 3:03 PM by TrackBack

# re: Interesting article about SOA.

Thursday, October 25, 2007 11:36 AM by Marc Jacobi

I dont think it really matters to BizTalk if a message represents a document or an event. I think it's more a question of what the architect chooses.

Personally I could see a blend of the two in a single architecture. Sometimes an event is more natural (when you more interested in the event than in the actual data). But I usually tend to think in terms of messages are documents (an Invoice for example)...

# re: How to prepare for the BizTalk 2006 Exam. (70-235)

Thursday, October 25, 2007 1:01 PM by Exam taker

I took the exam once, and the questions from testking where exactly 100% the questions asked on the exam. I guess that microsoft introduced new questions.

# Get certified the right way - Jason Hyland

Thursday, October 25, 2007 4:32 PM by Get certified the right way - Jason Hyland

Pingback from  Get certified the right way - Jason Hyland

# re: How to prepare for the BizTalk 2006 Exam. (70-235)

Friday, October 26, 2007 2:35 PM by Robert Williams

Patrick, I guess you learned your lesson the hard way. The easier way would have been to do some research on TK first, but at least you learned.

The reason the new TKs are not the same as the old, illegal, braindumps that they've been putting out, is because of the recent lawsuit between Microsoft and TK. TK is (poorly) trying to write their own practice test materials now and they're finding that they suck at it. I guess you have too.

Good luck on your future exams!! Pray that you're not one of the future decertified statistics.

# re: BizTalk V-Next

Tuesday, October 30, 2007 4:59 AM by Erwyn van der Meer

I hope Microsoft will have even more in store for us here at the SOA & Business Process conference in Redmond. Keynote will be in approximately 24 hours.

# re: BizTalk V-Next

Tuesday, October 30, 2007 9:06 PM by Erwyn van der Meer

Check out the press release about the "Oslo" announcement here: www.microsoft.com/.../10-30OsloPR.mspx

# re: BizTalk ESB guidance Available on MSDN

Friday, November 09, 2007 11:12 AM by Erwyn van der Meer

I've been to a couple of sessions on this ESB Guidance last week at the Microsoft SOA & BP Conference. It is great stuff and indeed highly recommended.

# Visualizing the benefit of forwardonly streaming in custom pipeline components

Thursday, December 20, 2007 10:51 PM by Be Logical - Be Connected

When doing custom pipeline component development you need to be aware of the forward-only streaming best

# re: The truth about Dynamic SQL and Stored Procedures....

Monday, January 07, 2008 8:35 PM by Dennis van der Stelt

If you can optimize/tune stored procs, you can optimize dynamic sql. Simple.

Same goes for LINQ to SQL or other O/RM, you must optimize everything. And choose the correct technology to solve problems. LINQ to SQL or other O/RM help you solve problems by making them easier. If you need complete control over performance, use a stored proc.

I've seen stored procs of thousands of lines. Tell me, how are you going to optimize that?

# re: The truth about Dynamic SQL and Stored Procedures....

Monday, January 07, 2008 9:16 PM by Patrick Wellink

I have build stored procs of hundreds of lines. This sproc came instead of a sproc of a couple of lines. (The programmers never thought it would get slow) but in time the database grows, and finally they end up with a menu that's just tooooo slow.

This was for the Main menu of I-Mode. So when the simple query didn't work within the specified time frame, it was very simple to rewrite the query and use some logic to speed it up.

So then we ended up with a versiopn 1200 times faster then the original.

This kind of tuning simply cannot be done via dynamic sql. (Sure, you could rewrite the query and compile the dll and deploy that. but that has way more impacht then changing a sproc)

Don't get me wrong, I am not against Dynamic SQL. But I aint against SPROC's eiter.

And you hit a very good point in your comments. You must Optimize them both.....

But who would you trust more to deliver performant code. A programmer or a DBA ? personally I would think a DBA would deliver more performant databases.

And finally dennis, I wont say a sproc of thousands of lines is all that well either. But maybe there was a very valid reason for doing it, or maybe there wasn't one.

# re: The truth about Dynamic SQL and Stored Procedures....

Monday, January 07, 2008 10:35 PM by Chilberto

An important factor in this discussion should be what is being built.  A lot of smaller systems do not require the overhead of stored procedures and would probably benefit from a more "fluid" development environment.

From my standpoint, I prefer stored procedures for business applications that will involve more than one developer over its lifetime.  They tend to be easier to maintain, analyze and tune.

# re: The truth about Dynamic SQL and Stored Procedures....

Tuesday, January 08, 2008 8:03 AM by Dennis van der Stelt

Patrick, there's not a good reason to have thousands of lines of code in a single method, and there isn't one to have them in your sproc. But still people do so.

Of course this isn't about that you can never use stored procedures. Because sometimes, you can handle large amounts of data in them much more effeciently than via code. Because that's what SQL Server or Oracle do best. If you need performance, do it at the source.

But my problem with stored procedures is that so many times I come across them when there's so much business logic in them. And they're still harder to debug than regular code. People should use stored procedures for retrieving and changing data. Not for business rules or all other kinds of stuff...

# re: The truth about Dynamic SQL and Stored Procedures....

Tuesday, January 08, 2008 8:44 AM by Patrick Wellink

I understand your point but I have seen bad Dynamic SQl as well...

But your statement :

you can handle large amounts of data in them much more effeciently than via code. Because that's what SQL Server or Oracle do best. If you need performance, do it at the source.

I totally agree with you at this point. But this implies that you have yo implement some logic in SQL.

You sould always consider where you put stuff. For simple selects and updates it's ok to use dynamic SQL. But as soon as the words 'Large amounts of data' are uttered you should consider switching to Sproc's. Unfortunately this also means you have to implement part of the Business logic in SQL as well.

# re: Using a Bitwise AND in a BizTalk Send Port as a Filter Expression

Thursday, March 20, 2008 5:01 PM by Kenton Price

The Brits on this project have had a bet known as a Wags for such technical arguments: whoever wins the argument gets the loser to buy them dinner at Wagamama in Amsterdam. Had we bet it, I would certainly have lost my first Wags to you on the existence of this operator - well done :) I can't find any significant documentation on it, beyond a passing mention in Charles Young's seminal How Subscription Works blog entry. As we saw yesterday, if you add a send port and click Filters, before you select any promoted property you can select the "&" from the Operator dropdown - however, unless you have any promoted properties of type unsigned int deployed (which you don't in a default BTS install), the "&" then immediately disappears from the Operator dropdown!

# Updating repeating nodes in an XML Document with the same value using XPathMutatorStream &laquo; Connected Thoughts

Pingback from  Updating repeating nodes in an XML Document with the same value using XPathMutatorStream « Connected Thoughts

# Updating repeating nodes in an XML Document with the same value using XPathMutatorStream &laquo; Connected Thoughts

Pingback from  Updating repeating nodes in an XML Document with the same value using XPathMutatorStream « Connected Thoughts

# BizTalk Web Service Publishing Wizard Error: Method not found: System.Xml.Serialization.XmlMapping.get_ElementName()

Saturday, August 02, 2008 4:59 PM by BlogNote

BizTalk Web Service Publishing Wizard Error: Method not found: System.Xml.Serialization.XmlMapping.get_ElementName()

# PiRootOfPi Blog &raquo; Blog Archive &raquo; Copy Files From Global Assembly Cache (GAC)

Pingback from  PiRootOfPi Blog  » Blog Archive   » Copy Files From Global Assembly Cache (GAC)

# re: How to expose an old style WSDL with the schema's included from BizTalk 2006 R2 with a WCF adapter

Monday, October 06, 2008 3:29 PM by Jean-Paul Smit

Als je de machinenaam onlees wil maken, haal hem dan ook uit de titelbalk van IE :-)

# re: How to expose an old style WSDL with the schema's included from BizTalk 2006 R2 with a WCF adapter

Tuesday, October 07, 2008 8:10 AM by Patrick Wellink

Oeps !!

verbeterd

# re: Excellent post of Charles Young about Dublin and BizTalk

Thursday, October 16, 2008 10:37 AM by Jean-Paul Smit

Your direct links don't work......the link to the blog of Charles does.

# re: Excellent post of Charles Young about Dublin and BizTalk

Thursday, October 16, 2008 2:01 PM by Patrick Wellink

oops

# re: Excellent post of Charles Young about Dublin and BizTalk

Thursday, October 16, 2008 3:39 PM by Erwyn van der Meer

Thanks for the link. Interesting read, even for a Microsoftee ;)

# re: How to expose an old style WSDL with the schema's included from BizTalk 2006 R2 with a WCF adapter

Wednesday, October 22, 2008 8:30 AM by Edward Lim

I've seen Thomas's post as well, but I am still running into the trouble whereby the wsdl:binding element is still in a separate wsdl definition. The generated "main" WSDL has an wsdl:import element that imports the binding element, but we need it in the flatten out WSDL definition. Any idea?

# SSIS100: What Reference To Add To Create Component? | keyongtech

Pingback from  SSIS100: What Reference To Add To Create Component? | keyongtech

# SMS 2003 and Event Log | keyongtech

Thursday, January 22, 2009 5:13 AM by SMS 2003 and Event Log | keyongtech

Pingback from  SMS 2003 and Event Log | keyongtech

# Mapper question, get the count of a recurring record | keyongtech

Pingback from  Mapper question, get the count of a recurring record | keyongtech

# Updategram vs Sql SoredProcedure. Which to choose and why | keyongtech

Pingback from  Updategram vs Sql SoredProcedure. Which to choose and why | keyongtech

# Persistance points performance | keyongtech

Thursday, January 22, 2009 9:56 AM by Persistance points performance | keyongtech

Pingback from  Persistance points performance | keyongtech

# XPathMutatorStream | keyongtech

Thursday, January 22, 2009 11:07 AM by XPathMutatorStream | keyongtech

Pingback from  XPathMutatorStream | keyongtech

# re: Cannot add (custom) pipeline component to the toolbox (You have selected an invalid pipeline component assembly. Please check security settings for the assembly if you are loading it from an UNC path)

Wednesday, February 18, 2009 3:12 PM by Jean-Paul Smit

I ran into this as well a while ago and I remember the same cause. I don't know where I found the solution but I think in a blog or the MSDN forums.

# re: The transport proxy method DeleteMessage() failed for adapter XYZ (Bug in Codeplex Adapter Wizard)

Thursday, February 26, 2009 2:25 PM by T. Berg

"It's logical that copying the entire context from one request message to a response message can cause these problems"

Can you elaborate on that?

Im having those issues described. But I dont quite understand how not copying the context will make this work. When copying the context, you are copying the correlation values used by BizTalk to futherly route the response message. If this is not present in context, how are message correlation values assigned to the new context?

# re: The transport proxy method DeleteMessage() failed for adapter XYZ (Bug in Codeplex Adapter Wizard)

Thursday, February 26, 2009 3:08 PM by Patrick Wellink

Well for example....

MessageType,

MessageID

all those values are beeing copied. So if BT wants to delete a specific message, we will have TWO of those instead of one.

If you want to correlate on properties make sure the property you correlate on is a promoted field. Define a propertyschema and use a xmlreceive pipeline to populate all the required properties.

# SOAP Headers in BizTalk

Monday, March 09, 2009 6:59 PM by Marcel's SOA & BPM blog

I recently had to do a proof of concept, where I had to connect BizTalk Server to some internal web services

# re: BizTalk 2009 WILL INCLUDE ESB !!!!! (SCOOP)

Saturday, March 14, 2009 7:19 AM by Steef-Jan Wiggers

That's great news :)

# Building your own Adapter. Serious Pitfals !!

Tuesday, March 31, 2009 1:06 PM by Patrick Wellink

This blog post is about several experiences I had when building my own Sybase adapter. Normally i would

# re: Building your own Adapter. Serious Pitfals / Adapter WOES !!

Thursday, April 02, 2009 5:23 PM by Amit Patel

Hi Patrick,

Could I please have source code for your sybase database adapter? I am in the same boat. We bought a  license from top xml and now want a developer license for further development. I sent them so many emails but no reply at all.

So I would be very grateful to  you if you can send me the adapter that you created. My email id is amitmca@yahoo.com

Kind regards,

Amit

# re: Building your own Adapter. Serious Pitfals / Adapter WOES !!

Friday, April 03, 2009 12:00 PM by Patrick Wellink

Sorry Amit,

I cannot do that, i developed the adapter for a customer, so the customer is the owner. I cannot give away anuthing that's not mine to give....

But with the BugFixes in this BlogPost it shouldn't be too hard to write your own adapter

# Software zum Suchen und Ersetzen von Textpassagen

Monday, May 25, 2009 12:33 AM by Software zum Suchen und Ersetzen von Textpassagen

Pingback from  Software zum Suchen und Ersetzen von Textpassagen

# re: About EDI / Property Schemas and Validate instance

Thursday, June 11, 2009 10:34 PM by Ashish Talati

Patrick -

Sorry for posting comment here, but I was interested in the solution you have created on limiting orchestration instance ( bloggingabout.net/.../limit-the-number-of-instances-of-any-biztalk-service.aspx ).   Seems that codeplex source code is no longer available.  Do you still happen to have source?

Thanks

Ashish

# re: About EDI / Property Schemas and Validate instance

Friday, June 12, 2009 12:43 PM by Patrick Wellink

No Sorry, this code is no longer available.

Although the solution worked quite well it still used sequential convoys. And using sequential convoys in a orchestrations will make them slow if has to handle too many messages. The state of the orchestration is persisted for every loop. So, 10 loops go fine, 100 loops tak ea little longer and with 1000 loops, the system is only persisting state and flodding the DB with it.

This was not a problem of my solution but is a problem of sequential convoys. Since my solution used seq convoys it also suffers from this problem. Making it not as robust as it should be.

The only way I kan think of to limit instances is by using a database.... Sorry

# The transport proxy method DeleteMessage() failed for adapter XYZ (Bug in Codeplex Adapter Wizard)

Monday, August 03, 2009 11:15 AM by IvanJo's Blog

Recently I’m experiencing strange errors on my custom adapter like: Event Type: Error Event Source: BizTalk

# Pearl Tech &raquo; Blog Archive &raquo; BizTalk Pipeline Out Of Memory

Monday, September 21, 2009 7:59 PM by Pearl Tech » Blog Archive » BizTalk Pipeline Out Of Memory

Pingback from  Pearl Tech  » Blog Archive   » BizTalk Pipeline Out Of Memory

# re: Gjeeeeez, Guidance automation and VS 2008 SP1, Thank Google for that !

Tuesday, September 22, 2009 5:44 PM by pim waaijenberg

maybe you should start to follow my blog!

# re: Gjeeeeez, Guidance automation and VS 2008 SP1, Thank Google for that !

Wednesday, September 23, 2009 8:00 AM by Patrick Wellink

i juxst added you to my bloglines so from now on i am watching you