You are hereFeed aggregator

Feed aggregator


The SQL Server Health Check

Bucky Woody - Thu, 02/11/2010 - 08:16

My friend Brent Ozar, who is a top-notch SQL Server Professional, mentioned on his blog (http://www.brentozar.com/archive/2007/04/sql-server-health-check/comment-page-1/#comment-17520) that he brought in Microsoft Support to do a “Health Check”. There were some questions about what this actually entails – so I thought I would post that description here.

A SQL Server Health Check from Microsoft is an offering provided through our support and consulting branches. If you’ve purchased a Premier support agreement, you can use the hours you pay for to have someone come out and check out your systems using two basic vectors: standard best practices, and the best practices for your environment. Let me explain that a little further.

Microsoft Consulting Services (MCS) has an advanced set of tools and techniques to reach deep into your systems to evaluate them against a set of criteria that we establish for the best performance, safety and reliability for SQL Server. But your SQL Server Instances will be different than someone else’s, so the consultant will also spend some time in an interview with various teams to find out how you’re using the system. They’ll consult with experts in that area back at Redmond, and at the end of the engagement you get what I feel is the most valuable part of the exercise – the report. The report shows what was done, how it was done, what the findings are and what recommendations the consultant makes. It’s a thing of beauty.

You don’t have to have a Premier agreement to get a SQL Server Health Check, and companies other than Microsoft have versions of this as well. The prices vary, so if you want a Microsoft person then contact your local Microsoft office and ask for the Consulting Manager for your area. They will get you to the right person and you can work out the costs from there. If you take a hard look, most of the time the cost is well justified.

On a related note, I think it’s fantastic that Brent has the foresight to bring in “another pair of eyes” on his systems. Brent is actually in the program to gain a SQL Server “Master” certification – something only a few people in the world have. He works for a software development firm that creates fantastic products for – wait for it – SQL Server! He could evaluate his own systems, and of course he does. But he realizes that there’s always something more to learn, and someone out there may know one more little detail that he doesn’t. This is the mark of a very bright person.

Categories: SQL Server MS Blogs

*NEW* SharePoint 2007 Books available on Amazon!

SharePoint IT Pro Documentation - Wed, 02/10/2010 - 18:12

Do you ever wish you could order up SharePoint content in a professionally bound format?  Well now you can!   Our downloadable books for SharePoint IT are now also available on Amazon.com. Find them, along with other great books about Office, in the Office IT Pro Bookstore (http://go.microsoft.com/fwlink/?LinkId=179990).  Now you can easily leaf through deployment processes and technical reference materials when you’re away from your connection to TechNet.    If you would be interested in this option for the SharePoint 2010 content, let us know. We're continuously evaluating different content delivery options to give you the format that you want.   Best regards,   Susan Potter   SharePoint Content Publishing   

Categories: SharePoint

Start a SQL Server Agent Job using the SQL Server PowerShell Provider

Bucky Woody - Wed, 02/10/2010 - 07:13

Whew!  That’s a mouthfull. Anyway, I thought I would share part of a script I wrote today to help automate (more) from PowerShell. This assumes a few things: that you’re doing this from the SQL Server 2008 PowerShell provider (not just good old regular PowerShell) and that you change the HAL9000 and SQL2K8 parts with your server name and your Instance name. Oh, and the Jobs I start are called “Test” and then something else. That’s the Test* part. You can use a specific name and drop the * or use your own naming convention.

Script Disclaimer, for people who need to be told this sort of thing:

Never trust any script, including those that you find here, until you understand exactly what it does and how it will act on your systems. Always check the script on a test system or Virtual Machine, not a production system. All scripts on this site are performed by a professional stunt driver on a closed course. Your mileage may vary. Void where prohibited. Offer good for a limited time only. Keep out of reach of small children. Do not operate heavy machinery while using this script. If you experience blurry vision, indigestion or diarrhea during the operation of this script, see a physician immediately.

 

# Start a Job named Test in the SQL Server 2008 PowrShell Provider

DIR SQLSERVER:\SQL\HAL9000\SQL2K8\JobServer\Jobs\Test* | % {$_.Start()}

Categories: SQL Server MS Blogs

Help for SQL Server

Bucky Woody - Tue, 02/09/2010 - 08:29

Sometimes issues pop up with your system. You need a way to find help, quickly. Here’s a few links that might be useful – feel free to post a reply to this post with other sources you might know, from web sources to your favorite consultant.

Note – this list is not exhaustive, and I’m happy to add or edit it if you post a reply. I know a lot of SQL Server professionals, and I don’t want to leave out anyone or commit them to something!

Web Help – Use these links to do a little research on your own

Main Troubleshooting Page:

http://technet.microsoft.com/en-us/sqlserver/bb895929.aspx

The main Microsoft page for learning resources is here:

http://www.microsoft.com/sqlserver/2008/en/us/learning.aspx

There are lots and lots of great community sites. Here are just a few:

http://www.sqlcommunity.com/
http://www.mvps.org/links.html#SqlServer
http://www.sqlpass.org/
http://www.mssqltips.com/

http://sqlservercentral.com

http://www.sswug.org

serverfault.com (mind your manners in here and you’ll get some help!)

http://serverfault.com/

Post a feature request or a bug here:

https://connect.microsoft.com/site/sitehome.aspx/?siteid=68&wa=wsignin1.0 

Phone Help – Use these Links to get someone to talk with

The main launching page for Microsoft Support is here – they can do most anything over the phone:

http://www.microsoft.com/microsoftservices/en/us/support.aspx

On-site Help – Use these links to get someone at your facility

Microsoft consulting services can either help you with a deep problem or help you

http://www.microsoft.com/microsoftservices/en/us/consulting.aspx

Many of the “Most Valuable Professionals” (MVP) for SQL Server either work at support and consulting firms or know people who do. They are a great resource:

http://www.mvps.org/links.html#SqlServer

Microsoft Partners (Use SQL Server as a search term and use the filter tool for services and your location):

http://www.microsoft.com/sqlserver/2008/en/us/find-partner.aspx

I use the web search of “SQL Server” and “Consulting” to locate other folks. You can add the name of your town (like “Seattle”) to narrow the range:

http://www.bing.com/search?q=SQL+Server+consulting&form=OSDSRC

Categories: SQL Server MS Blogs

Efficiently Reuse Gaps in an Identity Column

SQLTeam.com - Mon, 02/08/2010 - 17:00

This article will demonstrate an efficient way to reuse gaps in an identity column. Please note that this is something you normally shouldn't be bothered about in a well-designed database or application. However, there are circumstances where you are forced to do this.

Categories: SQL Server Expert Blogs

Make it Easy for People to Help You

Bucky Woody - Mon, 02/08/2010 - 08:17

OK, there are probably a dozen or more of these kinds of posts, but I’ll dive in anyway. From time to time, people send me e-mails or comments on this blog asking for help. Sometimes it’s on the topic at hand, and other times the topic just jogs their memory about something else.

Often I’m happy to help. If I know the answer without doing any research (or even if I have to do a little) I’ll interrupt what I’m doing and dash out a note with the answer. But of course I have a job (three, to be exact) and so any time I help with a question I’m lengthening my day, spending less time with my family, and so on. If you think about it, everyone that you ask (and everyone I ask) is in the same boat – when someone helps me, I am taking their most valuable asset: their time. So I learned a very important lesson very early on: Make it easy for people to help you.

So here’s the steps to follow to do that – it really isn’t that hard:

  1. Request, don’t demand. I got an e-mail yesterday (on Sunday) where someone found a blog entry about one topic, and basically said this about another topic: “Tell me where I can find ‘x’ so that I can alter it.” Guess what I did? That’s right, I hit the delete key. If you are asking a question from a professional, you need to understand that they normally get paid – very well, sometimes – for their time. Make sure your question is a question, not a demand.
  2. Be clear about the problem. Vague statements don’t help – and very few people have the time to dig the real question out of you. Be specific. Ask the single question you really need help with.
  3. Keep the problem limited. “Rewrite my code for me” isn’t going to happen. “help me with this line” might. “Where do I go to find out more about the SELECT statement” is even better. If your problem takes more than a few minutes for someone to answer, then you should probably get someone on-site to help you.
  4. Explain what you’ve already done. This, of course, means you’ve already actually done something. What have you looked up, what do you already understand, where have you looked, what have you tried?
  5. Be polite. Please and Thank You are magic words, whether you get the answer you were looking for or not.

I’ll add one thing when you’re responding to a blog – not just mine, anyone’s. If you want to ask a question, ask it as a reply to a post, not an e-mail. The author wants to answer the question once, and it’s almost a guarantee that you’re not the only one with that question. Also, other readers might know the exact answer and help you even more. I know, you have to register, all that stuff. Just consider it the price of getting your answer.

Categories: SQL Server MS Blogs

Quote of the Day: On What Really Makes Something True

Bucky Woody - Fri, 02/05/2010 - 08:02

“Whether you believe you can or you believe you can't, you're probably right.” - Henry Ford

Categories: SQL Server MS Blogs

Killing a SQL Server thread? Don’t!

Linchi Shea - Thu, 02/04/2010 - 13:09

Sometimes, when you kill a session (i.e. a spid) in a SQL Server instance, the spid just refuses to go away not because it’s doing a rollback. Perhaps, it’s stuck on a certain dependency on something external to SQL Server or it’s just simply stuck for...(read more)

Categories: SQL Server Expert Blogs

Multi-Monitor Support in SQl Server Management Studio 2008

Bucky Woody - Thu, 02/04/2010 - 08:33

Did you notice that there are a lot of "little" things that were improved in SQL Server 2008? One of those was done by one of my favorite developers and deals with multi-monitor support. In previous versions of SQL Server Management Studio you could open the tool in multi-monitor and arrange the panes onto mulitple monitors. But when you disconnected the second monitory (as is often done with a laptop) you would "lose" the panes that were moved - SSMS just wasn't aware of those multiple monitors. Vlad spent a lot of time making that not true.SSMS is much better about being aware of the other monitors.

Sure, there's more to do in this area. We'll keep improving that feature, but I wanted you to know that sometimes little things take a lot of work - and aren't always noticed.

 Thanks, Vlad!

Categories: SQL Server MS Blogs

Finding Stuff in SQL Server Database DDL

Simple-Talk on SQL - Thu, 02/04/2010 - 01:00

You'd have thought that nothing would be easier than using SQL Server Management Studio (SSMS) for searching through the DDL for both the names and definitions of the structural metadata of your databases, for the occurrence of a particular string of letters. Not so easy, it turns out, though Phil Factor is able to come up with various methods for various purposes.

Categories: SQL Server Expert Blogs

Mission Critical: SQL Server 2008 Performance Tuning Task List

Simple-Talk on SQL - Thu, 02/04/2010 - 01:00

In which Buck Woody imagines how the US military would have tackled DBA checklists for 'mission-critical' databases. And having imagined it, lo, it came to be. The CTL for the DBA with short-back-and-sides.

Categories: SQL Server Expert Blogs

Simple Query tuning with STATISTICS IO and Execution plans

Simple-Talk on SQL - Thu, 02/04/2010 - 01:00

A great deal can be gleaned from the use of the STATISTICS IO and the execution plan, when you are checking that a query is performing properly. Josef Richberg, the current holder of the 'Exceptional DBA' award, explains how an apparently draconian IT policy turns out to be a useful ways of ensuring that Stored Procedures are carefully checked for performance before they are released

Categories: SQL Server Expert Blogs

Switching rows and columns in SQL

Simple-Talk on SQL - Thu, 02/04/2010 - 01:00

When they use SQL Server, one the commoner questions that Ms Access programmers ask is 'Where's the TRANSFORM/PIVOT command? So how do you swap colums and rows in an aggregate table? Do you really need to use a CLR routine for this?

Categories: SQL Server Expert Blogs

Writing Efficient SQL: Set-Based Speed Phreakery

Simple-Talk on SQL - Thu, 02/04/2010 - 01:00

Phil Factor's SQL Speed Phreak challenge is an event where coders battle to produce the fastest code to solve a common reporting problem on large data sets. It isn't that easy on the spectators, since the programmers don't score extra points for commenting their code. Mercifully, Kathi is on hand to explain some of the TSQL coding secrets that go to producing blistering performance.

Categories: SQL Server Expert Blogs

Performance improvement by orders of magnitude when merging partitions in SQL Server 2008R2

SQL Server Storage Engine - Wed, 02/03/2010 - 16:38

I am publishing this Blog on behalf of Hermann Daeubler, our SAP expert

Scenario:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Let’s assume we have a table consisting of five partitions and the one in the middle needs to  be dropped. In SQL Server we need the following steps to accomplish this task

a)      Create a non-partitioned target table with the same structure and indexes as the partitioned table

b)       Use the switch command to move the data from the middle partition to the new target table. Now the original partition is empty but still visible and the old boundary value isn’t removed

