Popular Posts

Monday, November 28, 2011

Faster and More Effective Long-Term Retention of Data: Taking a Single-System Approach

Organizations around the world require more robust backup and archive-optimised storage sollutions as they look to improve the availability of applications and deal with an explosion in the creation and use of unstructured data. They need storage systems that are optimised for usability in backup and archival environments.

Read this whitepaper to learn about various solutions and how they address many challenges organizations are struggling with.

The Hardest Problems in Data Management. What Are They?

Modern hardware trends and economics, combined with cloud and virtualization technology are radically reshaping today's data management landscape, ushering in a new era where many machine, many core, memory-based computing topologies can be dynamically assembled from existing IT resources and pay-as-you-go clouds.

Arguably one of the hardest problems - and consequently most exciting opportunities - faced by today's solution designers is figuring out how to leverage this on-demand hardware to build an optimal data management platform.

Differences Explained: Private vs. Public vs. Hybrid Cloud Computing

This expert e-guide explains the key differences between private, public and hybrid clouds.

Find out which one best fits your organization's needs by weighing the risks and benefits of each cloud type.

Learn The Five Myths of Cloud Computing

This white paper separates fact from fiction, reality from myth, and, in doing so, will aide senior IT executives as they make decisions around cloud computing.

Some interesting stuff on InfoPath

http://blogs.msdn.com/b/infopath/



SQL Server: Query to find the tables being used in a stored procedure

The query below gets the list of tables that are being referenced in a stored procedure:




SELECT DISTINCT
                 o.id, o.name AS 'Procedure_Name' , oo.name AS 'Table_Name', d.depid
FROM sysdepends d, sysobjects o, sysobjects oo
WHERE   o.id=d.id 
                AND o.name= 'usp_your_sp_here'   -- Stored Procedure Name
                AND oo.id=d.depid 
                
ORDER BY o.name,oo.name

Thursday, November 10, 2011

Windows 7 calculator

There are some very powerful new features hidden in the background. Be sure to explore every option in all Windows applets to ensure you don't miss anything important



Windows 7 calculator

SQL Server Management Studio Keyboard Shortcuts

This link lists down all the SQL Server Management Studio Keyboard Shortcuts

SQL Server Management Studio Keyboard Shortcuts



MS SQL Server : Generate insert statements from values in a table

Create the stored procedure sp_generate_insert_script (You could you any other name you think you could remember easily. I prefer "zinsert") using the code given below.

now, "exec sp_generate_insert_script <table name>" will yeild the insert queries for the table you provide as a parameter to the stored procedure.

To create a shortcut goto Tools->Options->Environment->Keyboard

And place the stored procedure "sp_generate_insert_script" against a key combination you'd like to use.

--------------------------

CREATE  procedure [dbo].[zinsert]     
                 @tablename_mask nvarchar(max) = NULL         
as         
begin         
--------------------------------------------------------------------------------         
-- Stored Procedure:  sp_generate_insert_script         
-- Language:          Microsoft Transact SQL (7.0)         
-- Author:            Inez Boone (inez.boone@xs4al.nl)         
--                    working on the Sybase version of & thanks to:         
--                    Reinoud van Leeuwen (reinoud@xs4all.nl)         
-- Version:           1.4         
-- Date:              December 6th, 2000         
-- Description:       This stored procedure generates an SQL script to fill the         
--                    tables in the database with their current content.         
-- Parameters:        IN: @tablename_mask : mask for tablenames         
-- History:           1.0 October 3rd 1998 Reinoud van Leeuwen         
--                      first version for Sybase         
--                    1.1 October 7th 1998 Reinoud van Leeuwen         
--                      added limited support for text fields; the first 252          
--                      characters are selected.         
--                    1.2 October 13th 1998 Reinoud van Leeuwen         
--                      added support for user-defined datatypes         
--                    1.3 August 4 2000 Inez Boone         
--                      version for Microsoft SQL Server 7.0         
--                      use dynamic SQL, no intermediate script         
--                    1.4 December 12 2000 Inez Boone         
--                      handles quotes in strings, handles identity columns         
--                    1.5 December 21 2000 Inez Boone         
--                      Output sorted alphabetically to assist db compares,         
--                      skips timestamps         
--------------------------------------------------------------------------------         
          
