<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">
  <channel>
    <title>Dougbert's Blog</title>
    <description>SQL Server Integration Services (SSIS) and more from Douglas Laudenschlager</description>
    <link>http://dougbert.com/blog/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 2.0.0.36</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://dougbert.com/blog/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Douglas Laudenschlager</dc:creator>
    <dc:title>Dougbert's Blog</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DougbertsBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="dougbertsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title>FILESTREAM filegroups can contain multiple files in SQL Server 2012</title>
      <description>&lt;p&gt;&lt;em&gt;This post describes a new FILESTREAM feature in SQL Server 2012 that enhances the I/O scalability of FILESTREAM data.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In SQL Server 2012, a FILESTREAM filegroup can now contain more than one file.&lt;/p&gt;
&lt;p&gt;You can improve I/O scalability for FILESTREAM data by placing different files within the same FILESTREAM filegroup on different volumes. This feature eliminates the need for complicated workarounds that use partitioning and multiple FILESTREAM filegroups.&lt;/p&gt;
&lt;p&gt;The following example creates the &lt;code&gt;BlobStore1&lt;/code&gt; database. The database is created with one row filegroup and one FILESTREAM filegroup, &lt;code&gt;FS&lt;/code&gt;. The FILESTREAM filegroup contains two files, &lt;code&gt;FS1&lt;/code&gt; and &lt;code&gt;FS2&lt;/code&gt;. Then the database is altered by adding a third file, &lt;code&gt;FS3&lt;/code&gt;, to the FILESTREAM filegroup.&lt;/p&gt;
&lt;p&gt;Thank you to SQL Server tester &lt;strong&gt;Sandu Chirica&lt;/strong&gt; for this Transact-SQL code sample, which will also appear in the CREATE DATABASE topic in SQL Server 2012 Books Online.&lt;/p&gt;
&lt;p id="codeSnippetWrapper"&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;-- This example assumes that the directory C:\BlobStore exists.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;-- The file sizes in this example are arbitrary.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;USE&lt;/span&gt; [master]&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DATABASE&lt;/span&gt; [BlobStore1]&lt;br /&gt;CONTAINMENT = &lt;span style="color: #0000ff;"&gt;NONE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;PRIMARY&lt;/span&gt; &lt;br /&gt;( &lt;br /&gt;    NAME = N&lt;span style="color: #006080;"&gt;'BlobStore1'&lt;/span&gt;, &lt;br /&gt;    FILENAME = N&lt;span style="color: #006080;"&gt;'C:\BlobStore\BlobStore1.mdf'&lt;/span&gt;,&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;SIZE&lt;/span&gt; = 100MB,&lt;br /&gt;    MAXSIZE = UNLIMITED,&lt;br /&gt;    FILEGROWTH = 1MB&lt;br /&gt;), &lt;br /&gt;FILEGROUP [FS] &lt;span style="color: #0000ff;"&gt;CONTAINS&lt;/span&gt; FILESTREAM &lt;span style="color: #0000ff;"&gt;DEFAULT&lt;/span&gt; &lt;br /&gt;(&lt;br /&gt;    NAME = N&lt;span style="color: #006080;"&gt;'FS1'&lt;/span&gt;,&lt;br /&gt;    FILENAME = N&lt;span style="color: #006080;"&gt;'C:\BlobStore\FS1'&lt;/span&gt;,&lt;br /&gt;    MAXSIZE = UNLIMITED&lt;br /&gt;), &lt;br /&gt;(&lt;br /&gt;    NAME = N&lt;span style="color: #006080;"&gt;'FS2'&lt;/span&gt;,&lt;br /&gt;    FILENAME = N&lt;span style="color: #006080;"&gt;'C:\BlobStore\FS2'&lt;/span&gt;,&lt;br /&gt;    MAXSIZE = 100MB&lt;br /&gt;)&lt;br /&gt;LOG &lt;span style="color: #0000ff;"&gt;ON&lt;/span&gt; &lt;br /&gt;(&lt;br /&gt;    NAME = N&lt;span style="color: #006080;"&gt;'BlobStore1_log'&lt;/span&gt;,&lt;br /&gt;    FILENAME = N&lt;span style="color: #006080;"&gt;'C:\BlobStore\BlobStore1_log.ldf'&lt;/span&gt;,&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;SIZE&lt;/span&gt; = 100MB,&lt;br /&gt;    MAXSIZE = 1GB,&lt;br /&gt;    FILEGROWTH = 1MB&lt;br /&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;DATABASE&lt;/span&gt; [BlobStore1]&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;FILE&lt;/span&gt;&lt;br /&gt;(&lt;br /&gt;    NAME = N&lt;span style="color: #006080;"&gt;'FS3'&lt;/span&gt;,&lt;br /&gt;    FILENAME = N&lt;span style="color: #006080;"&gt;'C:\BlobStore\FS3'&lt;/span&gt;,&lt;br /&gt;    MAXSIZE = 100MB&lt;br /&gt;)&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;TO&lt;/span&gt; FILEGROUP [FS]&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;I hope you find this new feature in SQL Server 2012 useful!&lt;/p&gt;
&lt;p&gt;-Doug&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/FILESTREAM-filegroups-can-contain-multiple-files-in-SQL-Server-2012.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/FILESTREAM-filegroups-can-contain-multiple-files-in-SQL-Server-2012.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=7d69efad-f36b-4eda-9768-80829c80c8e5</guid>
      <pubDate>Mon, 27 Feb 2012 10:59:00 -1200</pubDate>
      <category>File and BLOB storage in SQL Server</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=7d69efad-f36b-4eda-9768-80829c80c8e5</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=7d69efad-f36b-4eda-9768-80829c80c8e5</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/FILESTREAM-filegroups-can-contain-multiple-files-in-SQL-Server-2012.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=7d69efad-f36b-4eda-9768-80829c80c8e5</wfw:commentRss>
    </item>
    <item>
      <title>Querying for registered search properties and lists in SQL Server 2012</title>
      <description>&lt;p&gt;&lt;em&gt;This post discusses the new Property Search feature in SQL Server 2012 "Denali" Full-Text Search. In particular, it shows you how to get a list of the search properties that you've registered and the search property lists to which they belong by using a JOIN.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;SQL Server 2012 "Denali" now lets you search specifically for the values of built-in or custom document properties, such as the "Author" of a Microsoft Word document. However, before you can run queries, you have to register the properties that you want to be able to search.&lt;/p&gt;
&lt;p&gt;For more information about property search in SQL Server 2012 Full-Text Search, see &lt;a href="http://msdn.microsoft.com/en-us/library/ee677637(v=sql.110).aspx" target="_blank"&gt;Search Document Properties with Search Property Lists&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let's walk through the steps of registering some search property lists and search properties. Then we'll show how to query this information.&lt;/p&gt;
&lt;p&gt;Thank you to &lt;strong&gt;Venkatraman Parameswaran&lt;/strong&gt;, friend and SQL Server tester, for the code samples in this blog post.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Choose a database&lt;/strong&gt;. First, select the database that you want to use for your testing. The following example creates a new test database just to be safe:&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;pre id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;use&lt;/span&gt; master &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;exists&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; * &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.databases &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; [name] = &lt;span style="color: #006080;"&gt;'testDB1'&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;drop&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;database&lt;/span&gt; testDB1&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;database&lt;/span&gt; testDB1&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;use&lt;/span&gt; testDB1&lt;br /&gt;go&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Create search property lists&lt;/strong&gt;. Now let's create a few search property lists for our testing. Later we'll add search properties to these lists. Search property lists are simply convenient containers for organizing groups of search properties.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;pre id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;--  Create a few search property lists.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;search&lt;/span&gt; property list searchpropertylist_1;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;search&lt;/span&gt; property list searchpropertylist_2;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;search&lt;/span&gt; property list searchpropertylist_3;&lt;br /&gt;go&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Add search properties&lt;/strong&gt;. Now let's add some search properties to the search property lists that we've created. For more information about how to find the values that you need to write these statements, see &lt;a href="http://msdn.microsoft.com/en-us/library/ee677618(v=sql.110).aspx" target="_blank"&gt;Find Property Set GUIDs and Property Integer IDs for Search Properties&lt;/a&gt;. Watch for a future blog post about this subject.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;pre id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;-- Add a few properties to each list. Add some to more than one list.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_1  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.Author'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'f29f85e0-4ff9-1068-ab91-08002b27b3d9'&lt;/span&gt;,&lt;br /&gt;  PROPERTY_INT_ID = 4, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.Author'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_1  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.Subject'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'f29f85e0-4ff9-1068-ab91-08002b27b3d9'&lt;/span&gt;,&lt;br /&gt;  PROPERTY_INT_ID = 3, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.Subject'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_1  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.Title'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'f29f85e0-4ff9-1068-ab91-08002b27b3d9'&lt;/span&gt;, &lt;br /&gt;  PROPERTY_INT_ID = 2, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.Title'&lt;/span&gt;);    &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_2  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.Category'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'d5cdd502-2e9c-101b-9397-08002b2cf9ae'&lt;/span&gt;,&lt;br /&gt;  PROPERTY_INT_ID = 2, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.Category'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_2  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.Comment'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'f29f85e0-4ff9-1068-ab91-08002b27b3d9'&lt;/span&gt;,&lt;br /&gt;  PROPERTY_INT_ID = 6, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.Comment'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_2  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.Company'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'d5cdd502-2e9c-101b-9397-08002b2cf9ae'&lt;/span&gt;,&lt;br /&gt; PROPERTY_INT_ID = 15, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.Company'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_2  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.ContentStatus'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'d5cdd502-2e9c-101b-9397-08002b2cf9ae'&lt;/span&gt;,&lt;br /&gt;  PROPERTY_INT_ID = 27, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.ContentStatus'&lt;/span&gt;);    &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_3  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.Author'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'f29f85e0-4ff9-1068-ab91-08002b27b3d9'&lt;/span&gt;,&lt;br /&gt;  PROPERTY_INT_ID = 4, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.Author'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_3  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.Category'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'d5cdd502-2e9c-101b-9397-08002b2cf9ae'&lt;/span&gt;,&lt;br /&gt;  PROPERTY_INT_ID = 2, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.Category'&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SEARCH&lt;/span&gt; PROPERTY LIST searchpropertylist_3  &lt;span style="color: #0000ff;"&gt;ADD&lt;/span&gt; N&lt;span style="color: #006080;"&gt;'System.Keywords'&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt; (PROPERTY_SET_GUID = &lt;span style="color: #006080;"&gt;'f29f85e0-4ff9-1068-ab91-08002b27b3d9'&lt;/span&gt;,&lt;br /&gt;  PROPERTY_INT_ID = 5, PROPERTY_DESCRIPTION = N&lt;span style="color: #006080;"&gt;'System.Keywords'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Query for registered search property lists&lt;/strong&gt;. Now we're ready to run some queries about the items that we've registered. First, let's query for the search property lists that we've created.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;pre id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;-- Query for all registered search property lists.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; * &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.registered_search_property_lists &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Results:&lt;br /&gt;&lt;br /&gt;property_list_id name                   create_date             modify_date             principal_id&lt;br /&gt;--------------&lt;span style="color: #008000;"&gt;-- ---------------------- ----------------------- ----------------------- ------------&lt;/span&gt;&lt;br /&gt;5                searchpropertylist_1   2012-02-21 10:35:04.463 2012-02-21 10:35:04.510 1&lt;br /&gt;6                searchpropertylist_2   2012-02-21 10:35:04.477 2012-02-21 10:35:04.560 1&lt;br /&gt;7                searchpropertylist_3   2012-02-21 10:35:04.480 2012-02-21 10:35:04.560 1&lt;br /&gt;&lt;br /&gt;(3 &lt;span style="color: #0000ff;"&gt;row&lt;/span&gt;(s) affected)&lt;br /&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Query for registered search properties&lt;/strong&gt;. Now let's query for all the search properties that we've registered across all search property lists.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;pre id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;-- Query for all registered search properties across all lists.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; * &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.registered_search_properties&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Results:&lt;br /&gt;&lt;br /&gt;property_list_id property_id property_name          property_set_guid                    property_int_id property_description&lt;br /&gt;--------------&lt;span style="color: #008000;"&gt;-- ----------- ---------------------- ------------------------------------ --------------- --------------------&lt;/span&gt;&lt;br /&gt;5                1           System.Author          F29F85E0-4FF9-1068-AB91-08002B27B3D9 4               System.Author&lt;br /&gt;5                2           System.Subject         F29F85E0-4FF9-1068-AB91-08002B27B3D9 3               System.Subject&lt;br /&gt;5                3           System.Title           F29F85E0-4FF9-1068-AB91-08002B27B3D9 2               System.Title&lt;br /&gt;6                1           System.Category        D5CDD502-2E9C-101B-9397-08002B2CF9AE 2               System.Category&lt;br /&gt;6                2           System.Comment         F29F85E0-4FF9-1068-AB91-08002B27B3D9 6               System.Comment&lt;br /&gt;6                3           System.Company         D5CDD502-2E9C-101B-9397-08002B2CF9AE 15              System.Company&lt;br /&gt;6                4           System.ContentStatus   D5CDD502-2E9C-101B-9397-08002B2CF9AE 27              System.ContentStatus&lt;br /&gt;7                1           System.Author          F29F85E0-4FF9-1068-AB91-08002B27B3D9 4               System.Author&lt;br /&gt;7                2           System.Category        D5CDD502-2E9C-101B-9397-08002B2CF9AE 2               System.Category&lt;br /&gt;7                3           System.Keywords        F29F85E0-4FF9-1068-AB91-08002B27B3D9 5               System.Keywords&lt;br /&gt;&lt;br /&gt;(10 &lt;span style="color: #0000ff;"&gt;row&lt;/span&gt;(s) affected)&lt;br /&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Query for a combined list of search properties and search property lists&lt;/strong&gt;. Finally we're ready to use a JOIN to get a combined list of search properties and the search property lists to which they belong.&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;pre id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;--  Query to associate properties with the property list.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; A.property_name &lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt; &lt;span style="color: #006080;"&gt;'Search Property'&lt;/span&gt;,&lt;br /&gt;    B.[name] &lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt; &lt;span style="color: #006080;"&gt;'Search Property List'&lt;/span&gt;,&lt;br /&gt;    A.property_set_guid,&lt;br /&gt;    A.property_int_id&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; sys.registered_search_properties A&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;join&lt;/span&gt; sys.registered_search_property_lists B&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; A.property_list_id = B.property_list_id&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;order&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;by&lt;/span&gt; B.name&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Results:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;Search&lt;/span&gt; Property        &lt;span style="color: #0000ff;"&gt;Search&lt;/span&gt; Property List  property_set_guid                    property_int_id&lt;br /&gt;--------------------&lt;span style="color: #008000;"&gt;-- --------------------- ------------------------------------ ---------------&lt;/span&gt;&lt;br /&gt;System.Author          searchpropertylist_1  F29F85E0-4FF9-1068-AB91-08002B27B3D9 4&lt;br /&gt;System.Subject         searchpropertylist_1  F29F85E0-4FF9-1068-AB91-08002B27B3D9 3&lt;br /&gt;System.Title           searchpropertylist_1  F29F85E0-4FF9-1068-AB91-08002B27B3D9 2&lt;br /&gt;System.Category        searchpropertylist_2  D5CDD502-2E9C-101B-9397-08002B2CF9AE 2&lt;br /&gt;System.Comment         searchpropertylist_2  F29F85E0-4FF9-1068-AB91-08002B27B3D9 6&lt;br /&gt;System.Company         searchpropertylist_2  D5CDD502-2E9C-101B-9397-08002B2CF9AE 15&lt;br /&gt;System.ContentStatus   searchpropertylist_2  D5CDD502-2E9C-101B-9397-08002B2CF9AE 27&lt;br /&gt;System.Author          searchpropertylist_3  F29F85E0-4FF9-1068-AB91-08002B27B3D9 4&lt;br /&gt;System.Category        searchpropertylist_3  D5CDD502-2E9C-101B-9397-08002B2CF9AE 2&lt;br /&gt;System.Keywords        searchpropertylist_3  F29F85E0-4FF9-1068-AB91-08002B27B3D9 5&lt;br /&gt;&lt;br /&gt;(10 &lt;span style="color: #0000ff;"&gt;row&lt;/span&gt;(s) affected)&lt;br /&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I hope you find this new feature in SQL Server 2012 useful! Look for more blog posts about property search.&lt;/p&gt;
&lt;p&gt;-Doug&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/Querying-for-registered-search-properties-and-lists-in-SQL-Server-2012.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/Querying-for-registered-search-properties-and-lists-in-SQL-Server-2012.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=9c81197d-bf39-4f2e-8feb-ddae12c4308b</guid>
      <pubDate>Wed, 22 Feb 2012 07:22:00 -1200</pubDate>
      <category>Search in SQL Server</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=9c81197d-bf39-4f2e-8feb-ddae12c4308b</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=9c81197d-bf39-4f2e-8feb-ddae12c4308b</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/Querying-for-registered-search-properties-and-lists-in-SQL-Server-2012.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=9c81197d-bf39-4f2e-8feb-ddae12c4308b</wfw:commentRss>
    </item>
    <item>
      <title>Excel driver now supported on server for use by SSIS</title>
      <description>&lt;p&gt;A year ago, I &lt;a href="http://dougbert.com/blogcs/blogs/dougbert/archive/2011/01/07/excel-driver-not-supported-on-the-server.aspx" target="_blank"&gt;wrote a blog&lt;/a&gt; post to caution SSIS users that the ACE Provider and its Excel driver were &lt;span style="text-decoration: underline;"&gt;not &lt;/span&gt;supported by Microsoft for use on the server.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;That position has changed &lt;/strong&gt;- in certain circumstances! - as I learned today from SSIS dev manager David Noor. The &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=13255" target="_blank"&gt;download page for the ACE Provider &lt;/a&gt;now contains the following new paragraph:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #0000ff; font-size: small;"&gt;The Office System Drivers are only supported under certain scenarios, including: ... &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #0000ff; font-size: small;"&gt;2.To transfer data between supported file formats and a database repository, such as SQL Server. For example, to transfer data from an Excel workbook into SQL Server using the SQL Server Import and Export Wizard or &lt;strong&gt;SQL Server Integration Services (provided the SSIS jobs run in the context of a logged-on user with a valid HKEY_CURRENT_USER registry hive)&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;SSAS Program Manager Dave Wickert explains why the last requirement is critical:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #800000; font-size: small;"&gt;ACE uses the impersonated user&amp;rsquo;s Windows temp folder to  read-write its data. Therefore if your application is using impersonation with  an account that does not have a profile on the server (not an uncommon  situation), then ACE will not be able to create its temp files.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This is good news for all those who are using SSIS with Excel. The Office team that owns the ACE Provider finally heard you roar!&lt;/p&gt;
&lt;p&gt;-Doug&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/Excel-driver-now-supported-on-server-for-use-by-SSIS.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/Excel-driver-now-supported-on-server-for-use-by-SSIS.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=8712a8d0-bbc4-4931-97e7-7e3b89374f00</guid>
      <pubDate>Wed, 25 Jan 2012 05:44:00 -1200</pubDate>
      <category>SQL Server Integration Services (SSIS)</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=8712a8d0-bbc4-4931-97e7-7e3b89374f00</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=8712a8d0-bbc4-4931-97e7-7e3b89374f00</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/Excel-driver-now-supported-on-server-for-use-by-SSIS.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=8712a8d0-bbc4-4931-97e7-7e3b89374f00</wfw:commentRss>
    </item>
    <item>
      <title>Get the Office 2010 Filter Pack for search in SQL Server 2012</title>
      <description>&lt;p&gt;SQL Server 2012 &amp;ldquo;Denali&amp;rdquo; installs the latest Microsoft word breakers and stemmers. However, it does &lt;span style="text-decoration: underline;"&gt;not&lt;/span&gt; install the latest filters for Microsoft Office documents. If you want to use Full-Text Search or Semantic Search to index documents created by the most recent versions of Microsoft products, you have to download the latest filters.&lt;/p&gt;
&lt;h2&gt;Get the latest filters&lt;/h2&gt;
&lt;p&gt;To get the latest Microsoft filters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Download the appropriate version &amp;ndash; 32-bit or 64-bit &amp;ndash; from &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=17062" target="_blank"&gt;Microsoft Office 2010 Filter Packs&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Then install Service Pack 1 for the Filter Pack through Microsoft Update or by downloading the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26606" target="_blank"&gt;32-bit&lt;/a&gt; or &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26604" target="_blank"&gt;64-bit&lt;/a&gt; version. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In a moment, SQL Server will be able to search all the document types supported by the filters included in the filter pack:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Legacy Office Filter (97-2003; .doc, .ppt, .xls) &lt;/li&gt;
&lt;li&gt;Metro Office Filter (2007; .docx, .pptx, .xlsx) &lt;/li&gt;
&lt;li&gt;Zip Filter &lt;/li&gt;
&lt;li&gt;OneNote filter &lt;/li&gt;
&lt;li&gt;Visio Filter &lt;/li&gt;
&lt;li&gt;Publisher Filter &lt;/li&gt;
&lt;li&gt;Open Document Format Filter &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Load the newly-installed filters&lt;/h2&gt;
&lt;p&gt;I said, &amp;ldquo;in a moment,&amp;rdquo; because first you have to tell SQL Server to begin using the newly-installed filters. SQL Server does &lt;span style="text-decoration: underline;"&gt;not&lt;/span&gt; automatically use all filters installed on the computer. Run the following Transact-SQL commands:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Load the new filters:      &lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span style="font-family: Courier New;"&gt;EXEC sp_fulltext_service 'load_os_resources', 1&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;Update the list of components maintained by SQL Server:      &lt;br /&gt;&lt;span style="font-family: Courier New; font-size: small;"&gt;&lt;strong&gt;EXEC sp_fulltext_service 'update_languages'&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;&lt;em&gt;(This step may not be necessary to &lt;span style="text-decoration: underline;"&gt;use&lt;/span&gt; the filters. However it is necessary to ensure up-to-date output &lt;span style="text-decoration: underline;"&gt;about&lt;/span&gt; the installed filters from the &lt;a href="http://msdn.microsoft.com/en-us/library/ms190481(v=SQL.110).aspx" target="_blank"&gt;sp_help_fulltext_system_components&lt;/a&gt; system stored procedure.)&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;Restart the filter daemon host processes:      &lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Courier New;"&gt;&lt;strong&gt;EXEC sp_fulltext_service 'restart_all_fdhosts'&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;How to fix a gotcha related to Office 97-2003 documents (.doc, .xls, etc.)&lt;/h2&gt;
&lt;p&gt;After you install the new filters, SQL Server continues to use the older version of the filter DLL (OFFFILT.DLL) for Microsoft Office 97-2003 documents. This can prevent the proper indexing of documents in certain cases &amp;ndash; for example, an Excel spreadsheet embedded inside a Word document is properly indexed by the newer version of the filter, but not by the older version.&lt;/p&gt;
&lt;p&gt;To resolve this issue and ensure that SQL Server uses the newly-installed version of OFFFILT.DLL for legacy Office documents, do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Delete &lt;/strong&gt;this registry key:       &lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSearch\Filters\.doc&lt;/strong&gt;&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;Load the alternate filters:      &lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span style="font-family: Courier New;"&gt;EXEC sp_fulltext_service 'load_os_resources', 1&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;Restart the filter daemon host processes:      &lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Courier New;"&gt;&lt;strong&gt;EXEC sp_fulltext_service 'restart_all_fdhosts'&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To confirm that SQL Server is now using the newer version of OFFFILT.DLL in the Common Files\Microsoft Shared\Filters folder, you can run the following query:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; * &lt;span class="kwrd"&gt;from&lt;/span&gt;  sys.fulltext_document_types &lt;span class="kwrd"&gt;where&lt;/span&gt; document_type = &lt;span class="str"&gt;'.doc'&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This should return the following information, which confirms that the newly-installed filter DLL is now being used:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&amp;ldquo;.doc       64F1276A-7A68-4190-882C-5F14B7852019     C:\Program Files\Common Files\Microsoft Shared\Filters\OFFFILT.DLL 2010.1400.4746.1000  Microsoft Corporation&amp;rdquo;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Rebuild full-text indexes after installing new filters&lt;/h3&gt;
&lt;p&gt;To see the effects of the newly-installed filters, you have to repopulate existing full-text indexes where the indexed columns contain documents that are supported by the new filters.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I hope this information helps you with Full-Text and Semantic Search in SQL Server 2012!&lt;/p&gt;
&lt;p&gt;Let me know how I'm doing! &lt;strong&gt;Please comment on my blog&lt;/strong&gt;, or send email to &lt;a href="mailto:dougbert@dougbert.com"&gt;dougbert@dougbert.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For technical support, however, I recommend the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqlsearch/threads" target="_blank"&gt;SQL Server Search forum on MSDN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;-Doug&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/Get-the-Office-2010-Filter-Pack-for-search-in-SQL-Server-2012.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/Get-the-Office-2010-Filter-Pack-for-search-in-SQL-Server-2012.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=87ef2f0e-27ee-4a0e-a71d-e64dd5990a55</guid>
      <pubDate>Thu, 17 Nov 2011 05:30:00 -1200</pubDate>
      <category>Search in SQL Server</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=87ef2f0e-27ee-4a0e-a71d-e64dd5990a55</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=87ef2f0e-27ee-4a0e-a71d-e64dd5990a55</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/Get-the-Office-2010-Filter-Pack-for-search-in-SQL-Server-2012.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=87ef2f0e-27ee-4a0e-a71d-e64dd5990a55</wfw:commentRss>
    </item>
    <item>
      <title>Recompile VSTA scripts programmatically in SSIS</title>
      <description>&lt;p&gt;You can use the SQL Server Integration Services API to reconfigure a package dynamically, or even to create an entire package from scratch. Books Online doesn't say much about this. But the SSIS product team has provided the &lt;a href="http://sqlsrvintegrationsrv.codeplex.com/releases/view/17647" target="_blank"&gt;Package Generation Sample&lt;/a&gt;, and various &lt;a href="http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/64572/" target="_blank"&gt;bloggers&lt;/a&gt; and authors have described the process and the code.&lt;/p&gt;
&lt;p&gt;What if you want to add Script Tasks or Script Components programmatically? I blogged about this in 2008 - &lt;a href="http://dougbert.com/blogs/dougbert/archive/2008/05/24/adding-a-vsta-script-task-programmatically.aspx" target="_blank"&gt;Adding a VSTA Script task programmatically&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And now the big question. &lt;strong&gt;What if you want to recompile the VSTA scripts?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;em&gt;The information in this blog post applies to SQL Server 2008 and 2008 R2. After publishing this post, I learned from SSIS developer Matt Masson that the sequence of API calls to recompile VSTA scripts has changed for SQL Server 2012 "Denali." Matt will publish a blog post with this new information. I will post a link here when that information becomes available.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;1. How to recompile VSTA scripts programmatically&lt;/h2&gt;
&lt;p&gt;The answer is implicit in the code sample that I provided &amp;ndash; just load the script into the VSTA IDE, then close the IDE. Here are the critical lines from the code sample in my old post, where &lt;strong&gt;&lt;em&gt;task&lt;/em&gt;&lt;/strong&gt; is a &lt;strong&gt;ScriptTask&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// This method loads solution and builds it&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="csharpcode"&gt;task.ScriptingEngine.LoadScriptSolution(path);&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// This one closes IDE and saves binary code &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&amp;nbsp;&lt;/span&gt;task.ScriptingEngine.CloseIDE(&lt;span class="kwrd"&gt;true&lt;/span&gt;);            &lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!-- .csharpcode { 	background-color: #ffffff; font-family: consolas, "Courier New", courier, monospace; color: black; font-size: small } .csharpcode pre { 	background-color: #ffffff; font-family: consolas, "Courier New", courier, monospace; color: black; font-size: small } .csharpcode pre { 	margin: 0em } .csharpcode .rem { 	color: #008000 } .csharpcode .kwrd { 	color: #0000ff } .csharpcode .str { 	color: #006080 } .csharpcode .op { 	color: #0000c0 } .csharpcode .preproc { 	color: #cc6633 } .csharpcode .asp { 	background-color: #ffff00 } .csharpcode .html { 	color: #800000 } .csharpcode .attr { 	color: #ff0000 } .csharpcode .alt { 	background-color: #f4f4f4; margin: 0em; width: 100% } .csharpcode .lnum { 	color: #606060 } --&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This question was also &lt;a href="http://social.msdn.microsoft.com/Forums/en/sqlintegrationservices/thread/27535ce7-c72c-4ea5-a27a-b34c12c73312" target="_blank"&gt;answered in the SSIS forum&lt;/a&gt; by SSIS developer Silviu Guea. Here's an excerpt, where &lt;strong&gt;&lt;em&gt;task&lt;/em&gt;&lt;/strong&gt; is again a &lt;strong&gt;ScriptTask&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;            VSTATaskScriptingEngine script = &lt;/pre&gt;
&lt;pre class="csharpcode"&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; VSTATaskScriptingEngine(task.ScriptStorage);
            &lt;span class="rem"&gt;// load existing script from it's storage and load it in the designer&lt;/span&gt;
            script.LoadScriptFromStorage();
            &lt;span class="rem"&gt;// re-save it triggering a rebuild&lt;/span&gt;
            script.SaveScriptProjectFile();
            &lt;span class="rem"&gt;// close the designer... don't forget this or you'll leak processes&lt;/span&gt;
            script.CloseIDE(&lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Recently a customer from Brazil asked me how to recompile. After some unkind thoughts about his familiarity with search, I Binged "ssis recompile script programmatically." In fact, I could not find a satisfactory answer, and I found the question unanswered in several places. (Hint: Search for "&lt;strong&gt;&lt;em&gt;pre&lt;/em&gt;&lt;/strong&gt;compile." What a difference 1 letter makes.)&lt;/p&gt;
&lt;h2&gt;2. A command-line app for recompiling all scripts in a package&lt;/h2&gt;
&lt;p&gt;I pestered my buddy Silviu to ask whether there was more to say on this subject. In return he sent me the attached C# command-line application to rebuild all the Script Tasks and Script Components in a package. You may be able to compile the code and use it "as is," or you may want to study it to learn the steps in the process.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dougbert.com/blog/file.axd?file=2011%2f11%2fupdatescripts.zip"&gt;updatescripts.zip (4.26 kb)&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;2.1 Launching the command-line app&lt;/h3&gt;
&lt;p&gt;Here is a sample command line:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;updatescripts.exe c:\work\mypackage.dtsx c:\temp\output.dtsx /tasks /components&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2.2 Rebuilding Script Tasks&lt;/h3&gt;
&lt;p&gt;Here are the lines of code from the app that rebuild each Script Task, where &lt;strong&gt;&lt;em&gt;task&lt;/em&gt;&lt;/strong&gt; is again a &lt;strong&gt;ScriptTask&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;            VSTATaskScriptingEngine dte = &lt;span class="kwrd"&gt;new&lt;/span&gt; VSTATaskScriptingEngine(task.ScriptStorage);
            dte.LoadScriptFromStorage();
            dte.SaveScriptProjectFile();
            dte.CloseIDE(&lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2.3 Rebuilding Script Components&lt;/h3&gt;
&lt;p&gt;Here are the lines of code from the app that rebuild each Script Component, where &lt;strong&gt;&lt;em&gt;comp&lt;/em&gt;&lt;/strong&gt; is a &lt;strong&gt;ScriptComponentHost&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;            comp.ShowIDE();
            comp.CloseIDE();&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;(There are some important lines of code that come before these simple steps, to determine whether the &lt;strong&gt;IDTSComponentMetaData100&lt;/strong&gt; is in fact a Script Component, to instantiate its &lt;strong&gt;CManagedComponentWrapper&lt;/strong&gt;, and then to retrieve the &lt;strong&gt;ScriptComponentHost&lt;/strong&gt; that is its &lt;strong&gt;InnerObject&lt;/strong&gt;.)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I hope you find this application and sample code useful.&lt;/p&gt;
&lt;p&gt;Let me know how I'm doing! &lt;strong&gt;Please comment on my blog&lt;/strong&gt;, or send email to &lt;a href="mailto:dougbert@dougbert.com"&gt;dougbert@dougbert.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For technical support, however, I recommend the &lt;a href="http://social.msdn.microsoft.com/Forums/en/sqlintegrationservices/threads" target="_blank"&gt;SSIS forum on MSDN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;-Doug&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dougbert.com/blog/file.axd?file=2011%2f11%2fupdatescripts.zip"&gt;updatescripts.zip (4.26 kb)&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/Recompile-VSTA-scripts-programmatically-in-SSIS.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/Recompile-VSTA-scripts-programmatically-in-SSIS.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=d30ab378-9224-48d7-bfb1-3eeb3b10eb93</guid>
      <pubDate>Wed, 16 Nov 2011 11:50:00 -1200</pubDate>
      <category>SQL Server Integration Services (SSIS)</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=d30ab378-9224-48d7-bfb1-3eeb3b10eb93</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=d30ab378-9224-48d7-bfb1-3eeb3b10eb93</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/Recompile-VSTA-scripts-programmatically-in-SSIS.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=d30ab378-9224-48d7-bfb1-3eeb3b10eb93</wfw:commentRss>
    </item>
    <item>
      <title>How near is NEAR in SQL Server 2012 Full-Text Search?</title>
      <description>&lt;!--  .csharpcode { 	background-color: #ffffff; font-family: consolas, "Courier New", courier, monospace; color: black; font-size: small } .csharpcode pre { 	background-color: #ffffff; font-family: consolas, "Courier New", courier, monospace; color: black; font-size: small } .csharpcode pre { 	margin: 0em } .csharpcode .rem { 	color: #008000 } .csharpcode .kwrd { 	color: #0000ff } .csharpcode .str { 	color: #006080 } .csharpcode .op { 	color: #0000c0 } .csharpcode .preproc { 	color: #cc6633 } .csharpcode .asp { 	background-color: #ffff00 } .csharpcode .html { 	color: #800000 } .csharpcode .attr { 	color: #ff0000 } .csharpcode .alt { 	background-color: #f4f4f4; margin: 0em; width: 100% } .csharpcode .lnum { 	color: #606060 }  --&gt;
&lt;p&gt;SQL Server 2012 &amp;ldquo;Denali&amp;rdquo; Full-Text Search introduces a new custom proximity operator, which we&amp;rsquo;ve been calling &amp;ldquo;customizable NEAR.&amp;rdquo; The new NEAR operator lets you query with 2 optional requirements that you could not previously specify:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The maximum gap between the search terms. &lt;/li&gt;
&lt;li&gt;The order of the search terms. (For example, &amp;ldquo;John&amp;rdquo; must appear before &amp;ldquo;Smith.&amp;rdquo;) &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here is a partial example of the new NEAR operator:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;CONTAINSTABLE&lt;/span&gt; (Documents, Content, &lt;span class="str"&gt;'NEAR((John, Smith), 4, TRUE)'&lt;/span&gt;)&lt;/pre&gt;
&lt;p&gt;I think you will understand the simple syntax at first glance. I intend to write a blog post soon about customizable NEAR in general. But today, let&amp;rsquo;s focus on a question that has gained importance since we exposed the optional &lt;strong&gt;max_gap &lt;/strong&gt;argument, which is the 2nd argument in the preceding example: &lt;strong&gt;How near is NEAR?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;1. The generic NEAR operator (pre-SQL Server 2012)&lt;/h2&gt;
&lt;h3&gt;1.a. How the generic NEAR operator determines proximity&lt;/h3&gt;
&lt;p&gt;The logic of the generic NEAR operator is simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When used with CONTAINSTABLE, it considers nearness significant and returns a Rank &amp;gt; 0 if the 2 words are within 50 words of each other. (Oracle&amp;rsquo;s generic proximity operator used a boundary of 100 words.) CONTAINSTABLE returns a match with a Rank = 0 if the 2 words are found, but are more than 50 words apart. &lt;/li&gt;
&lt;li&gt;When used with CONTAINS, NEAR effectively becomes an AND query, and returns a match if the 2 words are found in the same row or document. &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.b. The generic NEAR operator is deprecated in SQL Server 2012&lt;/h3&gt;
&lt;p&gt;The custom proximity operator is a new operator, and not an extension of the existing NEAR operator. The generic NEAR operator is deprecated in SQL Server 2012. It still works in SQL Server 2012, but should not be used in new development.&lt;/p&gt;
&lt;h2&gt;2. The SQL Server 2012 customizable NEAR operator&lt;/h2&gt;
&lt;p&gt;The custom proximity operator now lets you specify &amp;ldquo;how near&amp;rdquo; you want search terms to be with an optional &lt;strong&gt;max_gap&lt;/strong&gt; argument. In this example, you want to find documents where &amp;ldquo;dog&amp;rdquo; and &amp;ldquo;cat&amp;rdquo; appear within 4 words of each other, and where "dog" appears before "cat":&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="str"&gt;'NEAR((dog, cat), 4, TRUE)'&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2.1 Simple definition of the gap&lt;/h3&gt;
&lt;p&gt;In a matching fragment that begins and ends with one of the search terms, the gap is the number of non-search-terms between them.&lt;/p&gt;
&lt;p&gt;Stopwords or noise words &lt;span style="text-decoration: underline;"&gt;are&lt;/span&gt; included in the count.&lt;/p&gt;
&lt;h3&gt;2.2 BUT the distance between search terms is logical and not absolute&lt;/h3&gt;
&lt;p&gt;For example, terms within different sentences within a paragraph are treated as farther apart than terms in the same sentence, regardless of their actual proximity, because we assume that they are less closely related. Terms in different paragraphs are treated as being even farther apart.&lt;/p&gt;
&lt;p&gt;If a match spans the end of a sentence, paragraph, or chapter, the actual gap is increased by 8, 128, or 1024, respectively. So in this example&amp;hellip; &amp;ldquo;&lt;em&gt;I see the cat. The dog also sees her.&lt;/em&gt;&amp;rdquo; &amp;hellip;the gap between &amp;ldquo;cat&amp;rdquo; and &amp;ldquo;dog&amp;rdquo; is 1 + 8 = 9, because of the sentence break.&lt;/p&gt;
&lt;p&gt;What if your documents aren&amp;rsquo;t text documents, but are Word documents or Excel spreadsheets or PowerPoint presentations? Then interpreting things such as table breaks, different worksheets, or bullet points on a slide is the responsibility of the IFilter for each document type. It is up to the IFilter to map each construct in the document format to either a word, sentence, paragraph or chapter.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not possible to constrain your search to terms that appear &lt;em&gt;in the same sentence&lt;/em&gt; or &lt;em&gt;in the same paragraph&lt;/em&gt;. However we believe that the new custom proximity operator is simple and powerful enough to satisfy the majority of our customers&amp;rsquo; needs in relation to proximity searches.&lt;/p&gt;
&lt;h3&gt;2.3 Where can I see the calculated gap between terms?&lt;/h3&gt;
&lt;p&gt;You can use the dynamic management view, &lt;a href="http://msdn.microsoft.com/en-us/library/cc280463(v=SQL.110).aspx" target="_blank"&gt;sys.dm_fts_parser&lt;/a&gt;, to see how the gap between terms is calculated. Here's an example that uses the sample sentence from the preceding section:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; occurrence, &lt;span class="kwrd"&gt;LEFT&lt;/span&gt;(display_term, 16), special_term 
    &lt;span class="kwrd"&gt;FROM&lt;/span&gt; sys.dm_fts_parser(&lt;span class="str"&gt;'"I see the cat. The dog also sees her."'&lt;/span&gt;, 1033, 0, 0)&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;Here are the results, which confirm the gap of 9 (14 &amp;ndash; 4 &amp;ndash; 1) between "cat" and "dog":&lt;/p&gt;
&lt;pre class="csharpcode"&gt;occurrence                   special_term
---------&lt;span class="rem"&gt;-- ---------------- ----------------&lt;/span&gt;
1           i                Noise Word
2           see              Noise Word
3           the              Noise Word
4           cat              Exact &lt;span class="kwrd"&gt;Match&lt;/span&gt;
12          &lt;span class="kwrd"&gt;END&lt;/span&gt; &lt;span class="kwrd"&gt;OF&lt;/span&gt; &lt;span class="kwrd"&gt;FILE&lt;/span&gt;      &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Of&lt;/span&gt; Sentence
13          the              Noise Word
14          dog              Exact &lt;span class="kwrd"&gt;Match&lt;/span&gt;
15          also             Noise Word
16          sees             Exact &lt;span class="kwrd"&gt;Match&lt;/span&gt;
17          her              Noise Word
25          &lt;span class="kwrd"&gt;END&lt;/span&gt; &lt;span class="kwrd"&gt;OF&lt;/span&gt; &lt;span class="kwrd"&gt;FILE&lt;/span&gt;      &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Of&lt;/span&gt; Sentence

(11 &lt;span class="kwrd"&gt;row&lt;/span&gt;(s) affected)&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2.4 Specifying a value for the max_gap argument&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;max_gap&lt;/strong&gt; argument is optional. If you specify a value, it can be any numeric value allowed by a 4-byte integer. (Frankly, a gap of 2,147,483,647 would seem to suggest that 2 terms are not closely related!)&lt;/p&gt;
&lt;p&gt;Naturally, queries only return documents or rows that satisfy the &lt;strong&gt;max_gap&lt;/strong&gt; requirement. (With the generic NEAR operator, on the other hand, CONTAINSTABLE previously returned rows where the gap exceeded its boundary of 50, but assigned a Rank of 0 (zero) to those rows.)&lt;/p&gt;
&lt;p&gt;A matching gap is &amp;lt;= &lt;strong&gt;max_gap&lt;/strong&gt;. It&amp;rsquo;s not possible to require a specific gap, neither less nor more, between search terms.&lt;/p&gt;
&lt;p&gt;If you want to specify a value for the optional 3rd &lt;strong&gt;order&lt;/strong&gt; argument, then you also have to specify a value for &lt;strong&gt;max_gap&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;2.5 Omitting max_gap or specifying MAX&lt;/h3&gt;
&lt;p&gt;Instead of specifying an integer value, you can also specify the keyword MAX, or omit &lt;strong&gt;max_gap&lt;/strong&gt;. MAX is the default value. When MAX is specified, then queries return any documents or rows that contain the search terms, regardless of the gap between them. However matches where the gap is &amp;gt; 100 have a rank of 0 (zero).&lt;/p&gt;
&lt;h3&gt;2.6 Two simple examples to summarize the behavior of max_gap&lt;/h3&gt;
&lt;pre class="csharpcode"&gt;NEAR((dog, cat), 6)&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The query only returns rows that contain both dog and cat, with 6 terms or fewer between them. &lt;/li&gt;
&lt;li&gt;Rows are ranked by proximity, and no returned row can have Rank = 0. &lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="csharpcode"&gt;NEAR((dog, cat))&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This is equivalent to using the MAX default - NEAR((dog, cat), MAX). &lt;/li&gt;
&lt;li&gt;The query returns all rows that contain both dog and cat. &lt;/li&gt;
&lt;li&gt;Rows have a Rank = 0 if the gap between terms is &amp;gt; 100. &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.7 An example with multiple matches&lt;/h3&gt;
&lt;p&gt;Query: &lt;span style="font-family: Courier New;"&gt;&lt;strong&gt;NEAR((A, B), 10)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Data: &lt;span style="font-family: Courier New;"&gt;&lt;strong&gt;AB&amp;hellip;&lt;/strong&gt;&lt;em&gt;(10 terms)&lt;/em&gt;&lt;strong&gt;&amp;hellip;AB&amp;hellip;&lt;/strong&gt;&lt;em&gt;(10 terms)&lt;/em&gt;&lt;strong&gt;&amp;hellip;AB&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Matches: 5&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The 1st AB pair. &lt;/li&gt;
&lt;li&gt;The first B&amp;hellip;A. &lt;/li&gt;
&lt;li&gt;The 2nd AB pair. &lt;/li&gt;
&lt;li&gt;The 2nd B&amp;hellip;A. &lt;/li&gt;
&lt;li&gt;The 3rd AB pair. &lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;2.8 An example with multiple search terms&lt;/h3&gt;
&lt;p&gt;Query: &lt;span style="font-family: Courier New;"&gt;&lt;strong&gt;NEAR((wine, cheese, &amp;ldquo;nearby stores&amp;rdquo;), 5)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Data: &lt;span style="font-family: Courier New;"&gt;&lt;strong&gt;This &lt;span style="text-decoration: underline;"&gt;wine&lt;/span&gt; and &lt;span style="text-decoration: underline;"&gt;cheese&lt;/span&gt; can be found in &lt;span style="text-decoration: underline;"&gt;nearby stores&lt;/span&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Matches? Yes. The count of non-search terms (&amp;ldquo;and,&amp;rdquo; &amp;ldquo;can be found in&amp;rdquo;) is &amp;lt;= the max_gap of 5.&lt;/p&gt;
&lt;p&gt;Data: &lt;span style="font-family: Courier New;"&gt;&lt;strong&gt;This &lt;span style="text-decoration: underline;"&gt;wine&lt;/span&gt; and &lt;span style="text-decoration: underline;"&gt;cheese&lt;/span&gt; can sometimes be found in &lt;span style="text-decoration: underline;"&gt;nearby stores&lt;/span&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Matches? No. The count of non-search terms (&amp;ldquo;and,&amp;rdquo; &amp;ldquo;can sometimes be found in&amp;rdquo;) is &amp;gt; the max_gap of 5.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Thank you to the members of the SQL Server Full-Text Search development team for patiently answering my questions as I prepared this blog post!&lt;/p&gt;
&lt;p&gt;Follow the &lt;a href="http://blogs.msdn.com/b/sqlfts/" target="_blank"&gt;Full-Text Search team blog&lt;/a&gt; if also you&amp;rsquo;re interested in occasional updates about full-text search.&lt;/p&gt;
&lt;p&gt;-Doug&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/How-near-is-NEAR-in-SQL-Server-2012-Full-Text-Search.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/How-near-is-NEAR-in-SQL-Server-2012-Full-Text-Search.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=e081ce83-4293-49c4-b38f-d503c690ce03</guid>
      <pubDate>Wed, 02 Nov 2011 04:43:00 -1200</pubDate>
      <category>Search in SQL Server</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=e081ce83-4293-49c4-b38f-d503c690ce03</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=e081ce83-4293-49c4-b38f-d503c690ce03</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/How-near-is-NEAR-in-SQL-Server-2012-Full-Text-Search.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=e081ce83-4293-49c4-b38f-d503c690ce03</wfw:commentRss>
    </item>
    <item>
      <title>More sample queries for Semantic Search in SQL Server 2012</title>
      <description>&lt;p&gt;Earlier today I published a blog post about &lt;a href="http://blogs.msdn.com/b/sqlfts/archive/2011/10/31/looping-over-document-similarity-details-in-semantic-search.aspx" target="_blank"&gt;Looping over document similarity details in Semantic Search&lt;/a&gt; on the MSDN blog of the SQL Server Full-Text Search team. That post introduces the 3 built-in rowset functions that are provided by Semantic Search in SQL Server 2012 &amp;ldquo;Denali.&amp;rdquo; It also describes how to do something for which we don&amp;rsquo;t provide a built-in set-based function &amp;ndash; that is, iterate over the documents that are similar to a source document, and ask why each document is similar. Please take a look!&lt;/p&gt;
&lt;p&gt;I had fun playing with semantic search and testing my code. Here are a few more examples of the queries that you can perform with semantic search. Don't laugh at my SQL code! I haven't written much T-SQL while working mostly with SSIS for several years.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The examples in this post use the &lt;strong&gt;semanticsimilaritydetails_foreach&lt;/strong&gt; function created in the blog post linked above.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The examples in this post also use a collection of SQL Server white papers published on MSDN and TechNet &amp;ndash; mostly in Microsoft Word format &amp;ndash; saved into a SQL Server database by using a SQL Server 2012 &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff929144(v=SQL.110).aspx" target="_blank"&gt;&lt;em&gt;FileTable&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. With this approach, I can easily save BLOBs into the database simply by dragging and dropping the files in Windows Explorer. The database table is named &lt;strong&gt;WhitePapers&lt;/strong&gt;, and it has the &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg492084(v=SQL.110).aspx" target="_blank"&gt;&lt;em&gt;fixed schema common to all FileTables&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;1. How many white papers are about ETL?&lt;/h2&gt;
&lt;p&gt;Query:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;COUNT&lt;/span&gt;(*) &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'Number of ETL White Papers'&lt;/span&gt;
    &lt;span class="kwrd"&gt;FROM&lt;/span&gt; semantickeyphrasetable (WhitePapers, *) &lt;span class="kwrd"&gt;AS&lt;/span&gt; SKP
    &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; SKP.keyphrase = &lt;span class="str"&gt;'etl'&lt;/span&gt;
GO&lt;/pre&gt;
&lt;!-- .csharpcode { 	background-color: #ffffff; font-family: consolas, "Courier New", courier, monospace; color: black; font-size: small } .csharpcode pre { 	background-color: #ffffff; font-family: consolas, "Courier New", courier, monospace; color: black; font-size: small } .csharpcode pre { 	margin: 0em } .csharpcode .rem { 	color: #008000 } .csharpcode .kwrd { 	color: #0000ff } .csharpcode .str { 	color: #006080 } .csharpcode .op { 	color: #0000c0 } .csharpcode .preproc { 	color: #cc6633 } .csharpcode .asp { 	background-color: #ffff00 } .csharpcode .html { 	color: #800000 } .csharpcode .attr { 	color: #ff0000 } .csharpcode .alt { 	background-color: #f4f4f4; margin: 0em; width: 100% } .csharpcode .lnum { 	color: #606060 } --&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Results:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;Number &lt;span class="kwrd"&gt;of&lt;/span&gt; ETL White Papers
------------------------&lt;span class="rem"&gt;--&lt;/span&gt;
30

(1 &lt;span class="kwrd"&gt;row&lt;/span&gt;(s) affected)&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;These results tell me that my table contains 30 documents in which &amp;ldquo;etl&amp;rdquo; was identified as a statistically significant key phrase. (In version 1 of semantic search, only one-word terms are supported.)&lt;/p&gt;
&lt;h2&gt;2. What are the top matching white papers that are also about ETL?&lt;/h2&gt;
&lt;p&gt;Query:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @Title NVARCHAR(255)
&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @DocumentID hierarchyid

&lt;span class="rem"&gt;-- Source white paper - "We Loaded 1TB in 30 Minutes with SSIS, and So Can You."&lt;/span&gt;
&lt;span class="kwrd"&gt;SET&lt;/span&gt; @Title = &lt;span class="str"&gt;'1TBin30MwithSSIS.docx'&lt;/span&gt;

&lt;span class="rem"&gt;-- Get the ID of the source document from its title.&lt;/span&gt;
&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @DocumentID = path_locator
    &lt;span class="kwrd"&gt;FROM&lt;/span&gt; WhitePapers
    &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; name = @Title

&lt;span class="rem"&gt;-- Get the top n key phrases for each matching document.&lt;/span&gt;
&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @DetailsCount &lt;span class="kwrd"&gt;smallint&lt;/span&gt; = 3

&lt;span class="rem"&gt;-- Get the top n matching white papers that are also about ETL.&lt;/span&gt;
&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;TOP&lt;/span&gt; (10) &lt;span class="kwrd"&gt;LEFT&lt;/span&gt;(WP.name, 32) &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'Document'&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;                &lt;span class="kwrd"&gt;LEFT&lt;/span&gt;(SSD.keyphrase, 16) &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'Key Phrase'&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;                SSD.score &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'Score'&lt;/span&gt;
    &lt;span class="kwrd"&gt;FROM&lt;/span&gt; WhitePapers &lt;span class="kwrd"&gt;AS&lt;/span&gt; WP
            &lt;span class="kwrd"&gt;CROSS&lt;/span&gt; APPLY&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;                semanticsimilaritydetails_foreach(@DocumentID, WP.path_locator, @DetailsCount)&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;            &lt;span class="kwrd"&gt;AS&lt;/span&gt; SSD
    &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; WP.path_locator &amp;lt;&amp;gt; @DocumentID
        &lt;span class="kwrd"&gt;AND&lt;/span&gt; SSD.keyphrase = &lt;span class="str"&gt;'etl'&lt;/span&gt;
    &lt;span class="kwrd"&gt;ORDER&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; Score &lt;span class="kwrd"&gt;DESC&lt;/span&gt;
&lt;span class="kwrd"&gt;GO&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Results:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;Document                         &lt;span class="kwrd"&gt;Key&lt;/span&gt; Phrase       Score
------------------------------&lt;span class="rem"&gt;-- ---------------- -------------&lt;/span&gt;
HighVolETLConsid.docx            etl              0.6152592
Implementing a Microsoft PDW usi etl              0.4083139
HubSpokeOverview.docx            etl              0.3958832
DataSrcISPkgs.docx               etl              0.3768547
SSIS_die_zweite.docx             etl              0.3722264
HubSpokeImpl.docx                etl              0.3580182
BestPractDWSQL2008.docx          etl              0.3551803
ScaleUpDWinSQL2008.docx          etl              0.3497615
OracleSSIS.docx                  etl              0.3446308
SSIS2008Connectivity.docx        etl              0.3446308

(10 &lt;span class="kwrd"&gt;row&lt;/span&gt;(s) affected)&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;These results show me the top 10 white papers that are similar to the source document, where &amp;ldquo;etl&amp;rdquo; is among the top 3 key phrases that were used to identify the white paper as similar to the source document.&lt;/p&gt;
&lt;p&gt;(Note that the semantic indexing also captured a German-language article about ETL.&lt;/p&gt;
&lt;h2&gt;3. What are the similarities between my source document and other documents?&lt;/h2&gt;
&lt;p&gt;Query:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @Title NVARCHAR(255)
&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @DocumentID hierarchyid

&lt;span class="rem"&gt;-- Source white paper - "We Loaded 1TB in 30 Minutes with SSIS, and So Can You."&lt;/span&gt;
&lt;span class="kwrd"&gt;SET&lt;/span&gt; @Title = &lt;span class="str"&gt;'1TBin30MwithSSIS.docx'&lt;/span&gt;

&lt;span class="rem"&gt;-- Get the ID of the source document from its title.&lt;/span&gt;
&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; @DocumentID = path_locator
    &lt;span class="kwrd"&gt;FROM&lt;/span&gt; WhitePapers
    &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; name = @Title

&lt;span class="rem"&gt;-- Get the top n key phrases for each matching document.&lt;/span&gt;
&lt;span class="kwrd"&gt;DECLARE&lt;/span&gt; @DetailsCount &lt;span class="kwrd"&gt;smallint&lt;/span&gt; = 3

&lt;span class="rem"&gt;-- Get the top n key phrases in matching white papers.&lt;/span&gt;
&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;TOP&lt;/span&gt; (10) &lt;span class="kwrd"&gt;LEFT&lt;/span&gt;(SSD.keyphrase, 16) &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'Key Phrase'&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;                &lt;span class="kwrd"&gt;COUNT&lt;/span&gt;(SSD.keyphrase) &lt;span class="kwrd"&gt;AS&lt;/span&gt; &lt;span class="str"&gt;'Count'&lt;/span&gt;
    &lt;span class="kwrd"&gt;FROM&lt;/span&gt; WhitePapers &lt;span class="kwrd"&gt;AS&lt;/span&gt; WP
            &lt;span class="kwrd"&gt;CROSS&lt;/span&gt; APPLY&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;                semanticsimilaritydetails_foreach(@DocumentID, WP.path_locator, @DetailsCount)&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;            &lt;span class="kwrd"&gt;AS&lt;/span&gt; SSD
    &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; WP.path_locator &amp;lt;&amp;gt; @DocumentID
    &lt;span class="kwrd"&gt;GROUP&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; SSD.keyphrase
    &lt;span class="kwrd"&gt;ORDER&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; &lt;span class="kwrd"&gt;COUNT&lt;/span&gt; &lt;span class="kwrd"&gt;DESC&lt;/span&gt;
GO&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Results:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Key&lt;/span&gt; Phrase       &lt;span class="kwrd"&gt;Count&lt;/span&gt;
--------------&lt;span class="rem"&gt;-- -----------&lt;/span&gt;
&lt;span class="kwrd"&gt;sql&lt;/span&gt;              149
server           111
sqlserver        30
cpu              24
etl              23
msdn             21
aspx             15
&lt;span class="kwrd"&gt;data&lt;/span&gt;             11
microsoft        10
tcp              10

(10 &lt;span class="kwrd"&gt;row&lt;/span&gt;(s) affected)&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;These results show me the top 10 key phrases that were used to identify other white papers as similar to the source document, where those key phrases are among the top 3 shared key phrases.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Have fun with Semantic Search! For more information see the &lt;a href="http://msdn.microsoft.com/en-us/library/gg492075(v=SQL.110).aspx" target="_blank"&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Be sure to check out the &lt;a href="http://blogs.msdn.com/b/rdoherty/archive/2011/10/27/looking-for-a-killer-sql-server-2012-demo.aspx"&gt;killer demo of FileTable and Semantic Search&lt;/a&gt; from SQL Server evangelist Roger Doherty and his team. This example includes a tag cloud to visualize the relative importance of key phrases and to find similar documents at a glance.&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/More-sample-queries-for-Semantic-Search-in-SQL-Server-2012.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/More-sample-queries-for-Semantic-Search-in-SQL-Server-2012.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=7011d125-9d1e-423e-aec5-b6abd709408f</guid>
      <pubDate>Mon, 31 Oct 2011 09:33:00 -1200</pubDate>
      <category>Search in SQL Server</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=7011d125-9d1e-423e-aec5-b6abd709408f</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=7011d125-9d1e-423e-aec5-b6abd709408f</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/More-sample-queries-for-Semantic-Search-in-SQL-Server-2012.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=7011d125-9d1e-423e-aec5-b6abd709408f</wfw:commentRss>
    </item>
    <item>
      <title>Custom ADO.NET providers make interesting data available to SSIS</title>
      <description>&lt;p&gt;The ADO.NET providers coming out of &lt;a href="http://www.rssbus.com/ado/" target="_blank"&gt;RSSBus&lt;/a&gt; make some  interesting data sources available to SQL Server Integration Services packages  through the ADO.NET Connection Manager and Source adapter. The documentation for  each of these is available online and includes screen shots. Free trial  downloads are also available.&lt;/p&gt;
&lt;p&gt;Imagine how you could creatively transform, if not your fortune, at least  your QuickBooks data, or filter a large volume of SMTP email, or report on the  output of your PowerShell scripts.&lt;/p&gt;
&lt;p&gt;The following ADO.NET providers are in production and for sale:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QuickBooks&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PowerShell&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Google Services.&lt;/li&gt;
&lt;li&gt;Salesforce.com.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following providers are in beta as of this writing (10/4/2011), but available for trial download:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SharePoint.&lt;/li&gt;
&lt;li&gt;Twitter.&lt;/li&gt;
&lt;li&gt;Email (POP and SMTP).&lt;/li&gt;
&lt;li&gt;Facebook.&lt;/li&gt;
&lt;li&gt;Google Spreadsheets.&lt;/li&gt;
&lt;li&gt;Amazon SimpleDB.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plus, since these are standard ADO.NET providers, you can hook them up  through Server Explorer in Visual Studio to explore. Here's an example of what  the QuickBooks provider exposes:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dougbert.com/blog/image.axd?picture=2011%2f10%2frssbus_quickbooks.png" alt="QuickBooks provider in Server Explorer" /&gt;&lt;/p&gt;
&lt;p&gt;At the bottom of &lt;a href="http://www.rssbus.com/ado/" target="_blank"&gt;the page&lt;/a&gt;, you can also vote on which provider you'd like to see next from RSSBus. Options include Microsoft Dynamics CRM, and eBay, SAP, Siebel, and Peachtree.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;strong&gt;Eric Madariaga&lt;/strong&gt; of RSSBus (&lt;a href="http://twitter.com/#!/emadari" target="_blank"&gt;@emadari  on Twitter&lt;/a&gt;) for bringing these providers to my attention.&lt;/p&gt;
&lt;p&gt;-Doug&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/Custom-ADONET-providers-make-interesting-data-available-to-SSIS.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/Custom-ADONET-providers-make-interesting-data-available-to-SSIS.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=313331a8-1e86-4527-8a3e-bfb31d141c44</guid>
      <pubDate>Tue, 04 Oct 2011 10:42:00 -1200</pubDate>
      <category>SQL Server Integration Services (SSIS)</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=313331a8-1e86-4527-8a3e-bfb31d141c44</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=313331a8-1e86-4527-8a3e-bfb31d141c44</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/Custom-ADONET-providers-make-interesting-data-available-to-SSIS.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=313331a8-1e86-4527-8a3e-bfb31d141c44</wfw:commentRss>
    </item>
    <item>
      <title>Books Online slims down at last on the Denali diet</title>
      <description>&lt;p&gt;SQL Server Books Online is flabby and bloated. The structure and style are inconsistent.  You can't find what you want. &lt;em&gt;I know&lt;/em&gt;. I use BOL too when I'm writing T-SQL or learning an  unfamiliar feature.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We're fixing that&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We're fixing that, at least in SQL Server "Denali." We're reducing  BOL itself - that is, the "product documentation" - to the minimum that  you need to use the product successfully. This core documentation will now include  just 2 things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;An introduction to each significant feature and its prerequisites.&lt;/li&gt;
&lt;li&gt;How To information that lets you use the product successfully, with only the  	minimum of required conceptual information.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;How bad is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Take a look at this horrifying example from the Bad Old Days. This is the existing table  of contents for SQL Server Full-Text Search. It's a jumble of concepts, how to's,  and "grouping" topics that don't even contain any useful content. (Please scroll  patiently - this post continues below.)&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;img src="http://dougbert.com/blog/image.axd?picture=2011%2f4%2ffts_toc.png" alt="" /&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How are we going to make that better?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the future, we just give you the how-to information that you need to use the feature  successfully, along with a feature overview. Here's an example. These are  the new topics for Statistical Semantic Search  in SQL Server "Denali." Contrast this with what you saw above.&lt;/p&gt;
&lt;table style="width: 600px; border-style: solid; border-width: 1px;"&gt;
&lt;thead&gt; 
&lt;tr&gt;
&lt;th style="border-style: solid; border-width: 1px;"&gt;What you get&lt;/th&gt; &lt;th style="border-style: solid; border-width: 1px;"&gt;Why it's better&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt; 
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-style: solid; border-width: 1px;"&gt;
&lt;p&gt;&lt;img src="http://dougbert.com/blog/image.axd?picture=2011%2f4%2fsemantic_toc.png" alt="" /&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-style: solid; border-width: 1px;" valign="top"&gt;
&lt;p&gt;Distinct topic types, and only a few of them&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;overview&lt;/li&gt;
&lt;li&gt;tasks&lt;/li&gt;
&lt;li&gt;reference&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Related tasks grouped together in comprehensive topics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install and configure&lt;/li&gt;
&lt;li&gt;Query or use&lt;/li&gt;
&lt;li&gt;Manage and monitor&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What's inside?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here's what one of those consolidated How To topics looks like inside.&lt;/p&gt;
&lt;table style="width: 600px; border-style: solid; border-width: 1px;"&gt;
&lt;thead&gt; 
&lt;tr&gt;
&lt;th style="border-style: solid; border-width: 1px;"&gt;What you get&lt;/th&gt; &lt;th style="border-style: solid; border-width: 1px;"&gt;Why it's better&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt; 
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="border-style: solid; border-width: 1px;"&gt;
&lt;p&gt;&lt;img src="http://dougbert.com/blog/image.axd?picture=2011%2f4%2fsemantic_topic.png" alt="" /&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-style: solid; border-width: 1px;" valign="top"&gt;
&lt;p&gt;Related tasks and required concepts all in one topic.&lt;/p&gt;
&lt;p&gt;Tasks first, background information second if you need it.&lt;/p&gt;
&lt;p&gt;Concise task descriptions! (And you're right, I still need to add a  		line of sample code there.)&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When will we see these improvements in SQL Server Books Online?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In CTP3 for SQL Server "Denali" later this year.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is a big deal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We're finally going to start writing a &lt;strong&gt;&lt;em&gt;lightweight manual of customer tasks and solutions&lt;/em&gt;&lt;/strong&gt;,  and stop writing a verbose catalog of Microsoft product features. We hope you'll  like it.&lt;/p&gt;
&lt;p&gt;-Doug&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/Books-Online-slims-down-at-last-on-the-Denali-diet.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/Books-Online-slims-down-at-last-on-the-Denali-diet.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=5768134e-e161-489e-be6b-9472c9027c8f</guid>
      <pubDate>Mon, 18 Apr 2011 10:29:00 -1200</pubDate>
      <category>Documentation for SQL Server</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=5768134e-e161-489e-be6b-9472c9027c8f</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=5768134e-e161-489e-be6b-9472c9027c8f</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/Books-Online-slims-down-at-last-on-the-Denali-diet.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=5768134e-e161-489e-be6b-9472c9027c8f</wfw:commentRss>
    </item>
    <item>
      <title>Welcome to my Dougbert blog at its new address</title>
      <description>&lt;p&gt;The address of my Dougbert blog has changed slightly. Please re-subscribe to  my blog feed at this new address:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Feed address: 	&lt;a href="http://feeds.feedburner.com/DougbertsBlog" target="_blank"&gt;http://feeds.feedburner.com/DougbertsBlog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Web address: &lt;a href="http://dougbert.com/blog/" target="_blank"&gt;http://dougbert.com/blog/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;I plan to continue blogging about SSIS and other SQL Server features.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I will  not be posting any more on the old blog (&lt;a href="http://dougbert.com/blogs/dougbert/" target="_blank"&gt;http://dougbert.com/blogs/dougbert/&lt;/a&gt;).  I intend to leave the past posts there. If you've saved or shared links to my  past blog posts, they should remain valid.&lt;/p&gt;
&lt;p&gt;Why the change?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I now work on SQL Server technologies other than SSIS on the documentation team at Microsoft. So this blog will expand beyond just SSIS.&lt;/li&gt;
&lt;li&gt;My old blog used the free version of Community Server software. This has  	been discontinued and is now about 3 years old. I wanted to switch &lt;span style="text-decoration: underline;"&gt;before&lt;/span&gt; the  	software died and took my blog down with it. I'm now up and running on BlogEngine.Net  	2.0.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thank you for continuing to follow me.&lt;/p&gt;
&lt;p&gt;-Doug&lt;/p&gt;</description>
      <link>http://dougbert.com/blog/post/Welcome-to-my-Dougbert-blog-at-its-new-address.aspx</link>
      <author>dougbert@dougbert.com</author>
      <comments>http://dougbert.com/blog/post/Welcome-to-my-Dougbert-blog-at-its-new-address.aspx#comment</comments>
      <guid>http://dougbert.com/blog/post.aspx?id=41456b96-17d2-4db0-83b5-7a2b0f9e7608</guid>
      <pubDate>Mon, 18 Apr 2011 10:24:00 -1200</pubDate>
      <category>Blog news</category>
      <dc:publisher>Dougbert</dc:publisher>
      <pingback:server>http://dougbert.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://dougbert.com/blog/post.aspx?id=41456b96-17d2-4db0-83b5-7a2b0f9e7608</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://dougbert.com/blog/trackback.axd?id=41456b96-17d2-4db0-83b5-7a2b0f9e7608</trackback:ping>
      <wfw:comment>http://dougbert.com/blog/post/Welcome-to-my-Dougbert-blog-at-its-new-address.aspx#comment</wfw:comment>
      <wfw:commentRss>http://dougbert.com/blog/syndication.axd?post=41456b96-17d2-4db0-83b5-7a2b0f9e7608</wfw:commentRss>
    </item>
  </channel>
</rss>