c)       Complete the task by altering the partition function by merging the empty partition

Problem:
The partition switch command is a metadata-only operation and is frequently used by customers
to add (assuming staging table has already been populated) or remove partition data almost instantaneously. This is a significant improvement over non-partitioned tables where these operations can take time proportional to the size of the data.

However, there are issues with partition merging where depending on the hardware and the size
of the partitions, the step “c)” can still take much longer than expected especially when merging partitions in the middle of a table.

For details on partitions, please refer to
http://msdn.microsoft.com/en-us/library/dd578580.aspx
http://msdn.microsoft.com/en-us/library/ms190787.aspx

 

Why partition merge is slow?

It is a common scenario to put partitions on different file groups. The decision was made to make the
partition function merge a deterministic function. This means that there is a fixed rule which defines
on which file group the merged partition will end up. As a result the merge will be always in the same
direction corresponding to the type (right or left). This approach has the downside that there is no
optimization related to the size of the partitions. In a scenario where the source partition has 10 million rows and the destination partition has only 1 million rows, SQL Server would therefore move
the 10 million rows of the source partition rather than moving the 1 million rows from the destination partition. The same would happen if the destination partition is completely empty as in
the sample above where one would like to drop a partition.


There is a workaround for this when the partitions to be merged are mapped to the same filegroup. In the example above where the intention is to drop a partition it is clear that the destination partition is always empty.  The workaround is to