-- NOTE: If, when executing in the Query Analyzer, the result is truncated, you can remedy         
--       this by choosing Query / Current Connection Options, choosing the Advanced tab and         
--       adjusting the value of 'Maximum characters per column'.         
--       Unchecking 'Print headers' will get rid of the line of dashes.         
          
  declare @tablename       nvarchar(max)          
  declare @tablename_max   nvarchar(max)         
  declare @tableid         int         
  declare @columncount     numeric (7,0)         
  declare @columncount_max numeric (7,0)         
  declare @columnname      varchar (1000)         
  declare @columntype      int         
  declare @string          nvarchar(max)         
  declare @leftpart        nvarchar(max)    /* 8000 is the longest string SQLSrv7 can EXECUTE */         
  declare @rightpart       nvarchar(max)    /* without having to resort to concatenation      */         
  declare @hasident        int         
          
  set nocount on          
    
  -- take ALL tables when no mask is given (!)         
  if (@tablename_mask is NULL)         
  begin         
    select @tablename_mask = '%'         
  end         
          
  -- create table columninfo now, because it will be used several times         
          
  create table #columninfo         
  (num      numeric (7,0) identity,         
   name     varchar(1000),         
   usertype smallint)         
          
          
  select name,         
         id         
    into #tablenames         
    from sysobjects         
   where type in ('U' ,'S')         
     and name like @tablename_mask         
          
  -- loop through the table #tablenames         
          
  select @tablename_max  = MAX (name),         
         @tablename      = MIN (name)         
    from #tablenames         
          
  while @tablename <= @tablename_max         
  begin         
    select @tableid   = id         
      from #tablenames         
     where name = @tablename         
      
    if (@@rowcount <> 0)         
    begin         
      -- Find out whether the table contains an identity column    
      select @hasident = max( status & 0x80 )         
        from syscolumns          
       where id = @tableid         
          
      truncate table #columninfo         
           
      insert into #columninfo (name,usertype)         
      select '[' + name + ']', type         
        from syscolumns C         
       where id = @tableid         
         and type <> 37      -- do not include timestamps         
          
      -- Fill @leftpart with the first part of the desired insert-statement, with the fieldnames         
          
      select @leftpart = 'select ''insert into ['+@tablename+']'   
      select @leftpart = @leftpart + '('         
          
      select @columncount     = MIN (num),         
             @columncount_max = MAX (num)         
        from #columninfo         
      while @columncount <= @columncount_max         
      begin         
        select @columnname = name,         
               @columntype = usertype         
          from #columninfo         
         where num = @columncount         
        if (@@rowcount <> 0)         
        begin         
          if (@columncount < @columncount_max)         
          begin         
            select @leftpart = @leftpart + @columnname + ','         
          end         
          else         
          begin         
            select @leftpart = @leftpart + @columnname + ')'         
          end         
        end         
          
        select @columncount = @columncount + 1         
      end         
          
      select @leftpart = @leftpart + ' values('''         
          
      -- Now fill @rightpart with the statement to retrieve the values of the fields, correctly formatted         
          
      select @columncount     = MIN (num),         
             @columncount_max = MAX (num)         
        from #columninfo         
          
      select @rightpart = ''         
          
      while @columncount <= @columncount_max         
      begin         
        select @columnname = name,          
               @columntype = usertype         
          from #columninfo         
         where num = @columncount         
          
        if (@@rowcount <> 0)         
        begin         
          
          if @columntype in (39,47) /* char fields need quotes (except when entering NULL);         
                                    *  use char(39) == ', easier readable than escaping         
                                    */         
          begin         
            select @rightpart = @rightpart + '+'         
            select @rightpart = @rightpart + 'ISNULL(' + replicate( char(39), 4 ) + '+replace(' + @columnname + ',' + replicate( char(39), 4 ) + ',' + replicate( char(39), 6) + ')+' + replicate( char(39), 4 ) + ',''NULL'')'         
          end         
          
          else if @columntype = 35 /* TEXT fields cannot be RTRIM-ed and need quotes     */         
                                   /* convert to VC 1000 to leave space for other fields */         
          begin         
            select @rightpart = @rightpart + '+'         
            select @rightpart = @rightpart + 'ISNULL(' + replicate( char(39), 4 ) + '+replace(convert(varchar(max),' + @columnname + ')' + ',' + replicate( char(39), 4 ) + ',' + replicate( char(39), 6 ) + ')+' + replicate( char(39), 4 ) + ',''NULL'')'  
  
  
   
     
          end         
          
          else if @columntype in (58,61,111) /* datetime fields */         
          begin          
            select @rightpart = @rightpart + '+'         
            select @rightpart = @rightpart + 'ISNULL(' + replicate( char(39), 4 ) + '+convert(varchar(max),' + @columnname + ')+'+ replicate( char(39), 4 ) + ',''NULL'')'         
          end          
    
          else   /* numeric types */         
          begin       
            select @rightpart = @rightpart + '+'         
            select @rightpart = @rightpart + 'ISNULL(convert(nvarchar(max),' + @columnname + '),''NULL'')'          
          end         
          
          
          if ( @columncount < @columncount_max)         
  begin         
      select @rightpart = @rightpart + '+'','''                end         
          
        end         
        select @columncount = @columncount + 1         
      end         
          
    end         
          
    select @rightpart = @rightpart + '+'')''' + ' from [' + @tablename +']'   
          
    -- Order the select-statements by the first column so you have the same order for         
    -- different database (easy for comparisons between databases with different creation orders)         
    select @rightpart = @rightpart + ' order by 1'         
          
    -- For tables which contain an identity column we turn identity_insert on         
    -- so we get exactly the same content         
          
    if @hasident > 0         
       select 'SET IDENTITY_INSERT ' + @tablename + ' ON'         
          
    exec ( @leftpart + @rightpart )         
          
    if @hasident > 0         
       select 'SET IDENTITY_INSERT ' + @tablename + ' OFF'         
          
    select @tablename      = MIN (name)         
      from #tablenames         
     where name            > @tablename       
print @tablename     
  end         
        
      
end     

--------------------------

Shortcut for "Select * from" in SSMS

Create the following stored procedure in your database:

----------------------

CREATE PROC sp_SelectFromTable @tbl VARCHAR (128)
AS
EXEC ('SELECT * FROM ' + @tbl )
GO

-----------------------

Now, goto Tools->Options->Environment->Keyboard
and place the spname "sp_SelectFromTable" against a shortcut key combination you'd like

I prefer Ctrl + 5.

Total Pageviews