<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6253919044362617933</id><updated>2012-01-29T15:13:21.665-05:00</updated><category term='WCF Services'/><category term='SharePoint 2007'/><category term='SEO'/><category term='WCF Ria Services'/><category term='BDC'/><category term='Web Services'/><category term='.Net'/><category term='SSRS'/><category term='SQL Server 2005'/><category term='Windows 2008'/><category term='T-SQL'/><category term='Conversion'/><category term='AD LDS'/><category term='Types'/><category term='CROSS APPLY'/><category term='Row Color'/><title type='text'>The Wayward Programmer</title><subtitle type='html'>Information on .Net, SSRS, SQL, SharePoint, SSAS, SSIS, etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-8203835330518922948</id><published>2011-01-29T11:19:00.003-05:00</published><updated>2011-01-29T11:38:51.807-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WCF Ria Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF Services'/><title type='text'>WCF Ria Services vs WCF Services</title><content type='html'>&lt;strong&gt;&lt;span style="font-size: large;"&gt;WCF RIA Services&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;u&gt;Pro’s:&lt;/u&gt;&lt;/em&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Service can be consumed easily from Silverlight, AJAX, and WebForms. (Not winforms(??))&lt;/li&gt;&lt;li&gt;Non-discoverable.&lt;/li&gt;&lt;li&gt;Richer client side object model by including business rules and relationships between objects.&lt;/li&gt;&lt;li&gt;Quicker to set up. Good for Rapid development.&lt;/li&gt;&lt;li&gt;More control over what is exposed. Uses a set Interface.&lt;/li&gt;&lt;li&gt;Integrated change tracking by default.&lt;/li&gt;&lt;li&gt;Can monitor changes in client and batch the changes to the server.&lt;/li&gt;&lt;li&gt;Uses reflection at design time to see objects (doesn’t use service contracts)&lt;/li&gt;&lt;li&gt;Creates client code in Silverlight.&lt;/li&gt;&lt;li&gt;Design time experience with data sources, drag drop etc. (Contains these features)&lt;/li&gt;&lt;li&gt;Shares validation logic in client.&lt;/li&gt;&lt;li&gt;Can use a set interface. Also provides Context object in client.&lt;/li&gt;&lt;li&gt;Can support Linq queries between client and server but these are based on Interface. &lt;/li&gt;&lt;li&gt;Examples: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;GetGamesByIdQuery(1);&lt;/li&gt;&lt;li&gt;Var qry = GetGamesQuery().Where(g =&amp;gt;; g.Price&amp;nbsp;&amp;lt; 50)&lt;br /&gt;LoadOperation&lt;game&gt; op = cnt.Load&lt;game&gt;(qry);&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;u&gt;&lt;em&gt;Con’s:&lt;/em&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Harder to Customize than WCF Services&lt;/li&gt;&lt;li&gt;No message-level security&lt;/li&gt;&lt;li&gt;Serialization is not well supported (has limitations)&lt;/li&gt;&lt;li&gt;Gives up flexibility compared to WCF&lt;/li&gt;&lt;li&gt;Harder to debug.&lt;/li&gt;&lt;li&gt;Not easy to integrate with large enterprise applications&lt;/li&gt;&lt;li&gt;More tightly coupled than WCF Services.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;WCF Services&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;em&gt;Pro’s:&lt;/em&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Standardized on OData protocol &lt;/li&gt;&lt;li&gt;Loosely coupled clients and servers&lt;/li&gt;&lt;li&gt;Service can be consumed from .NET, Silverlight, AJAX, PHP and Java (libraries available).&lt;/li&gt;&lt;li&gt;Cross platform interoperability as a goal: Out-of-box support from future MS products such as SQL2008 R2, Azure, Excel 2010, SharePoint 2010, etc.&lt;/li&gt;&lt;li&gt;RESTful&lt;/li&gt;&lt;li&gt;Discoverable&lt;/li&gt;&lt;li&gt;Uses JSON and ATOM (xml-based feed format)&lt;/li&gt;&lt;li&gt;Can interact WCF service using standard HTTP verbs such as GET/POST/DELETE&lt;/li&gt;&lt;li&gt;Uses Entity data modeling (EDM), entity-relationship derivative&lt;/li&gt;&lt;li&gt;Non-relational sources can be represented using EDM exposed as data service.&lt;/li&gt;&lt;li&gt;Support for Membership =&amp;gt; activate membership endpoint.&lt;/li&gt;&lt;li&gt;Allows you to add operations to fill custom operations.&lt;/li&gt;&lt;li&gt;Includes Data Context class to monitor changes, issue changes in batches with transactional support.&lt;/li&gt;&lt;li&gt;Queryable end-points (not a set interface).&lt;/li&gt;&lt;li&gt;Flexible querying, paging association traversal.&lt;/li&gt;&lt;li&gt;Supports Linq queries between client and server. Client can create Linq query and run it on server.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Example:&lt;br /&gt;var qry from g in ds.Games WHERE Id == 1 &lt;br /&gt;select g&lt;br /&gt;Qry.BeginExecute();&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Code written on client is small (Linq calls and context class work)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&amp;nbsp;&lt;em&gt;&lt;u&gt;Con’s:&lt;/u&gt;&lt;/em&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Does not give tight control over Interface to data access&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-8203835330518922948?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/8203835330518922948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2011/01/wcf-ria-services-vs-wcf-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/8203835330518922948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/8203835330518922948'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2011/01/wcf-ria-services-vs-wcf-services.html' title='WCF Ria Services vs WCF Services'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-5120541791157689323</id><published>2010-12-24T11:27:00.000-05:00</published><updated>2010-12-24T11:27:03.749-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>SSRS Issues attaching Reports to Email subscriptions</title><content type='html'>I was attempting to set up an email subscription on our production server the other day but kept getting errors when the subscription ran.  The development server subscriptions ran fine, the configuration settings for both servers appeared identical. &lt;br /&gt;&lt;br /&gt;The weird thing was that I could send a subscription through email as long as I didn't attach the report.  &lt;br /&gt;&lt;br /&gt;After much searching, and pulling out my hair, I finally found this KB article: &lt;a href="http://support.microsoft.com/?kbid=842423"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A call to the "AuthzInitializeContextFromSid" API function fails during the delivery of an e-mail subscription in SQL Server Reporting Services&lt;br /&gt;&lt;br /&gt;My hint was the error in the error log: &lt;br /&gt;ERROR: Throwing Microsoft.ReportingServices. Diagnostics. Utilities. ServerConfigurationErrorException: The Report Server has encountered a configuration error; more details in the log files, &lt;b&gt;AuthzInitializeContextFromSid:&lt;/b&gt; Win32 error: 5; possible reason - &lt;b&gt;service account doesn't have rights to check domain user SIDs.; &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;KB article 842423 walks you through how to give the account the permissions it needs to read the SID values.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-5120541791157689323?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/5120541791157689323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/12/ssrs-issues-attaching-reports-to-email.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/5120541791157689323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/5120541791157689323'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/12/ssrs-issues-attaching-reports-to-email.html' title='SSRS Issues attaching Reports to Email subscriptions'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-6591612234987545602</id><published>2010-12-24T11:15:00.000-05:00</published><updated>2010-12-24T11:15:08.119-05:00</updated><title type='text'>Display all SQL Server's on a Network</title><content type='html'>cd C:\Program Files\Microsoft SQL Server\90\Tools\Binn&lt;br /&gt;sqlcmd -L&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-6591612234987545602?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/6591612234987545602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/12/display-all-sql-servers-on-network.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/6591612234987545602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/6591612234987545602'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/12/display-all-sql-servers-on-network.html' title='Display all SQL Server&apos;s on a Network'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-6592897067868575520</id><published>2010-12-24T11:11:00.001-05:00</published><updated>2010-12-24T11:12:17.589-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Coalescing (??) Operator for .Net</title><content type='html'>The Null-Coalescing Operator&amp;nbsp;acts similiar to TSQL IsNull.&lt;br /&gt;&lt;br /&gt;The ?? operator defines the default value to be returned when a nullable type is assgned to a non-nullable type. This works for both reference types and value types&lt;br /&gt;&lt;br /&gt;&lt;u&gt;C#.Net Example:&lt;/u&gt;&lt;br /&gt;string message =&amp;nbsp;strOldMessage ?? "This is the default";&lt;br /&gt;&lt;u&gt;TSQL Example:&lt;/u&gt;&lt;br /&gt;IsNull(printDate, GetDate())&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-6592897067868575520?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/6592897067868575520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/12/coalescing-operator-for-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/6592897067868575520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/6592897067868575520'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/12/coalescing-operator-for-net.html' title='Coalescing (??) Operator for .Net'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-4967974306605064054</id><published>2010-11-12T17:44:00.002-05:00</published><updated>2011-01-29T11:45:54.379-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='AD LDS'/><title type='text'>Bulk Import into AD LDS Using cvsde command line utiltiy</title><content type='html'>Discovered how to bulk import users into AD LDS by using cvsde command line utiltiy. &lt;br /&gt;&lt;br /&gt;Example: &lt;br /&gt;cd C:\Windows\System32&lt;br /&gt;csvde -i -f c:\importFile.csv -s ServerName -t PortNumber&lt;br /&gt;...&lt;br /&gt;This uses SSPI. More info can be found at: &lt;a href="http://technet.microsoft.com/en-us/library/cc787549%28WS.10%29.aspx"&gt;http://technet.microsoft.com/en-us/library/cc787549%28WS.10%29.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-4967974306605064054?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/4967974306605064054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/11/bulk-import-into-ad-lds-using-cvsde.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/4967974306605064054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/4967974306605064054'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/11/bulk-import-into-ad-lds-using-cvsde.html' title='Bulk Import into AD LDS Using cvsde command line utiltiy'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-5479747560299954974</id><published>2010-09-17T23:33:00.003-04:00</published><updated>2010-09-17T23:35:37.815-04:00</updated><title type='text'>MMRWA Presentation - Social Media 101</title><content type='html'>Tomorrow I'll be giving a presentation on Social Media 101 for the Mid-Michigan Romance Writers Association. &lt;br /&gt;&lt;br /&gt;&lt;a href="https://sites.google.com/site/miajohnson01/upcoming-seminars/BloggingJargon.doc"&gt;Blogging Jargon&lt;/a&gt;&lt;br /&gt;&lt;a href="https://sites.google.com/site/miajohnson01/upcoming-seminars/ComparisonofBlogSoftwareFeatures&amp;amp;Tools.doc"&gt;Comparison of Blog Software Features and Tools&lt;/a&gt;&lt;br /&gt;&lt;a href="https://sites.google.com/site/miajohnson01/upcoming-seminars/HelpfulLinks.doc"&gt;Helpful Links&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'll add more tomorrow after the meeting.&lt;br /&gt;See you there!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-5479747560299954974?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/5479747560299954974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/09/mmrwa-presentation-social-media-101.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/5479747560299954974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/5479747560299954974'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/09/mmrwa-presentation-social-media-101.html' title='MMRWA Presentation - Social Media 101'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-5100601411783070329</id><published>2010-09-06T19:11:00.001-04:00</published><updated>2010-09-06T19:13:42.979-04:00</updated><title type='text'>Motivation</title><content type='html'>This is a brief departure from my usual cut and dried format, but I thought I'd post about something a bit different today.&lt;br /&gt;&lt;br /&gt;This past week has been a killer. I started a new job which uses significantly different technologies from my previous jobs, and in attempting to 'catch up' I feel burnt out. I know I need to put in extras hours outside of work to study up on the new technologies, but my motivation is lacking. I find these types of times the hardest in my career as a developer. It's not the continous learning, the long hours, the stress, or vague client requirements. It's the times when you really just want to play a mindless video game, or read a non-programming related book.  Those times when you have to literal force yourself to settle down and just read over the hello world beginner app's to get the hang of some new technology or methodology. Sometimes it feels like torture.&lt;br /&gt;&lt;br /&gt;However, I am very fortunate to have a good job that allows me to learn new technologies and new skills. It's exciting, it's a little scary, but all in all I'm extremely grateful for the opportunity. But dang it! Summers almost over and I want to a squeeze every last little moment from the day until that horrible, horrible snow starts flying again!&lt;br /&gt;&lt;br /&gt;What do you do to motivate yourself when the weather is perfect, and you're coffee cup is empty?&lt;br /&gt;&lt;br /&gt;Here's my list: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;I head down to the book store and pick out one of their books on .Net or whatever and read there.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I pack up my IPad and head down to the coffee shop to read articles and sites, and treat myself to a big tasty Mocha. &lt;/li&gt;&lt;li&gt;I force myself to spend just 15 minutes solid on reading a few chapters in the book (Currently Silverlight 4). After 15 minutes I'm usually hooked on whatever I'm reading that I'll read for another hour or so. If not, then I set the book down because chances are I'm not going to retain what I've read if I can't concentrate for at least 15 minutes.  &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-5100601411783070329?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/5100601411783070329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/09/lack-of-motivation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/5100601411783070329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/5100601411783070329'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/09/lack-of-motivation.html' title='Motivation'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-2430360437970348786</id><published>2010-09-04T08:37:00.001-04:00</published><updated>2010-10-07T11:48:36.225-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>SQL Try Catch</title><content type='html'>&lt;strong&gt;What is TRY… CATCH?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The TRY... Catch construct was designed to improve the functionality in processing errors. With it comes a cleaner and more readable syntax that is familiar to programmers. In addition, this construct can return the transaction state of your procedures, and allow the developer to either log the details of the error, or return this information to the calling procedure.&lt;br /&gt;&lt;br /&gt;The new functions available with TRY... CATCH include XACT_STATE, ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, and ERROR_STATE.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;@@ERROR vs. TRY... CATCH &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Error handling in SQL Server 2000 and earlier consisted of the @@ERROR function. SQL Server 2005 introduced the TRY... Catch construct. These two error handling styles have varying ways of dealing with the errors produced.&lt;br /&gt;&lt;br /&gt;• @@ERROR is cleared and reset on each statement executed. This requires developers to test the error, or save it to a variable, after each TSQL statement. This greatly increases the lines of code needed. &lt;br /&gt;&lt;br /&gt;• TRY…CATCH constructs contain the error handling in the CATCH block, which produces a cleaner layout. It also contains an expanded set of system functions for returning error codes and messages.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Pro’s of TRY… CATCH&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Catch blocks can be nested.&lt;br /&gt;&lt;br /&gt;Better able to handle deadlocks.&lt;br /&gt;&lt;br /&gt;Error messages are defined and stored in the system table sys.messages. The sys.messages catalog can return a system-defined message, or developers can create their own user-defined message (see sp_addmessage). &lt;br /&gt;&lt;br /&gt;Outside of a CATCH block, @@ERROR is the only part of a Database Engine error available within the batch, stored procedure, or trigger that generated the error. All other parts of the error, such as its severity, state, and message text containing replacement strings (object names, for example) are returned only to the application in which they can be processed using the API error-handling mechanisms. If the error invokes a &lt;br /&gt;&lt;br /&gt;CATCH block, the system functions ERROR_LINE, ERROR_MESSAGE, ERROR_PROCEDURE, ERROR_NUMBER, ERROR_SEVERITY, and ERROR_STATE can be used.&lt;br /&gt;&lt;br /&gt;&lt;div style="display: none;"&gt;&lt;a href="http://anyurl.com/" rel="tag"&gt;CodeProject&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-2430360437970348786?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/2430360437970348786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/09/sql-try-catch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/2430360437970348786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/2430360437970348786'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/09/sql-try-catch.html' title='SQL Try Catch'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-2974279685521292701</id><published>2010-08-21T12:00:00.001-04:00</published><updated>2010-08-21T12:05:28.206-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Search Engine Optimization</title><content type='html'>&lt;ol&gt;&lt;li&gt;Use precise Keywords. &lt;br /&gt;i.e. Load - Bank Loan, Student Loan, Equity Loan, etc.&lt;/li&gt;&lt;li&gt;Order and placement of Keywords matters &lt;br /&gt;&lt;ul&gt;&lt;li&gt;The relative distance between keywords in documents (proximity) &lt;/li&gt;&lt;li&gt;Where in a document the terms occur (distribution) &lt;/li&gt;&lt;li&gt;The co-citation frequency between terms (co-occurance)&lt;/li&gt;&lt;li&gt;The main theme, topic, and sub-topics (on-topic issues) of the documents&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Use Keyword in your domain or sub domain of website.&lt;br /&gt;i.e. &lt;a href="http://www.equityloans.com/"&gt;equityloans.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use hyphens (-) to seperate multiple keywords&lt;br /&gt;i.e. bank-loans, student-loans. Each covers two keywords.&lt;/li&gt;&lt;li&gt;Use relevant directory and file names that reflect your keywords.&lt;br /&gt;i.e. codeExamples.html incorporates code and examples. or bankLoans.html.&lt;/li&gt;&lt;li&gt;Spell check, Declare document Type, Validate HTML &amp;amp; CSS. Search Engines do not like pages with errors. Make sure they're clean and valid.&lt;/li&gt;&lt;li&gt;Put Titles on your pages (60-80 characters) that are relevant.&lt;/li&gt;&lt;li&gt;Heading Tags - Include the most important keyword phrases in the heading tags. &lt;/li&gt;&lt;li&gt;Specifiy Meta Keywords in Heading of document (15 - 29 words). Most search engine do not give these importance, but they are still good to have. &lt;/li&gt;&lt;li&gt;Use text for navigation. &lt;/li&gt;&lt;li&gt;Use synonyms for your keywords throughout your pages. &lt;br /&gt;i.e. programming, coding, etc.&lt;/li&gt;&lt;li&gt;Hyperlink keywords in text. Do not create hyperlinks that say "click here".&lt;/li&gt;&lt;li&gt;Assign "alt" attributes to images.&lt;/li&gt;&lt;/ol&gt;Several points taken from: &lt;a href="http://www.hiddentricks.com/seo/"&gt;http://www.hiddentricks.com/seo/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Great Article on the Basics of Search Engine Optimization. A bit lengthy, but good.&lt;br /&gt;&lt;a href="http://guides.seomoz.org/chapter-4-basics-of-search-engine-friendly-design-and-development"&gt;http://guides.seomoz.org/chapter-4-basics-of-search-engine-friendly-design-and-development&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;How Google Crawls: &lt;a href="http://www.google.com/support/webmasters/bin/answer.py?answer=70897"&gt;http://www.google.com/support/webmasters/bin/answer.py?answer=70897&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SEO browser shows what you're site looks like to crawl engines, view backlinks to your site, and other information to help you see where your site stands:&lt;br /&gt;&lt;a href="http://www.seo-browser.com/"&gt;http://www.seo-browser.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-2974279685521292701?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/2974279685521292701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/08/search-engine-optimization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/2974279685521292701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/2974279685521292701'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/08/search-engine-optimization.html' title='Search Engine Optimization'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-7167530338543130064</id><published>2010-03-28T13:02:00.003-04:00</published><updated>2010-03-28T13:05:12.730-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Types'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Beginners .Net Converting Between Types</title><content type='html'>&lt;strong&gt;Widening Conversion&lt;/strong&gt; - VB and C# allow implicit converison if destingation type can accomodate all possible values from the source.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;For&amp;nbsp;example:&lt;/em&gt;&lt;br /&gt;Dim i as Integer = 1&lt;br /&gt;Dim d as Double = 1.0001&lt;br /&gt;d = 1 ' Conversion allowed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Narrowing Conversion&lt;/strong&gt; - Range or precision of the source type exceeds the destingation type.&amp;nbsp;Usally requires explicit conversion.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;For Example:&lt;/em&gt;&lt;br /&gt;.ToString, .TryParse, CBool, Cint, etc.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Boxing&lt;/strong&gt; - Convert a value type to a reference type.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;For Example: Convert Integer to Object &lt;/em&gt;&lt;br /&gt;Dim i as Integer = 123&lt;br /&gt;Dim o as Object = CType(i, Object)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UnBoxing&lt;/strong&gt; - Convert a reference type to a value type.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;For Example: Assign reference object to value type.&lt;/em&gt;&lt;br /&gt;Dim o as Object = 123&lt;br /&gt;Dim i as Integer = CType(o, Integer)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use Widening/implicit keywo&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;span id="goog_1347637160"&gt;&lt;/span&gt;&lt;span id="goog_1347637161"&gt;&lt;/span&gt;rd for conversions that don't lose precision.&lt;br /&gt;Use Narrowing/explicit keyword for conversion that could lose precision.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;For Example:&lt;/em&gt;&lt;br /&gt;Public Shared Widening Operator CType(ByVal arg as Integer) As TypeA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim res as New TypeA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; res.Value = arg&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return res&lt;br /&gt;End Operator&lt;br /&gt;&lt;br /&gt;MSDN Link:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms171818(VS.80).aspx"&gt;Extending Design-Time Support How-to and Walkthrough Topics&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-7167530338543130064?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='' href='http://msdn.microsoft.com/en-us/library/ms171818(VS.80).aspx' length='0'/><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/7167530338543130064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/03/beginners-net-converting-between-types.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/7167530338543130064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/7167530338543130064'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2010/03/beginners-net-converting-between-types.html' title='Beginners .Net Converting Between Types'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-4177495754176796101</id><published>2009-12-13T18:44:00.006-05:00</published><updated>2009-12-13T19:02:00.057-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Row Color'/><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>SSRS Row and Group Background Formatting</title><content type='html'>For Visual Stuido 2005:&lt;br /&gt;&lt;br /&gt;Select the whole row, open the "Properties" pane. In the Background property click the drop down box and select "Expression". In the pop up box, copy/paste the =IIF(...) statement. Click OK.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Alternate the row color for Detail Lines:&lt;/u&gt; &lt;br /&gt;=IIF(RowNumber(Nothing) Mod 2, "#eeeeee", "#ffffff")&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Group Rows Alter row color:&lt;/u&gt; ("PO_NUM.Value" is the field that&amp;nbsp;is being&amp;nbsp;grouped on)&lt;br /&gt;=iif(RunningValue(Fields!PO_NUM.Value,CountDistinct,Nothing) Mod 2, "#eeeeee", "#ffffff")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Alter text color dynamically:&lt;/u&gt;&lt;br /&gt;1. Left-click the row and column that you’d like to have&amp;nbsp;dynamicly formatted. &lt;br /&gt;2. Go to Properties Pane and select the drop-down box under Color in the Appearance group. Select &lt;expression…&gt;the "Expression" option.&lt;br /&gt;3. Replace the word Black (which is the default) with one of&amp;nbsp;the following text and click OK.&lt;br /&gt;=iif(Fields!JobStatus.Value = "Failed", "Red", "Black")&lt;br /&gt;&lt;br /&gt;Same with dynamically making the text bold, except choose the "Font-style" under "Font". &lt;br /&gt;=iif(Fields!JobStatus.Value = "Failed", "Bold", " Normal ")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Parameter to toggle all visible all hidden:&lt;/u&gt;&lt;br /&gt;Create a 'Report Parameter' by going to the 'Report' menu and choosing "Report Parameters". You have to be in either "Layout" or Data tab to see the 'Report' menu in the top tool bar.&lt;br /&gt;&lt;br /&gt;After choosing "Report Parameters" a pop-up box appears. Create a new parameter called "Expand" and give it default values of 0 and 1. So, say 0 is not expanded, and 1 is. Give your parameter a default value to either always initially open the report with the parameter set to not expand, or to be expanded. Then click OK to close the Report Parameters pop up. &lt;br /&gt;Choose the details row that you want to toggle visibility on. Right click and choose "Edit Group". Go to the Visibility tab and select "Expression" radio button. In the textbox type in the expression below:&lt;br /&gt;&lt;br /&gt;=Parameters!Expand.Value = 0&lt;br /&gt;&lt;br /&gt;Select the Group or item that the detail is dependent on. For instance.. you have Customers as a group, which&amp;nbsp;is grouped on customer name. &amp;nbsp;Select the Customer Name textbox as the Toggle item. Click OK and run the report.&lt;br /&gt;&lt;br /&gt;If you have questions, just ask.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-4177495754176796101?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/4177495754176796101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/12/ssrs-row-and-group-background.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/4177495754176796101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/4177495754176796101'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/12/ssrs-row-and-group-background.html' title='SSRS Row and Group Background Formatting'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-3794644535268896814</id><published>2009-12-01T18:55:00.004-05:00</published><updated>2009-12-01T19:39:55.309-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2007'/><title type='text'>XML Web Services In "Data Source Library"</title><content type='html'>1. Create a web service that returns data in xml format.&lt;br /&gt;&lt;br /&gt;2. Open SharePoint Designer, Click on "Data View" on the top tool bar. In the side panel that opens click "Manage Data Sources".&lt;br /&gt;&lt;br /&gt;3. Click "Connect to a web service..." &lt;br /&gt;&lt;br /&gt;4. Data Source Properties -&amp;gt; Fill in values &lt;br /&gt;&lt;br /&gt;**Parameters -&amp;gt; Check "The value of this parameter can be set via a web part connection" and insert a default value. (if you don't add a default value then it won't hold the check mark value)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;To Use Parameters&amp;nbsp;From/To Another Web Part:&lt;/u&gt;&lt;br /&gt;Drag/drop xml web service onto page. This&amp;nbsp;creates a grid view. Click on it. Click the arrow on the top right corner fo the web service grid on page.&lt;br /&gt;&lt;br /&gt;Select Parameters link -&amp;gt; "Data View Parameters" window pops up -&amp;gt; Make sure "None" is selected&lt;br /&gt;&lt;br /&gt;Web Part Connections -&amp;gt; Get Parameters From -&amp;gt; Connect to a Web Prt on this Page -&amp;gt; Current User Filter &amp;amp; Send Filter Values To -&amp;gt; Cntrl Click on listed items in both sides -&amp;gt; Finish&lt;br /&gt;&lt;br /&gt;**Web Services that pull from Sharepoint lists have to be run on sharepoint server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-3794644535268896814?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/3794644535268896814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/12/xml-web-services-in-data-source-library.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/3794644535268896814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/3794644535268896814'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/12/xml-web-services-in-data-source-library.html' title='XML Web Services In &quot;Data Source Library&quot;'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-3262344662117970156</id><published>2009-12-01T18:23:00.014-05:00</published><updated>2009-12-01T19:49:56.810-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='BDC'/><title type='text'>BDC Security Overview</title><content type='html'>&lt;strong&gt;Security options available when using BDC:&lt;/strong&gt;&lt;br /&gt;&lt;ul style="margin-top: 0px;"&gt;&lt;li&gt;Authentication - verify a user is who he/she claims to be.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Authorization - Determine if user is permitted access to data.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Access Control - Manage access to business data exposed using BDC.&lt;/li&gt;&lt;/ul&gt;When BDC data is exposed on a Web page, the BDC runs within the IIS worker process (w3wp.exe) and uses the IIS application pool user account.&lt;br /&gt;&lt;br /&gt;When BDC is crawled (search) to index content, it runs in the filter daemon process (msadmn.exe).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Authentication models:&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul style="margin-top: 0px;"&gt;&lt;li&gt;&lt;strong&gt;Trusted Subsystem&lt;/strong&gt; - System account is used ot access services and resources on behalf of all authenticated users. Fixed identiy is the application pool ID or group ID retrieved from Single Sign-On (SSO) database.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Impersonation and Delegation&lt;/strong&gt; - Delegates authentication to the WFEs and application pool ID impersonates the user. App pool Id connects to business application servers on user's behalf using Kerberos or SSO.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Four Authentication Modes: (Defined on the LOBSystemInstance XML tag in the ADF)&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ol style="margin-top: 0px;"&gt;&lt;li&gt;&lt;strong&gt;PassThrough &lt;/strong&gt;- Users authentication is passed to back-end server.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;RevertToSelf&lt;/strong&gt; - (Windows Authentication) App Pool ID is used to impersonate user. Reverts back to IIS aplication pool ID before requesting data from back-end LOB system. This is the default option if no authentication mode is specified.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Credentials&lt;/strong&gt; - (Database of users) Uses database credentials from default SSO service. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;WindowsCredentials&lt;/strong&gt; - Uses Microsoft Windows credentials from default SSO Service.&lt;/li&gt;&lt;/ol&gt;Business Data Catalog Glossary: &lt;a href="http://msdn.microsoft.com/en-us/library/ms560072.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ms560072.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-3262344662117970156?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/3262344662117970156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/12/bdc-security-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/3262344662117970156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/3262344662117970156'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/12/bdc-security-overview.html' title='BDC Security Overview'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-1670528875503196619</id><published>2009-12-01T18:16:00.024-05:00</published><updated>2009-12-15T20:22:41.463-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='BDC'/><title type='text'>Business Data Catalog Overview</title><content type='html'>The Business Data Catalog (BDC) provides a method of exposing business data in SharePoint 2007 through a browser interface.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Line of Business Interoperability (LOBi)&lt;/u&gt;&lt;br /&gt;&lt;ul style="margin-top: 0px;"&gt;&lt;li&gt;Reduces or eliminates code &lt;/li&gt;&lt;li&gt;Achieves a deeper integration of data into places where users work. &lt;/li&gt;&lt;li&gt;Centralizes deployment of data source definitions. &lt;/li&gt;&lt;li&gt;Reduce latency to data. &lt;/li&gt;&lt;li&gt;Centralize data security auditing connections &lt;/li&gt;&lt;li&gt;Perform structured data searches&lt;/li&gt;&lt;/ul&gt;BDC uses ADO.Net, OLEDB, or ODBC drivers to connect to different databases. It can also use Web services to connect to business applications. i.e. SAP, or Sieble applications. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Overview on How to Create:&lt;/u&gt; &lt;/strong&gt;&lt;br /&gt;Create a SML file with details of data connection and data formats. The XML file is known as an "application definition file" (ADF). The ADF contains a hierarchy of XML elements, and must conform to the schema described in bdcmetadata.xsd (\Microsoft Office Servers\12.0\Bin\bdcmetadata.xsd)&lt;br /&gt;&lt;br /&gt;&lt;div&gt;To configure Visual Studio 2005 to use bdcmetadata.xsd for IntelliSense, copy and place the BDC Metadata XSD file from %ProgramFiles%\Microsoft Office Servers\12.0\Bin\bdcmetadata.xsd&amp;nbsp;into the folder %ProgramFiles%\Microsoft Visual Studio 8\Xml\Schemas. &lt;br /&gt;Then set the schemalocation in your XML:&lt;br /&gt;&lt;div style="margin-left: 4%;"&gt;&amp;lt;LobSystem xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance" xsi:schmaLocation="./BDCMetadata.xsd" Type="Database" ... &lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Schema for Business Data Catalog Application Definition:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog/bdcMetadata.xsd" target="_blank"&gt;http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog/bdcMetadata.xsd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;The Main Metadata XML tags:&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul style="margin-top: 0px;"&gt;&lt;li&gt;&lt;strong&gt;LOBSystemInstance&lt;/strong&gt; - Object provides authentication and connection string information. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Entity&lt;/strong&gt; - Key object of metadata. Entity belongs to a single LOB system and must have a unique name. Entities contain identifies, methods, filters, and action. Entity should define 2 properties: an identifier (primary key), and a defult column. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Methods&lt;/strong&gt; - Operations related to an entity. Method is a function that makes calls on the data source.Method could be a stored procedure or SQL statement. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Filters&lt;/strong&gt; - Limits the number of entities returned from method &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Actions&lt;/strong&gt; - Provide a link to back-end data source. Used to provide write-back scenarios (send email, open InfoPath form, open new browser window, etc.) &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Associations&lt;/strong&gt; - Link related entities withing LOB system. i.e. Claims and Jobs.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;More Detailed information regarding&amp;nbsp;BDC's (PDF): &lt;a href="http://www.mhprofessional.com/downloads/products/007149328X/007149328X_chap01.pdf" target="_blank"&gt;http://www.mhprofessional.com/downloads/products/007149328X/007149328X_chap01.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Paul Galvin's blog has a great article on how to get Titles to show in the BDC Picker (rather than the ID):&amp;nbsp; &lt;a href="http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!761.entry" target="_blank"&gt;http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!761.entry&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-size:.2em;"&gt;&lt;a href="http://www.topblogarea.com/technology/" title="Technology blogs"&gt;&lt;img border="0" src="http://www.topblogarea.com/tracker.php?do=in&amp;id=117186" alt="Technology blogs"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-1670528875503196619?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/1670528875503196619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/12/business-data-catalog-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/1670528875503196619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/1670528875503196619'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/12/business-data-catalog-overview.html' title='Business Data Catalog Overview'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6253919044362617933.post-8611875958488591162</id><published>2009-11-28T10:15:00.001-05:00</published><updated>2009-11-30T18:12:24.876-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CROSS APPLY'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>Cross Apply and Outer Apply</title><content type='html'>The APPLY operator allows you to return values from an outer table much like JOIN, however I find it's easier to read, and allows&amp;nbsp;joining two tables that I would've had to do some fancy foot work on to join. And since I'm always looking for the simpliest solution, this one fit the bill on my lastest project. &lt;br /&gt;&lt;br /&gt;There are two forms of APPLY: CROSS APPLY and OUTER APPLY.&amp;nbsp; CROSS APPLY returns only rows from the outer table that produce a result. It works similiar to INNER JOIN in that it won't return values that are null. The&amp;nbsp;OUTER APPLY returns either values, or nulls if no values exist.&lt;br /&gt;&lt;br /&gt;The value of using the APPLY operator is that it can yield better performance. Check out &lt;a href="http://explainextended.com/2009/07/16/inner-join-vs-cross-apply/"&gt;http://explainextended.com/2009/07/16/inner-join-vs-cross-apply/&lt;/a&gt;&amp;nbsp;to read more. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;Information on how the Apply operator works&lt;/strong&gt; &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp; &lt;br /&gt;Here's a link to Technet's article on the APPLY operator: &lt;a href="https://technet.microsoft.com/en-us/library/ms175156(SQL.90).aspx"&gt;https://technet.microsoft.com/en-us/library/ms175156(SQL.90).aspx&lt;/a&gt; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Another article that might shed more light on this is from the SQL Team: &lt;a href="http://www.sqlteam.com/article/using-cross-apply-in-sql-server-2005"&gt;http://www.sqlteam.com/article/using-cross-apply-in-sql-server-2005&lt;/a&gt; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;A good article from Steve Novoselac's blog: &lt;a href="http://blog.stevienova.com/2009/07/15/t-sql-using-cross-apply-to-turn-2-queries-into-1/"&gt;T-SQL: Using CROSS APPLY to Turn 2 Queries Into 1&lt;/a&gt; &lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6253919044362617933-8611875958488591162?l=thewaywardprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://technet.microsoft.com/en-us/library/ms175156(SQL.90).aspx' title='Cross Apply and Outer Apply'/><link rel='replies' type='application/atom+xml' href='http://thewaywardprogrammer.blogspot.com/feeds/8611875958488591162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/11/cross-apply-and-outer-apply.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/8611875958488591162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6253919044362617933/posts/default/8611875958488591162'/><link rel='alternate' type='text/html' href='http://thewaywardprogrammer.blogspot.com/2009/11/cross-apply-and-outer-apply.html' title='Cross Apply and Outer Apply'/><author><name>Wayward Programmer</name><uri>http://www.blogger.com/profile/03472298706040855664</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_VdTKinDBUsY/S7exxUkaWEI/AAAAAAAAAOI/nwDARxmuQEg/S220/Dax+Sleeping.jpg'/></author><thr:total>2</thr:total></entry></feed>