·         Switch both partitions out – the source as well as the destination partition

·         Merge the partition function

·         Switch back in the source partition.

But this workaround has a side-effect. It temporarily removes data from the table and an application using this approach has to provide a proper cleanup or rollback in case something goes wrong

Solution with the changes in SQL Server 2008R2:

CU6 for SQL Server 2008 SP1 includes a fix for this potential issue if all partitions reside on the same
file group. It checks which partition has less rows and moves the data from this one during a partition
function merge. This also covers the special case where one partition is empty.
In case the performance of dropping partitions in the middle of a table is essential for an application
it’s necessary to place all partitions on one single file group to take advantage of the fix in CU6.

Results :

The screenshots below and the SQL Script further down use a simple example to show how the
workaround basically could be implemented. It also shows the difference after installing CU6 for
SQL Server 2008 SP1.

Figure 1 above shows that a test table was created with five partitions and five million rows in each
               partition.

Figure 2 above shows that the standard way to get rid of a partition took over 2 minutes on the test system.
               There were obviously millions of logical reads involved due to the move of the data during
               the partition function merge

Figure 3 above shows that afterwards boundary value 3 is missing as expected and four partitions are left

 

Figure 4 above shows the result of the workaround. Due to the additional switch more tables are involved.
               But overall we see just a few logical reads and the whole process is done within a second
               compared to over 2 minutes before

