Do you have your eye on it CS2007 SP1
Commerce Server 2007 Service Pack 1 is due out end of June if all goes well :), keep your eye on it. There are two things note worthy:
Replication of Orders and Profiles Database
This was a design change request that was introduced right after the product went live so a lot of testing wen into it. The replication will allow to have more than one Data Centers acting as active active. If one data center goes down the other can pick up the load. Should be interesting to read all the details on how to do this.
Using Tabular functions for Catalogs SetJoin API
I am very proud of this as I had a hand in it :). I had my hand in lots of cookie jars when I was at Microsoft, still do ;). Originally the product only supported tables and views to be joined with the Product object. Some scenarios made it impossible to use the SetJoin API. Imagine if you had dynamic pricing scenario, you could write a function that runs a select statement based on parameters you passed it and the product API would then return you some results that you could then perform validations and selecting the correct price. What if you needed to search a table before the join occurred? Well now you can. I am very eager to see how this is implemented and how people will use.
And they say Microsoft doesn't listen to it's customers :). I am very proud to have been part of the product group developing such a great software. Make sure to read every little bit of what's new.
Comments
Anonymous
July 09, 2007
Max, I am currently working on a project using Commerce Server 2007. The ability to use a table function in the SetJoin is exactly what I need! However, I cannot find any Commerce Server documentation on this particular feature. Do you know where I can find more information about this feature and how to use it?Anonymous
July 09, 2007
Hi Andrew, I will contact the product group folks and see what I can find (looks like the documentation got missed). I will also try some tests tomorrow night and see what I can find. -MaxAnonymous
July 09, 2007
Max, Thanks for the quick response. I did some additional research of my own. Turns out the .NET API remained the same, but the stored procedure that is called to perform the join (dbo.ctlg_JoinQueryWithTable) has been extended to include a check for parenthesis and allows the table function call to pass through. Your blog has saved the day more than once on our project. Thanks for your help! AndrewAnonymous
July 10, 2007
I tried to get this working, but still the validation of the join table failed. Further research into the database shows that the stored procedure checks a special table to see if the "Extended Feature" is enabled to allow table functions for joins. Still cannot find documentation, but was able to get this working by adding the following table to the product catalog database: CREATE TABLE dbo.[CS2007CatalogSystemExtendedFeatures] ( FeatureName NVARCHAR(100), IsAllowed bit default 0, ) INSERT INTO dbo.[CS2007CatalogSystemExtendedFeatures] (FeatureName,IsAllowed) VALUES ('AllowJoinWithInlineFunctions',1)Anonymous
July 11, 2007
Nice going and thanks for posting your solution, I have learned that you need to opt in for this feature as there are risks of opening oneself for SQL injection. This will be a KB. -MaxAnonymous
July 18, 2007
I'm attempting to use a table function in the SetJoinTable method. It works just fine if the parameters are hard coded in the web.config. For example, MyTableFunction(23). Is it possible to have dynamic parameters passed to the function? If so, how do I set up the web.config? I would like to call MyTableFunction with a dynamic parameter, ie a user id or client name.Anonymous
July 25, 2007
You need to set this under JoinTableInformation.TargetTableName = 'functionname(@parm)'. Good luck, -Max