SP Search IN All Tables


This stored Procedure to search in all tables

/****** Object:  StoredProcedure [dbo].[SearchAllTables]    ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create PROC [dbo].[SearchAllTables]
(
@SearchStr nvarchar(100)
)
AS
BEGIN

CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))

SET NOCOUNT ON

DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET  @TableName = ”
SET @SearchStr2 = QUOTENAME(‘%’ + @SearchStr + ‘%’,””)

WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ”
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + ‘.’ + QUOTENAME(TABLE_NAME))
FROM  INFORMATION_SCHEMA.TABLES
WHERE   TABLE_TYPE = ‘BASE TABLE’
AND QUOTENAME(TABLE_SCHEMA) + ‘.’ + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) + ‘.’ + QUOTENAME(TABLE_NAME)
), ‘IsMSShipped’
) = 0
)

WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM  INFORMATION_SCHEMA.COLUMNS
WHERE   TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN (‘char’, ‘varchar’, ‘nchar’, ‘nvarchar’)
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)

IF @ColumnName IS NOT NULL
BEGIN
INSERT INTO #Results
EXEC
(
‘SELECT ”’ + @TableName + ‘.’ + @ColumnName + ”’, LEFT(‘ + @ColumnName + ‘, 3630)
FROM ‘ + @TableName + ‘ (NOLOCK) ‘ +
‘ WHERE ‘ + @ColumnName + ‘ LIKE ‘ + @SearchStr2
)
END
END
END

SELECT ColumnName, ColumnValue FROM #Results
END

How to Generate Zero without using Any Numbers in T-SQL


How to Generate Zero without using Any Numbers in T-SQL

select count(*) where ‘a’=’b’
select count(*)-count(*)
select count(cast(null as int))
select Ascii(‘Y’)-Ascii(‘Y’)

Find Maximum between Two Numbers‏


Example 1

DECLARE @Value1 DECIMAL(5,2) = 9.22
DECLARE @Value2 DECIMAL(5,2) = 8.34
SELECT (0.5 * ((@Value1 + @Value2) + ABS(@Value1 – @Value2))) AS MaxColumn
Example 2

DECLARE @Value1 DECIMAL(5,2) = 9.22
DECLARE @Value2 DECIMAL(5,2) = 8.34
SELECT CASE WHEN @Value1 > @Value2 THEN @Value1 ELSE @Value2 END As MaxColumn

Example 3

DECLARE @Value1 DECIMAL(5,2) = 9.22
DECLARE @Value2 DECIMAL(5,2) = 8.34
DECLARE @VALUE3  DECIMAL(5,2)= 15
DECLARE @RESULT INT
SELECT @RESULT = (SELECT  CASE WHEN @Value1 > @Value2 THEN @Value1 ELSE @Value2 END AS MaxColumn)
SELECT CASE WHEN @VALUE3 > @RESULT THEN @VALUE3 ELSE @RESULT END AS MaxColumn

How to list disk drives with total and free space?


Execute the following Microsoft SQL
Server T-SQL script to create a table-valued function and a stored procedure to
list all drives with total disk space and free disk space. Note that the
table-valued function “join”-ed with a CROSS APPLY in the sproc to obtain the
final results.

*

— Turn on OLE automation if not on

exec sp_configure ‘show advanced options’, 1

go

RECONFIGURE

GO

exec sp_configure ‘Ole Automation Procedures’, 1

GO

RECONFIGURE

GO

*/

CREATE FUNCTION fnTotalDriveSpace

(@DriveLetter CHAR(1))

RETURNS @Total TABLE (MaxSpaceGB money)

BEGIN

DECLARE  @return INT, @fso INT, @GetDrive VARCHAR(16)

DECLARE @drv INT, @DriveSizeinBytes VARCHAR(32)

SET @GetDrive = ‘GetDrive(“‘ + @DriveLetter + ‘”)’

EXEC @return = sp_OACreate ‘Scripting.FileSystemObject’, @fso OUTPUT

SET @DriveSizeinBytes = NULL

IF @return = 0

EXEC @return = sp_OAMethod @fso, @GetDrive, @drv OUTPUT

IF @return = 0

EXEC @return = sp_OAGetProperty @drv,’TotalSize’, @DriveSizeinBytes OUTPUT

EXEC sp_OADestroy @drv

EXEC sp_OADestroy @fso

INSERT @Total values (

(((convert(bigint,@DriveSizeinBytes)/  1024)/ 1024)/1024) )

RETURN

END

GO

— select * from dbo.fnTotalDriveSpace(‘C’)

CREATE PROC sprocDriveSpaceInfo

AS

BEGIN

DECLARE @Drives TABLE ( DriveLetter char(1), FreeGB money)

INSERT @Drives (DriveLetter, FreeGB)

EXEC xp_fixeddrives

UPDATE @Drives SET FreeGB = Floor(FreeGB/1024)

SELECT

DriveLetter,

FreeGB=convert(int,FreeGB),

MaxSpaceGB=convert(int,MaxSpaceGB)

FROM @Drives d

CROSS APPLY dbo.fnTotalDriveSpace (d.DriveLetter)

ORDER BY DriveLetter

END

GO

EXEC sprocDriveSpaceInfo

GO

Use insert into select instead of cursor


In this article I will explain by code how can you make cursor to select data from table and insert it into another table but this to learning but if you want to insert data from Table to another Table I suggest to use Insert into select instead of Cursor

— Create Table and Populate with Sample Data
CREATE TABLE ServerTable (ServerID INT, ServerName VARCHAR(100))
INSERT INTO ServerTable (ServerID, ServerName)
SELECT 1, ‘First Server’
UNION ALL
SELECT 2, ‘Second Server’
UNION ALL
SELECT 3, ‘Third Server’
— Creating New Table
CREATE TABLE NewServerTable (ServerID INT, ServerName VARCHAR(100))
— Insert Logic
DECLARE @Flag INT
SELECT @Flag = COUNT(*) FROM ServerTable
WHILE(@Flag > 0)
BEGIN
INSERT INTO NewServerTable (ServerID, ServerName)
SELECT ServerID, ServerName
FROM ServerTable
WHERE ServerID = @Flag
SET @Flag = @Flag – 1
END
SELECT ServerID, ServerName
FROM NewServerTable
— Clean up
DROP TABLE ServerTable
DROP TABLE NewServerTable

Remarks

To see what happens when you run this script enter F11 to open Debug Query and enter F10 to see effect step by step