Figure 5 above shows the output of the standard method after installing CU6 for SQL Server 2008 SP1.
                There is only one switch necessary and it finishes like the workaround before in a second.

 

To run the SQL Script below, you need to follow the following steps in this sequence

·         First create the four procedures

·         Run the procedures one after the other as seen at the end

·          Create the test table as it’s necessary to specify how many rows should be generated.   It’s a  
 very basic algorithm which simply doubles the number of records 10 times.  A parameter of
 value 25000 results in 25 million rows – five million rows per partition.

 

-- Procedure to create a partitioned test table

CREATE PROCEDURE create_partition_function_merge_test_tables ( @nr_rows INT )
AS
BEGIN

    DECLARE @counter int

    SET NOCOUNT ON

    IF EXISTS( select * from sys.objects
    WHERE name ='partition_function_merge_test_table' and type = 'U' )
        DROP TABLE partition_function_merge_test_table

    IF EXISTS( select * from sys.partition_schemes
    WHERE name = 'PARTITION_FUNCTION_MERGE_TEST_SCHEME' )   
        DROP PARTITION SCHEME [PARTITION_FUNCTION_MERGE_TEST_SCHEME]      

    IF EXISTS( select * from sys.partition_functions
    WHERE name = 'PARTITION_FUNCTION_MERGE_TEST_FUNCTION' )   
        DROP PARTITION FUNCTION [PARTITION_FUNCTION_MERGE_TEST_FUNCTION]

 

    CREATE PARTITION FUNCTION [PARTITION_FUNCTION_MERGE_TEST_FUNCTION] ( int )
    AS
    RANGE RIGHT FOR VALUES ( 1,2,3,4,5 )   

    CREATE PARTITION SCHEME [PARTITION_FUNCTION_MERGE_TEST_SCHEME]
    AS PARTITION [PARTITION_FUNCTION_MERGE_TEST_FUNCTION]
    ALL TO ( [PRIMARY] )

   
    CREATE TABLE partition_function_merge_test_table
    (
        key_partkey  int NOT NULL,
        key_col1     int,
        key_col2     int,
        data_col1    char(15),
        data_col2    char(15),

      data_col3    char(15)
     ) ON [PARTITION_FUNCTION_MERGE_TEST_SCHEME] ( key_partkey )

     CREATE CLUSTERED INDEX PFM_IDX1 on partition_function_merge_test_table ( key_partkey )

      SET @counter = @nr_rows

     WHILE ( @counter > 0 )
     BEGIN

         INSERT INTO partition_function_merge_test_table VALUES
         ( @counter%5,@counter,@counter,
         'Testdata Col1','Testdata Col2','Testdata Col3' )

         SET @counter = @counter – 1
     END

 

     SET @counter = 10

     WHILE ( @counter > 0 )

     BEGIN

         INSERT INTO partition_function_merge_test_table
         SELECT * from partition_function_merge_test_table

         SET @counter = @counter – 1
     END

 

     CREATE INDEX PFM_IDX2 on partition_function_merge_test_table ( key_col1 )
     CREATE INDEX PFM_IDX3 on partition_function_merge_test_table ( key_col2 )
     CHECKPOINT

END
GO       

 -- Procedure to drop the partition in the middle via switch and merge command

 CREATE PROCEDURE drop_partition_3_slow
AS
BEGIN

    IF ( OBJECT_ID('temp_partition') IS NOT NULL )
    BEGIN
        DROP TABLE temp_partition;
    END

 

    CREATE TABLE temp_partition
    (   key_partkey  int NOT NULL,
        key_col1     int,
        key_col2     int,
        data_col1    char(15),
        data_col2    char(15),
        data_col3    char(15)
    )

 

    CREATE CLUSTERED INDEX PFM_IDX1 on temp_partition ( key_partkey )
    CREATE INDEX PFM_IDX2 on temp_partition ( key_col1 )
    CREATE INDEX PFM_IDX3 on temp_partition ( key_col2 )

    SET STATISTICS IO ON

    ALTER TABLE partition_function_merge_test_table switch PARTITION 3 TO temp_partition
    ALTER PARTITION FUNCTION PARTITION_FUNCTION_MERGE_TEST_FUNCTION ()
    MERGE RANGE (3)

    SET STATISTICS IO OFF

END
GO

 

 -- Procedure to drop the partition in the middle via switch and merge command.
-- This time it will also switch out the "neighbor" before the merge and switch
-- it back in after the merge. This will avoid an unnecessary copy of the rows
-- in the neighbor partition

CREATE PROCEDURE drop_partition_3_fast
AS
BEGIN

    IF ( OBJECT_ID('temp_partition') IS NOT NULL )
    BEGIN
        DROP TABLE temp_partition;
    END

    IF ( OBJECT_ID('temp_partition2') IS NOT NULL )
    BEGIN
        DROP TABLE temp_partition2;
    END

 

    CREATE TABLE temp_partition
    (   key_partkey  int NOT NULL,
        key_col1     int,
        key_col2     int,
        data_col1    char(15),
        data_col2    char(15),
        data_col3    char(15)
    )

    CREATE CLUSTERED INDEX PFM_IDX1 on temp_partition ( key_partkey )
    CREATE INDEX PFM_IDX2 on temp_partition ( key_col1 )
    CREATE INDEX PFM_IDX3 on temp_partition ( key_col2 )

 

    CREATE TABLE temp_partition2
    (   key_partkey  int NOT NULL,
        key_col1     int,
        key_col2     int,
        data_col1    char(15),
        data_col2    char(15),
        data_col3    char(15)
    )

    CREATE CLUSTERED INDEX PFM_IDX1 on temp_partition2 ( key_partkey )
    CREATE INDEX PFM_IDX2 on temp_partition2 ( key_col1 )
    CREATE INDEX PFM_IDX3 on temp_partition2 ( key_col2 )

    SET STATISTICS IO ON

    ALTER TABLE partition_function_merge_test_table switch PARTITION 3 TO temp_partition
    ALTER TABLE partition_function_merge_test_table switch PARTITION 4 TO temp_partition2

    ALTER PARTITION FUNCTION PARTITION_FUNCTION_MERGE_TEST_FUNCTION ()
   MERGE RANGE (3)

    ALTER TABLE temp_partition2 ADD CONSTRAINT partCheck_constr CHECK ( key_partkey = 3 )
    ALTER TABLE temp_partition2 switch TO partition_function_merge_test_table PARTITION 3

    SET STATISTICS IO OFF

END
GO

 -- Procedure to list the partitions of the test table

CREATE PROCEDURE list_partitions
AS
BEGIN

 

    DECLARE @nr_partitions int
    DECLARE @counter int
    DECLARE @partrows int
    DECLARE @boundary_value char(10)

     SET @nr_partitions = ( SELECT COUNT(*) FROM sys.partition_range_values prv,
         sys.partition_functions pf  WHERE pf.function_id = prv.function_id  AND  
        pf.name = 'PARTITION_FUNCTION_MERGE_TEST_FUNCTION' )

    PRINT 'Partitions for table partition_function_merge_test_table :'

    PRINT ''

    PRINT 'nr | boundary value | # rows in partition'

    SET @counter = 1

    WHILE ( @counter <= @nr_partitions )
    BEGIN

        SET @boundary_value = CONVERT(CHAR(10),

        (SELECT value FROM sys.partition_range_values prv, sys.partition_functions pf

        WHERE pf.function_id = prv.function_id AND pf.name = 'PARTITION_FUNCTION_MERGE_TEST_FUNCTION' AND

        boundary_id = @counter ))

 

        SET @partrows=(SELECT p.rows FROM sys.partitions p, sys.objects o
        WHERE p.object_id = o.object_id AND o.name = 'partition_function_merge_test_table' AND
        p.partition_number = @counter AND index_id IN (0,1) )

        PRINT ' ' + rtrim(convert(char(5),@counter)) + ' |' +
              '              ' + rtrim(@boundary_value) + ' |' +
              '           ' + convert(char(20), @partrows)

        SET @counter = @counter + 1

    END
END
GO

 

 -- Repro to show the performance impact of different ways to drop a partition.
-- The procedure to drop the partition will turn "statistics io" on to prove
-- by the number of logical reads on the test table that in the first case
-- data will be moved whereas in the second case it won't.
-- This will change by installing CU6 for SQL Server 2008 SP1 which fixes this
-- behavior. While the runtime of the workaround was always the same the standard
-- approach to drop a partition in the middle of a table improved from over 2 minutes
-- to 1 second after installing CU6 for SQL Server 2008 SP1 – as shown on the
-- screenshots above. The difference is of course dependent on the hardware
-- configuration and might be even more or also less on other systems.

 

 execute create_partition_function_merge_test_tables 25000
execute list_partitions
execute drop_partition_3_slow
execute list_partitions

 execute create_partition_function_merge_test_tables 25000
execute list_partitions
execute drop_partition_3_fast
execute list_partitions

 

Categories: SQL Server MS Blogs

How Does Microsoft Do IT?

Bucky Woody - Wed, 02/03/2010 - 08:17

Microsoft is a big company – and of course we have a lot of IT infrastructure that we have to manage. It might surprise you to learn that we have an IT group, just like at your company. We have a networking team, a server hardware team, software teams, DBA’s, the whole bit. In fact, we have more Mac computers than just about anyone (other than that company down south from here) and we write some of the best-selling Apple software. We have a Linux lab.

How do we do that? How do you manage 80,000+ seats, especially when most of your company are a bunch of tech-savvy geeks? It’s a tough job, but the neat thing is that we tell you how we’re doing it – everything – right here: http://technet.microsoft.com/en-us/library/bb687780.aspx. If you want to focus in on just SQL Server, just check here: http://technet.microsoft.com/en-us/library/bb687798.aspx.

(By the way - I *totally* should be doing our marketing – isn’t that title catchy? My catch-phrases and product names would be a lot better than what we normally come up with. I’m just sayin’.)

Categories: SQL Server MS Blogs

Full Text Indexing Terabytes of Files with SQL Server and Cloud Storage

MS SQL CAT Team - Tue, 02/02/2010 - 19:52

Author: Darko Sancanin, Nicholas Dritsas Reviewers and contributors: Lubor Kollar, Stuart Ozer, Michael Thomassy Business Case There are currently over 50 million files (over 10 Terabytes of data) that the customer is migrating into a custom project management...(read more)

Categories: SQL Server MS Blogs

Data Design

Bucky Woody - Tue, 02/02/2010 - 08:31

I give series of classes and presentations on Data Design. I say “data” design instead of “database” design because we should consider more than just the database. Data might actually be stored in non-relational stores, such as Excel or XML files, and it might also be located in remote data stores like “cloud” technologies. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

Here are the links I use in that presentation. Although this isn't a comprehensive list of Data Design topics, I’ll visit this topic from time to time so you may want to bookmark this page in your favorites:

 

Evidence and Comments:

http://tinyurl.com/ygvbadc

http://tinyurl.com/ydeh9ut

http://tinyurl.com/ycu9apq

http://tinyurl.com/ya7a9xc

http://tinyurl.com/ydlumyp

 

Importance:

Yes, it matters: http://tinyurl.com/yb5ucvn

Classic software development mistakes: http://tinyurl.com/y9x9vn8

Necessity of Good Design: http://tinyurl.com/yac3um3

Importance of Database Design Ranked high for BA/Dev interaction: http://tinyurl.com/yex4sjf

 

Structured Methods:

Test-Driven Development: http://tinyurl.com/maus78

From the BA’s Perspective: http://tinyurl.com/yea6pbe

Data-Map Examples: http://tinyurl.com/2d2nhr

Universal Patterns for Data Modelling: http://tinyurl.com/ybj7tb3

 

Tools:

EF Framework Design Example: http://tinyurl.com/yeuda49

Using EF and LINQ can cause divisions: http://tinyurl.com/yaljmhn

 

Categories: SQL Server MS Blogs

Implementing User-Defined Hierarchies in SQL Server Analysis Services

Simple-Talk on SQL - Tue, 02/02/2010 - 01:00

To be able to drill into multidimensional cube data at several levels, you must implement all of the hierarchies on the database dimensions. Then you'll create the attribute relationships necessary to optimize performance. Analysis Services hierarchies offer plenty of possibilities for displaying the data that your business requires. Rob Sheldon continues his seris on SQL Server Analysis Services 2008.

Categories: SQL Server Expert Blogs

SQL Search- The Search and the Sequel

Simple-Talk on SQL - Tue, 02/02/2010 - 01:00

It started out as an experiment to try to explore different ways of creating a software tool that people would want. It ended up as a tool that Red Gate is giving away to the SQL Server community in return for the contribution to the project of so many of Red Gate's friends within the community. But was it easy to do? Bob Cramblitt and Richard Collins went to find out by talking to Tanya Joseph, who managed the project that turned the concept into a product.

Categories: SQL Server Expert Blogs