master Database Definition

SERVER SETTINGS | DATABASE SETTINGS | USERS | TABLES | VIEWS | STORED PROCEDURES | FUNCTIONS

Table Of Contents  
Table   Row Count   Reserved   Row Data   Index Size   Table Data  
Server Options    
Database Options    
Database Users    
ALLFILENAMES  0  0  0  0  0  
BULKACT  0  0  0  0  0  
BULKDATA  14038  1480  1416  8  105.43  
CampaignRecipients  0  0  0  0  0  
CensusNames  94293  6984  6936  8  74.07  
dba_indexDefragExclusion  0  0  0  0  0  
dba_indexDefragLog  167  64  48  16  383.23  
dba_indexDefragStatus  167  56  40  16  335.33  
dist.all  88799  6800  6248  8  76.58  
dist.female  4275  336  312  8  78.60  
dist.male  1219  144  96  8  118.13  
Exams  32  16  8  8  500.00  
Logon_AppsList  0  0  0  0  0  
LOGONAUDIT  478  200  136  8  418.41  
MSreplication_options  3  16  8  8  5333.33  
MyHEAP  7  16  8  8  2285.71  
myImages  1  152  88  8  152000.00  
MySample  9  16  8  8  1777.78  
prototype  0  0  0  0  0  
RandomData  1300  200  160  16  153.85  
SchemaCheckerBetaRegistration  0  0  0  0  0  
spt_fallback_db  0  0  0  0  0  
spt_fallback_dev  0  0  0  0  0  
spt_fallback_usg  0  0  0  0  0  
spt_monitor  1  16  8  8  16000.00  
spt_values  2506  336  152  152  134.08  
STORMDAILYDATA  11144  1288  1224  8  115.58  
STORMHEADER  1446  136  104  16  94.05  
t1  0  24  8  16  0  
Table_3530  10185  4104  4080  8  402.95  
TableA  0  0  0  0  0  
Tally  11000  200  144  16  18.18  
TallyCalendar  77490  13136  6776  6296  169.52  
TBLEXAMPLE  10000  2120  2088  8  212.00  
test  0  0  0  0  0  
sp_DDLTrace    
sp_DMLTrace    
sp_FailMail    
sp_LogonTrace    
VW_Trace_1    
dba_indexDefrag_sp    
LoggingProc    
MakeMeADatabase    
PR_CAPTURESP_WHO    
sp_AddDMLMyTrace    
sp_AddMyDDLTrace    
sp_AddMyLogonTrace    
sp_CreateTableScript    
sp_dates    
sp_dbDocumentation    
sp_export_all_simple    
sp_find    
sp_help_revlogin    
sp_helpweb    
SP_HELPWEB2    
sp_hexadecimal    
sp_Kill    
sp_Kill2    
sp_lmgtfu    
sp_lmgtfy    
sp_RowCount    
sp_ScriptAnyTrace    
sp_ScriptRoles    
sp_show    
sp_sysfind    
sp_who3    
sp_who4    
sp_whoami    
sql2pdf    
SQLDecryptor    
TestAddExtendedProperties    
TestProc    


Server Settings  
Table  Row Count  
Server name  DEV223  
Instance  MSSQLSERVER  
Current Date Time  13 Jul 2012 16:05:39:543  
User  dbo  
Number of connections  55901  
Language  us_english  
Language Id  0  
Lock Timeout  -1  
Maximum of connections  32767  
CPU Busy  2  
CPU Idle  34340  
IO Busy  0  
Packets received  3327  
Packets sent  15109  
Packets w errors  1  
TimeTicks  31250  
IO Errors  0  
Total Read  17337  
Total Write  2342  

Back To Top ^

Database Settings  
Option   Setting  
name  master  
autoclose  False  
SELECT into/bulkcopy  False  
trunc. log on chkpt  True  
torn page detection  False  
loading  False  
pre recovery  False  
recovering  False  
Falset recovered  False  
offline  False  
read only  False  
dbo use only  False  
single user  False  
emergency mode  False  
autoshrink  False  
cleanly shutdown  False  
ANSI null default  False  
concat null yields null  False  
recursive triggers  False  
default to local cursor  False  
quoted identifier  False  
cursor close on commit  False  
ANSI nulls  False  
ANSI warnings  False  
full text enabled  False  
Data Path  C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf  
Last Backup    
Days Since Last Backup    

Back To Top ^

Users  
Login name   User name   Group name  
 public  public  
##MS_PolicyEventProcessingLogi  ##MS_PolicyEventProcessingLogi  public  
##MS_AgentSigningCertificate##  ##MS_AgentSigningCertificate##  public  
 RSExecRole  RSExecRole  
NT AUTHORITY\NETWORK SERVICE  NT AUTHORITY\NETWORK SERVICE  public  
EctApp  EctApp  public  
 AlmostOwners  AlmostOwners  
 db_owner  db_owner  
 db_accessadmin  db_accessadmin  
 db_securityadmin  db_securityadmin  
 db_ddladmin  db_ddladmin  
 db_backupoperator  db_backupoperator  
 db_datareader  db_datareader  
 db_datawriter  db_datawriter  
 db_denydatareader  db_denydatareader  
 db_denydatawriter  db_denydatawriter  

Back To Top ^

Tables


ALLFILENAMES  
Column   Type   Length   Precision   Scale   Collation   Comments  
WHICHPATH  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
WHICHFILE  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[ALLFILENAMES] ( 
[WHICHPATH]  VARCHAR(255)                         NULL,
[WHICHFILE]  VARCHAR(255)                         NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for ALLFILENAMES

Back To Top ^

BULKACT  
Column   Type   Length   Precision   Scale   Collation   Comments  
RAWDATA  varchar  8000  8000    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[BULKACT] ( 
[RAWDATA]  VARCHAR(8000)                        NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for BULKACT

Back To Top ^

BULKDATA  
Column   Type   Length   Precision   Scale   Collation   Comments  
RAWDATA  varchar  8000  8000    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[BULKDATA] ( 
[RAWDATA]  VARCHAR(8000)                        NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for BULKDATA

Back To Top ^

CampaignRecipients  
Column   Type   Length   Precision   Scale   Collation   Comments  
id  int  4  10  0      
Campaign  int  4  10  0      
RawContactID  int  4  10  0      
MailSentID  int  4  10  0      
MailSentDate  datetime  8  23  3      

CREATE TABLE [dbo].[CAMPAIGNRECIPIENTS] ( 
[ID]            INT              IDENTITY(1,1)   NOT NULL,
[CAMPAIGN]      INT                                  NULL,
[RAWCONTACTID]  INT                                  NULL,
[MAILSENTID]    INT                                  NULL,
[MAILSENTDATE]  DATETIME                             NULL,
CONSTRAINT   [PK__Campaign__3213E83F36670980]       PRIMARY KEY CLUSTERED    (id))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for CampaignRecipients

Back To Top ^

CensusNames  
Column   Type   Length   Precision   Scale   Collation   Comments  
TheSource  varchar  30  30    SQL_Latin1_General_CP1_CI_AS    
TheName  varchar  100  100    SQL_Latin1_General_CP1_CI_AS    
FrequencyInPercent  decimal  9  19  4      
CumulativeFrequencyInPercent  decimal  9  19  4      
RankInFile  int  4  10  0      

CREATE TABLE [dbo].[CENSUSNAMES] ( 
[THESOURCE]                     VARCHAR(30)                          NULL,
[THENAME]                       VARCHAR(100)                         NULL,
[FREQUENCYINPERCENT]            DECIMAL(19,4)                        NULL,
[CUMULATIVEFREQUENCYINPERCENT]  DECIMAL(19,4)                        NULL,
[RANKINFILE]                    INT                                  NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for CensusNames

Back To Top ^

dba_indexDefragExclusion  
Column   Type   Length   Precision   Scale   Collation   Comments  
databaseID  int  4  10  0      
databaseName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
objectID  int  4  10  0      
objectName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
indexID  int  4  10  0      
indexName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
exclusionMask  int  4  10  0      

CREATE TABLE [dbo].[DBA_INDEXDEFRAGEXCLUSION] ( 
[DATABASEID]     INT                              NOT NULL,
[DATABASENAME]   NVARCHAR(128)                    NOT NULL,
[OBJECTID]       INT                              NOT NULL,
[OBJECTNAME]     NVARCHAR(128)                    NOT NULL,
[INDEXID]        INT                              NOT NULL,
[INDEXNAME]      NVARCHAR(128)                    NOT NULL,
[EXCLUSIONMASK]  INT                              NOT NULL,
CONSTRAINT   [PK_indexDefragExclusion_v40]          PRIMARY KEY CLUSTERED    (databaseID, objectID, indexID))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for dba_indexDefragExclusion

Back To Top ^

dba_indexDefragLog  
Column   Type   Length   Precision   Scale   Collation   Comments  
indexDefrag_id  int  4  10  0      
databaseID  int  4  10  0      
databaseName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
objectID  int  4  10  0      
objectName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
indexID  int  4  10  0      
indexName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
partitionNumber  smallint  2  5  0      
fragmentation  float  8  53        
page_count  int  4  10  0      
dateTimeStart  datetime  8  23  3      
dateTimeEnd  datetime  8  23  3      
durationSeconds  int  4  10  0      
sqlStatement  varchar  4000  4000    SQL_Latin1_General_CP1_CI_AS    
errorMessage  varchar  1000  1000    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[DBA_INDEXDEFRAGLOG] ( 
[INDEXDEFRAG_ID]   INT              IDENTITY(1,1)   NOT NULL,
[DATABASEID]       INT                              NOT NULL,
[DATABASENAME]     NVARCHAR(128)                    NOT NULL,
[OBJECTID]         INT                              NOT NULL,
[OBJECTNAME]       NVARCHAR(128)                    NOT NULL,
[INDEXID]          INT                              NOT NULL,
[INDEXNAME]        NVARCHAR(128)                    NOT NULL,
[PARTITIONNUMBER]  SMALLINT                         NOT NULL,
[FRAGMENTATION]    FLOAT                            NOT NULL,
[PAGE_COUNT]       INT                              NOT NULL,
[DATETIMESTART]    DATETIME                         NOT NULL,
[DATETIMEEND]      DATETIME                             NULL,
[DURATIONSECONDS]  INT                                  NULL,
[SQLSTATEMENT]     VARCHAR(4000)                        NULL,
[ERRORMESSAGE]     VARCHAR(1000)                        NULL,
CONSTRAINT   [PK_indexDefragLog_v40]                PRIMARY KEY CLUSTERED    (indexDefrag_id))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for dba_indexDefragLog

Back To Top ^

dba_indexDefragStatus  
Column   Type   Length   Precision   Scale   Collation   Comments  
databaseID  int  4  10  0      
databaseName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
objectID  int  4  10  0      
indexID  int  4  10  0      
partitionNumber  smallint  2  5  0      
fragmentation  float  8  53        
page_count  int  4  10  0      
range_scan_count  bigint  8  19  0      
schemaName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
objectName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
indexName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
scanDate  datetime  8  23  3      
defragDate  datetime  8  23  3      
printStatus  bit  1  1        
exclusionMask  int  4  10  0      

CREATE TABLE [dbo].[DBA_INDEXDEFRAGSTATUS] ( 
[DATABASEID]        INT                              NOT NULL,
[DATABASENAME]      NVARCHAR(128)                    NOT NULL,
[OBJECTID]          INT                              NOT NULL,
[INDEXID]           INT                              NOT NULL,
[PARTITIONNUMBER]   SMALLINT                         NOT NULL,
[FRAGMENTATION]     FLOAT                            NOT NULL,
[PAGE_COUNT]        INT                              NOT NULL,
[RANGE_SCAN_COUNT]  BIGINT                           NOT NULL,
[SCHEMANAME]        NVARCHAR(128)                        NULL,
[OBJECTNAME]        NVARCHAR(128)                        NULL,
[INDEXNAME]         NVARCHAR(128)                        NULL,
[SCANDATE]          DATETIME                         NOT NULL,
[DEFRAGDATE]        DATETIME                             NULL,
[PRINTSTATUS]       BIT                              NOT NULL DEFAULT ((0)),
[EXCLUSIONMASK]     INT                              NOT NULL DEFAULT ((0)),
CONSTRAINT   [PK_indexDefragStatus_v40]             PRIMARY KEY CLUSTERED    (databaseID, objectID, indexID, partitionNumber))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for dba_indexDefragStatus

Back To Top ^

dist.all  
Column   Type   Length   Precision   Scale   Collation   Comments  
Column 0  varchar  14  14    SQL_Latin1_General_CP1_CI_AS    
Column 1  varchar  6  6    SQL_Latin1_General_CP1_CI_AS    
Column 2  varchar  7  7    SQL_Latin1_General_CP1_CI_AS    
Column 3  varchar  7  7    SQL_Latin1_General_CP1_CI_AS    
Column 4  varchar  1  1    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[DIST.ALL] ( 
[COLUMN 0]  VARCHAR(14)                          NULL,
[COLUMN 1]  VARCHAR(6)                           NULL,
[COLUMN 2]  VARCHAR(7)                           NULL,
[COLUMN 3]  VARCHAR(7)                           NULL,
[COLUMN 4]  VARCHAR(1)                           NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for dist.all

Back To Top ^

dist.female  
Column   Type   Length   Precision   Scale   Collation   Comments  
Column 0  varchar  14  14    SQL_Latin1_General_CP1_CI_AS    
Column 1  varchar  6  6    SQL_Latin1_General_CP1_CI_AS    
Column 2  varchar  7  7    SQL_Latin1_General_CP1_CI_AS    
Column 3  varchar  7  7    SQL_Latin1_General_CP1_CI_AS    
Column 4  varchar  1  1    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[DIST.FEMALE] ( 
[COLUMN 0]  VARCHAR(14)                          NULL,
[COLUMN 1]  VARCHAR(6)                           NULL,
[COLUMN 2]  VARCHAR(7)                           NULL,
[COLUMN 3]  VARCHAR(7)                           NULL,
[COLUMN 4]  VARCHAR(1)                           NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for dist.female

Back To Top ^

dist.male  
Column   Type   Length   Precision   Scale   Collation   Comments  
Column 0  varchar  14  14    SQL_Latin1_General_CP1_CI_AS    
Column 1  varchar  6  6    SQL_Latin1_General_CP1_CI_AS    
Column 2  varchar  7  7    SQL_Latin1_General_CP1_CI_AS    
Column 3  varchar  7  7    SQL_Latin1_General_CP1_CI_AS    
Column 4  varchar  1  1    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[DIST.MALE] ( 
[COLUMN 0]  VARCHAR(14)                          NULL,
[COLUMN 1]  VARCHAR(6)                           NULL,
[COLUMN 2]  VARCHAR(7)                           NULL,
[COLUMN 3]  VARCHAR(7)                           NULL,
[COLUMN 4]  VARCHAR(1)                           NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for dist.male

Back To Top ^

Exams  
Column   Type   Length   Precision   Scale   Collation   Comments  
examid  int  4  10  0      
entity  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
value  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
examrowid  int  4  10  0      

CREATE TABLE [dbo].[EXAMS] ( 
[EXAMID]     INT                                  NULL,
[ENTITY]     VARCHAR(255)                         NULL,
[VALUE]      VARCHAR(255)                         NULL,
[EXAMROWID]  INT                                  NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for Exams

Back To Top ^

Logon_AppsList  
Column   Type   Length   Precision   Scale   Collation   Comments  
AppsListID  int  4  10  0      
AppName  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
DenyOrAllowUsage  char  1  1    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[LOGON_APPSLIST] ( 
[APPSLISTID]        INT              IDENTITY(1,1)   NOT NULL,
[APPNAME]           VARCHAR(255)                         NULL,
[DENYORALLOWUSAGE]  CHAR(1)                              NULL,
CONSTRAINT   [PK__Logon_Ap__53DFFCA23296789C]       PRIMARY KEY CLUSTERED    (AppsListID))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for Logon_AppsList

Back To Top ^

LOGONAUDIT  
Column   Type   Length   Precision   Scale   Collation   Comments  
EVENTDATE  datetime  8  23  3      
DBNAME  nvarchar  512  256    SQL_Latin1_General_CP1_CI_AS    
HOSTNAME  nvarchar  512  256    SQL_Latin1_General_CP1_CI_AS    
APPLICATIONNAME  nvarchar  512  256    SQL_Latin1_General_CP1_CI_AS    
PROCEDURENAME  nvarchar  512  256    SQL_Latin1_General_CP1_CI_AS    
USERID  smallint  2  5  0      
USERNAME  nvarchar  512  256    SQL_Latin1_General_CP1_CI_AS    
SUSERID  int  4  10  0      
SUSERNAME  nvarchar  512  256    SQL_Latin1_General_CP1_CI_AS    
IS_SERVERADMIN_SYSADMIN  int  4  10  0      
IS_DB_OWNER  int  4  10  0      
IS_DDL_ADMIN  int  4  10  0      
IS_DB_DATAREADER  int  4  10  0      
ORIGINAL_LOGIN  nvarchar  510  255    SQL_Latin1_General_CP1_CI_AS    
IPADDRESS  varchar  48  48    SQL_Latin1_General_CP1_CI_AS    
AUTHENTICATIONTYPE  nvarchar  160  80    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[LOGONAUDIT] ( 
[EVENTDATE]                DATETIME                         NOT NULL,
[DBNAME]                   NVARCHAR(256)                        NULL,
[HOSTNAME]                 NVARCHAR(256)                        NULL,
[APPLICATIONNAME]          NVARCHAR(256)                        NULL,
[PROCEDURENAME]            NVARCHAR(256)                        NULL,
[USERID]                   SMALLINT                             NULL,
[USERNAME]                 NVARCHAR(256)                        NULL,
[SUSERID]                  INT                                  NULL,
[SUSERNAME]                NVARCHAR(256)                        NULL,
[IS_SERVERADMIN_SYSADMIN]  INT                                  NULL,
[IS_DB_OWNER]              INT                                  NULL,
[IS_DDL_ADMIN]             INT                                  NULL,
[IS_DB_DATAREADER]         INT                                  NULL,
[ORIGINAL_LOGIN]           NVARCHAR(255)                        NULL,
[IPADDRESS]                VARCHAR(48)                          NULL,
[AUTHENTICATIONTYPE]       NVARCHAR(80)                     NOT NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for LOGONAUDIT

Back To Top ^

MyHEAP  
Column   Type   Length   Precision   Scale   Collation   Comments  
ID  int  4  10  0      
ORDERBY  int  4  10  0      

CREATE TABLE [dbo].[MYHEAP] ( 
[ID]       INT                              NOT NULL,
[ORDERBY]  INT                              NOT NULL)

GO

CREATE INDEX [IX_CLUSTER_ID]                        ON [MyHEAP] (ID)  
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for MyHEAP

Back To Top ^

myImages  
Column   Type   Length   Precision   Scale   Collation   Comments  
id  int  4  10  0      
filename  varchar  200  200    SQL_Latin1_General_CP1_CI_AS    
rawimage  varbinary  -1  -1        

CREATE TABLE [dbo].[MYIMAGES] ( 
[ID]        INT                                  NULL,
[FILENAME]  VARCHAR(200)                         NULL,
[RAWIMAGE]  VARBINARY(max)                   NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for myImages

Back To Top ^

MySample  
Column   Type   Length   Precision   Scale   Collation   Comments  
Id  int  4  10  0      
Field  varchar  50  50    SQL_Latin1_General_CP1_CI_AS    
Contents  varchar  500  500    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[MYSAMPLE] ( 
[ID]        INT                                  NULL,
[FIELD]     VARCHAR(50)                          NULL,
[CONTENTS]  VARCHAR(500)                         NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for MySample

Back To Top ^

prototype  
Column   Type   Length   Precision   Scale   Collation   Comments  
ID  int  4  10  0      
myimage  image  16          
mytext  text  16      SQL_Latin1_General_CP1_CI_AS    
myuniqueidentifier  uniqueidentifier  16  0        
mydate  date  3  10  0      
mytime  time  5  16  7      
mydatetime2  datetime2  8  27  7      
mydatetimeoffset  datetimeoffset  10  34  7      
mytinyint  tinyint  1  3  0      
mysmallint  smallint  2  5  0      
myint  int  4  10  0      
mysmalldatetime  smalldatetime  4  16  0      
myreal  real  4  24        
mymoney  money  8  19  4      
mydatetime  datetime  8  23  3      
myfloat  float  8  53        
mysql_variant  sql_variant  8016  0        
myntext  ntext  16      SQL_Latin1_General_CP1_CI_AS    
mybit  bit  1  1        
mydecimal  decimal  9  18  0      
mynumeric  numeric  9  18  0      
mysmallmoney  smallmoney  4  10  4      
mybigint  bigint  8  19  0      
myhierarchyid  hierarchyid  892  892        
mygeometry  hierarchyid  -1  -1        
mygeography  hierarchyid  -1  -1        
myvarbinary  varbinary  1  1        
myvarchar  varchar  1  1    SQL_Latin1_General_CP1_CI_AS    
mybinary  binary  1  1        
mychar  char  1  1    SQL_Latin1_General_CP1_CI_AS    
mytimestamp  timestamp  8  8        
mynvarchar  nvarchar  2  1    SQL_Latin1_General_CP1_CI_AS    
mynchar  nchar  2  1    SQL_Latin1_General_CP1_CI_AS    
myxml  xml  -1  -1        
mysysname  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[PROTOTYPE] ( 
[ID]                  INT              IDENTITY(1,1)   NOT NULL,
[MYIMAGE]             IMAGE                                NULL,
[MYTEXT]              TEXT                                 NULL,
[MYUNIQUEIDENTIFIER]  UNIQUEIDENTIFIER                     NULL,
[MYDATE]              DATE                                 NULL,
[MYTIME]              TIME                                 NULL,
[MYDATETIME2]         DATETIME2                            NULL,
[MYDATETIMEOFFSET]    DATETIMEOFFSET                       NULL,
[MYTINYINT]           TINYINT                              NULL,
[MYSMALLINT]          SMALLINT                             NULL,
[MYINT]               INT                                  NULL,
[MYSMALLDATETIME]     SMALLDATETIME                        NULL,
[MYREAL]              REAL(24)                             NULL,
[MYMONEY]             MONEY                                NULL,
[MYDATETIME]          DATETIME                             NULL,
[MYFLOAT]             FLOAT                                NULL,
[MYSQL_VARIANT]       SQL_VARIANT                          NULL,
[MYNTEXT]             NTEXT                                NULL,
[MYBIT]               BIT                                  NULL,
[MYDECIMAL]           DECIMAL(18,0)                        NULL,
[MYNUMERIC]           NUMERIC(18,0)                        NULL,
[MYSMALLMONEY]        SMALLMONEY                           NULL,
[MYBIGINT]            BIGINT                               NULL,
[MYHIERARCHYID]       HIERARCHYID                          NULL,
[MYGEOMETRY]          GEOMETRY                             NULL,
[MYGEOGRAPHY]         GEOGRAPHY                            NULL,
[MYVARBINARY]         VARBINARY(1)                     NULL,
[MYVARCHAR]           VARCHAR(1)                           NULL,
[MYBINARY]            BINARY                               NULL,
[MYCHAR]    &n
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for prototype

Back To Top ^

RandomData  
Column   Type   Length   Precision   Scale   Collation   Comments  
ID  int  4  10  0      
RandNewID  varchar  40  40    SQL_Latin1_General_CP1_CI_AS    
RandInt  int  4  10  0      
RandBigInt  bigint  8  19  0      
RandLetters2  varchar  2  2    SQL_Latin1_General_CP1_CI_AS    
RandLetters8  varchar  8  8    SQL_Latin1_General_CP1_CI_AS    
RandMoney  money  8  19  4      
RandDate  datetime  8  23  3      
RandHex  varchar  12  12    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[RANDOMDATA] ( 
[ID]            INT              IDENTITY(1,1)   NOT NULL,
[RANDNEWID]     VARCHAR(40)                          NULL,
[RANDINT]       INT                                  NULL,
[RANDBIGINT]    BIGINT                               NULL,
[RANDLETTERS2]  VARCHAR(2)                           NULL,
[RANDLETTERS8]  VARCHAR(8)                           NULL,
[RANDMONEY]     MONEY                                NULL,
[RANDDATE]      DATETIME                             NULL,
[RANDHEX]       VARCHAR(12)                          NULL,
CONSTRAINT   [PK__RandomDa__3214EC2722CA2527]       PRIMARY KEY CLUSTERED    (ID))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for RandomData

Back To Top ^

SchemaCheckerBetaRegistration  
Column   Type   Length   Precision   Scale   Collation   Comments  
ID  int  4  10  0      
Email  varchar  100  100    SQL_Latin1_General_CP1_CI_AS    
FirstName  varchar  100  100    SQL_Latin1_General_CP1_CI_AS    
LastName  varchar  100  100    SQL_Latin1_General_CP1_CI_AS    
PhoneNumber  varchar  100  100    SQL_Latin1_General_CP1_CI_AS    
DateRegistered  datetime  8  23  3      

CREATE TABLE [dbo].[SCHEMACHECKERBETAREGISTRATION] ( 
[ID]              INT              IDENTITY(1,1)   NOT NULL,
[EMAIL]           VARCHAR(100)                         NULL,
[FIRSTNAME]       VARCHAR(100)                         NULL,
[LASTNAME]        VARCHAR(100)                         NULL,
[PHONENUMBER]     VARCHAR(100)                         NULL,
[DATEREGISTERED]  DATETIME                             NULL DEFAULT (getdate()),
CONSTRAINT   [PK__SchemaCh__3214EC27764C846B]       PRIMARY KEY CLUSTERED    (ID))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for SchemaCheckerBetaRegistration

Back To Top ^

STORMDAILYDATA  
Column   Type   Length   Precision   Scale   Collation   Comments  
CARDNUMBER  int  4  10  0      
STORMHEADERREF  int  4  10  0      
EVENTDATE  varchar  5  5    SQL_Latin1_General_CP1_CI_AS    
STORMSTAGE00Z  char  1  1    SQL_Latin1_General_CP1_CI_AS    
LATITUDE00Z  int  4  10  0      
LONGITUDE00Z  int  4  10  0      
INTENSITY00Z  int  4  10  0      
PRESSURE00Z  int  4  10  0      
STORMSTAGE06Z  char  1  1    SQL_Latin1_General_CP1_CI_AS    
LATITUDE06Z  int  4  10  0      
LONGITUDE06Z  int  4  10  0      
INTENSITY06Z  int  4  10  0      
PRESSURE06Z  int  4  10  0      
STORMSTAGE12Z  char  1  1    SQL_Latin1_General_CP1_CI_AS    
LATITUDE12Z  int  4  10  0      
LONGITUDE12Z  int  4  10  0      
INTENSITY12Z  int  4  10  0      
PRESSURE12Z  int  4  10  0      
STORMSTAGE18Z  char  1  1    SQL_Latin1_General_CP1_CI_AS    
LATITUDE18Z  int  4  10  0      
LONGITUDE18Z  int  4  10  0      
INTENSITY18Z  int  4  10  0      
PRESSURE18Z  int  4  10  0      

CREATE TABLE [dbo].[STORMDAILYDATA] ( 
[CARDNUMBER]      INT                              NOT NULL,
[STORMHEADERREF]  INT                                  NULL,
[EVENTDATE]       VARCHAR(5)                           NULL,
[STORMSTAGE00Z]   CHAR(1)                              NULL,
[LATITUDE00Z]     INT                                  NULL,
[LONGITUDE00Z]    INT                                  NULL,
[INTENSITY00Z]    INT                                  NULL,
[PRESSURE00Z]     INT                                  NULL,
[STORMSTAGE06Z]   CHAR(1)                              NULL,
[LATITUDE06Z]     INT                                  NULL,
[LONGITUDE06Z]    INT                                  NULL,
[INTENSITY06Z]    INT                                  NULL,
[PRESSURE06Z]     INT                                  NULL,
[STORMSTAGE12Z]   CHAR(1)                              NULL,
[LATITUDE12Z]     INT                                  NULL,
[LONGITUDE12Z]    INT                                  NULL,
[INTENSITY12Z]    INT                                  NULL,
[PRESSURE12Z]     INT                                  NULL,
[STORMSTAGE18Z]   CHAR(1)                              NULL,
[LATITUDE18Z]     INT                                  NULL,
[LONGITUDE18Z]    INT                                  NULL,
[INTENSITY18Z]    INT                                  NULL,
[PRESSURE18Z]     INT                                  NULL,
CONSTRAINT   [FK__STORMDAIL__STORM__62AFA012]       FOREIGN KEY (STORMHEADERREF) REFERENCES STORMHEADER(CARDNUMBER))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Foreign Key  FK__STORMDAIL__STORM__62AFA012  STORMDAILYDATA  STORMHEADERREF  STORMHEADER  CARDNUMBER  1    
Triggers  
No Triggers Exist for STORMDAILYDATA

Back To Top ^

STORMHEADER  
Column   Type   Length   Precision   Scale   Collation   Comments  
CARDNUMBER  int  4  10  0      
STORMDATE  datetime  8  23  3      
DAYSOFDATA  int  4  10  0      
STORMNUMBER  int  4  10  0      
RUNNINGTOTALSTORMS  int  4  10  0      
STORMNAME  varchar  50  50    SQL_Latin1_General_CP1_CI_AS    
CAMEASHOREINUS  int  4  10  0      
STORMCATEGORY  int  4  10  0      

CREATE TABLE [dbo].[STORMHEADER] ( 
[CARDNUMBER]          INT                              NOT NULL,
[STORMDATE]           DATETIME                             NULL,
[DAYSOFDATA]          INT                                  NULL,
[STORMNUMBER]         INT                                  NULL,
[RUNNINGTOTALSTORMS]  INT                                  NULL,
[STORMNAME]           VARCHAR(50)                          NULL,
[CAMEASHOREINUS]      INT                                  NULL,
[STORMCATEGORY]       INT                                  NULL,
CONSTRAINT   [PK__STORMHEADER__0492E426]            PRIMARY KEY CLUSTERED    (CARDNUMBER))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Primary Key  PK__STORMHEADER__0492E426  STORMHEADER  CARDNUMBER  STORMDAILYDATA  CARDNUMBER  1    
Triggers  
No Triggers Exist for STORMHEADER

Back To Top ^

t1  
Column   Type   Length   Precision   Scale   Collation   Comments  
a  int  4  10  0      
b  int  4  10  0      

CREATE TABLE [dbo].[T1] ( 
[A]  INT              IDENTITY(1,1)   NOT NULL,
[B]  INT                                  NULL,
CONSTRAINT   [PK__t1__3BD0198E546180BB]             PRIMARY KEY CLUSTERED    (a))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for t1

Back To Top ^

Table_3530  
Column   Type   Length   Precision   Scale   Collation   Comments  
DRAW_SOURCE  varchar  3  3    SQL_Latin1_General_CP1_CI_AS    
VOUCHER_NUM  varchar  14  14    SQL_Latin1_General_CP1_CI_AS    
VOUCHER_LINE_ITEM  varchar  24  24    SQL_Latin1_General_CP1_CI_AS    
CNTL_NUM  varchar  24  24    SQL_Latin1_General_CP1_CI_AS    
RECIP_GRANTEE_ID  varchar  17  17    SQL_Latin1_General_CP1_CI_AS    
STATUS_CD  varchar  3  3    SQL_Latin1_General_CP1_CI_AS    
TYPE_CD  varchar  4  4    SQL_Latin1_General_CP1_CI_AS    
SETUP_GRANTEE_ID  varchar  17  17    SQL_Latin1_General_CP1_CI_AS    
IDIS_ACT_ID  varchar  14  14    SQL_Latin1_General_CP1_CI_AS    
PGM_CD  varchar  3  3    SQL_Latin1_General_CP1_CI_AS    
FISCAL_YR  varchar  6  6    SQL_Latin1_General_CP1_CI_AS    
SOURCE_GRANTEE_ID  varchar  17  17    SQL_Latin1_General_CP1_CI_AS    
SOURCE_TYPE  varchar  4  4    SQL_Latin1_General_CP1_CI_AS    
RECIP_TYPE  varchar  4  4    SQL_Latin1_General_CP1_CI_AS    
GRANT_NUM  varchar  20  20    SQL_Latin1_General_CP1_CI_AS    
AMT  varchar  21  21    SQL_Latin1_General_CP1_CI_AS    
PAY_GRANTEE_ID  varchar  17  17    SQL_Latin1_General_CP1_CI_AS    
PAY_CD  varchar  5  5    SQL_Latin1_General_CP1_CI_AS    
SCHEDULE_NUM  varchar  8  8    SQL_Latin1_General_CP1_CI_AS    
PAY_METHOD  varchar  3  3    SQL_Latin1_General_CP1_CI_AS    
RC_EFFECTIVE_DT  varchar  12  12    SQL_Latin1_General_CP1_CI_AS    
RESCHEDULE_FLAG  varchar  3  3    SQL_Latin1_General_CP1_CI_AS    
RESCHEDULE_PAY_DT  varchar  12  12    SQL_Latin1_General_CP1_CI_AS    
BATCH_XMIT_DT  varchar  12  12    SQL_Latin1_General_CP1_CI_AS    
BATCH_ID  varchar  9  9    SQL_Latin1_General_CP1_CI_AS    
RECORD_NUM  varchar  7  7    SQL_Latin1_General_CP1_CI_AS    
INSERT_USER_ID  varchar  12  12    SQL_Latin1_General_CP1_CI_AS    
INSERT_DT  varchar  12  12    SQL_Latin1_General_CP1_CI_AS    
INSERT_TM  varchar  10  10    SQL_Latin1_General_CP1_CI_AS    
LAST_UPDATE_USER_ID  varchar  12  12    SQL_Latin1_General_CP1_CI_AS    
UPDT_TMSTMP  varchar  28  28    SQL_Latin1_General_CP1_CI_AS    
FUND_TYPE  varchar  4  4    SQL_Latin1_General_CP1_CI_AS    
PRIOR_YR_FLAG  varchar  3  3    SQL_Latin1_General_CP1_CI_AS    
CreatedDate  datetime  8  23  3      

CREATE TABLE [dbo].[TABLE_3530] ( 
[DRAW_SOURCE]          VARCHAR(3)                           NULL,
[VOUCHER_NUM]          VARCHAR(14)                          NULL,
[VOUCHER_LINE_ITEM]    VARCHAR(24)                          NULL,
[CNTL_NUM]             VARCHAR(24)                          NULL,
[RECIP_GRANTEE_ID]     VARCHAR(17)                          NULL,
[STATUS_CD]            VARCHAR(3)                           NULL,
[TYPE_CD]              VARCHAR(4)                           NULL,
[SETUP_GRANTEE_ID]     VARCHAR(17)                          NULL,
[IDIS_ACT_ID]          VARCHAR(14)                          NULL,
[PGM_CD]               VARCHAR(3)                           NULL,
[FISCAL_YR]            VARCHAR(6)                           NULL,
[SOURCE_GRANTEE_ID]    VARCHAR(17)                          NULL,
[SOURCE_TYPE]          VARCHAR(4)                           NULL,
[RECIP_TYPE]           VARCHAR(4)                           NULL,
[GRANT_NUM]            VARCHAR(20)                          NULL,
[AMT]                  VARCHAR(21)                          NULL,
[PAY_GRANTEE_ID]       VARCHAR(17)                          NULL,
[PAY_CD]               VARCHAR(5)                           NULL,
[SCHEDULE_NUM]         VARCHAR(8)                           NULL,
[PAY_METHOD]           VARCHAR(3)                           NULL,
[RC_EFFECTIVE_DT]      VARCHAR(12)                          NULL,
[RESCHEDULE_FLAG]      VARCHAR(3)                           NULL,
[RESCHEDULE_PAY_DT]    VARCHAR(12)                          NULL,
[BATCH_XMIT_DT]        VARCHAR(12)                          NULL,
[BATCH_ID]             VARCHAR(9)                           NULL,
[RECORD_NUM]           VARCHAR(7)                           NULL,
[INSERT_USER_ID]       VARCHAR(12)                          NULL,
[INSERT_DT]            VARCHAR(12)                          NULL,
[INSERT_TM]            VARCHAR(10)                          NULL,
[LAST_UPDATE_USER_ID]  VARCHAR(12)                          NULL,
[UPDT_TMSTMP]          VARCHAR(28)                  &n
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for Table_3530

Back To Top ^

TableA  
Column   Type   Length   Precision   Scale   Collation   Comments  
ID  int  4  10  0      
SomeValue  varchar  10  10    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[TABLEA] ( 
[ID]         INT                              NOT NULL,
[SOMEVALUE]  VARCHAR(10)                          NULL,
CONSTRAINT   [PK__TableA__3214EC2768F2894D]         PRIMARY KEY CLUSTERED    (ID),
CONSTRAINT   [TableA_KeyTest]                       FOREIGN KEY (ID) REFERENCES TableA(ID))
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Foreign Key  TableA_KeyTest  TableA  ID  TableA  ID  1    
Primary Key  PK__TableA__3214EC2768F2894D  TableA  ID  TableA  ID  1    
Triggers  
No Triggers Exist for TableA

Back To Top ^

Tally  
Column   Type   Length   Precision   Scale   Collation   Comments  
N  int  4  10  0      

CREATE TABLE [dbo].[TALLY] ( 
[N]  INT              IDENTITY(1,1)   NOT NULL,
CONSTRAINT   [PK_Tally_N]                           PRIMARY KEY CLUSTERED    (N) WITH FILLFACTOR = 100)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for Tally

Back To Top ^

TallyCalendar  
Column   Type   Length   Precision   Scale   Collation   Comments  
TheDate  datetime  8  23  3      
DayOfWeek  varchar  50  50    SQL_Latin1_General_CP1_CI_AS    
IsHoliday  bit  1  1        
IsWorkHoliday  bit  1  1        
IsWeekDay  bit  1  1        
IsWeekEnd  bit  1  1        
IsDaylightSavings  bit  1  1        
HolidayName  varchar  100  100    SQL_Latin1_General_CP1_CI_AS    
LunarPhase  varchar  50  50    SQL_Latin1_General_CP1_CI_AS    
IsoWeek  int  4  10  0      
IsWorkDay  int  4  10  0      

CREATE TABLE [dbo].[TALLYCALENDAR] ( 
[THEDATE]            DATETIME                         NOT NULL,
[DAYOFWEEK]          VARCHAR(50)                          NULL,
[ISHOLIDAY]          BIT                                  NULL DEFAULT ((0)),
[ISWORKHOLIDAY]      BIT                                  NULL DEFAULT ((0)),
[ISWEEKDAY]          BIT                                  NULL DEFAULT ((0)),
[ISWEEKEND]          BIT                                  NULL DEFAULT ((0)),
[ISDAYLIGHTSAVINGS]  BIT                                  NULL DEFAULT ((0)),
[HOLIDAYNAME]        VARCHAR(100)                         NULL,
[LUNARPHASE]         VARCHAR(50)                          NULL,
[ISOWEEK]            INT                                  NULL,
[ISWORKDAY]          AS (case when [IsWorkHoliday]=(1) OR ([DayOfWeek]='Sunday' OR [DayOfWeek]='Saturday') then (0) else (1) end) PERSISTED,
CONSTRAINT   [PK__TallyCal__5CB7C64E42CCE065]       PRIMARY KEY CLUSTERED    (TheDate))

GO

CREATE INDEX [IX_TallyCalendar]                     ON [TallyCalendar] (DayOfWeek, TheDate) INCLUDE (IsHoliday, IsWorkHoliday, HolidayName)  
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for TallyCalendar

Back To Top ^

TBLEXAMPLE  
Column   Type   Length   Precision   Scale   Collation   Comments  
SPORTS_ID  int  4  10  0      
EVENT_ID  int  4  10  0      
Country  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
SETTLED_DATE  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
FULL_DESCRIPTION  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
COURSE  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
SCHEDULED_OFF  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
EVENT  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
ACTUAL_OFF  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
SELECTION_ID  int  4  10  0      
SELECTION  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
ODDS  decimal  9  19  4      
NUMBER_BETS  int  4  10  0      
VOLUME_MATCHED  decimal  9  19  4      
LATEST_TAKEN  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
FIRST_TAKEN  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    
WIN_FLAG  int  4  10  0      
IN_PLAY  varchar  255  255    SQL_Latin1_General_CP1_CI_AS    

CREATE TABLE [dbo].[TBLEXAMPLE] ( 
[SPORTS_ID]         INT                                  NULL,
[EVENT_ID]          INT                                  NULL,
[COUNTRY]           VARCHAR(255)                         NULL,
[SETTLED_DATE]      VARCHAR(255)                         NULL,
[FULL_DESCRIPTION]  VARCHAR(255)                         NULL,
[COURSE]            VARCHAR(255)                         NULL,
[SCHEDULED_OFF]     VARCHAR(255)                         NULL,
[EVENT]             VARCHAR(255)                         NULL,
[ACTUAL_OFF]        VARCHAR(255)                         NULL,
[SELECTION_ID]      INT                                  NULL,
[SELECTION]         VARCHAR(255)                         NULL,
[ODDS]              DECIMAL(19,4)                        NULL,
[NUMBER_BETS]       INT                                  NULL,
[VOLUME_MATCHED]    DECIMAL(19,4)                        NULL,
[LATEST_TAKEN]      VARCHAR(255)                         NULL,
[FIRST_TAKEN]       VARCHAR(255)                         NULL,
[WIN_FLAG]          INT                                  NULL,
[IN_PLAY]           VARCHAR(255)                         NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for TBLEXAMPLE

Back To Top ^

test  
Column   Type   Length   Precision   Scale   Collation   Comments  
servername  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS    
id  int  4  10  0      

CREATE TABLE [dbo].[TEST] ( 
[SERVERNAME]  AS (@@servername),
[ID]          INT              IDENTITY(1,1)   NOT NULL)
 
Constraints  
Constraint Type   Contraint name   Table   Column   FK Table   FK Column   Key No.   Default  
Triggers  
No Triggers Exist for test

Back To Top ^

Views


sp_DDLTrace  
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE VIEW sp_DDLTrace 
          AS 
          SELECT 
            ev.name ,
            tr.* 
          FROM ::fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\MyDDLTrace.trc', default) tr
          INNER join sys.trace_events ev
            ON tr.eventclass = ev.trace_event_id  

Back To Top ^

sp_DMLTrace  
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE VIEW sp_DMLTrace AS SELECT * FROM ::fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\MyDMLtrace20120301-180120.trc', default)  

Back To Top ^

sp_FailMail  
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
 CREATE VIEW sp_FailMail
 AS 
SELECT 
  err.[description],
  fail.*
FROM [msdb].[dbo].[sysmail_event_log] err
  inner join [msdb].[dbo].[sysmail_faileditems] fail
    ON err.mailitem_id = fail.mailitem_id  

Back To Top ^

sp_LogonTrace  
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE VIEW sp_LogonTrace 
          AS 
          SELECT 
            ev.name ,
            tr.* 
          FROM ::fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\MyLogonTrace.trc', default) tr
          INNER join sys.trace_events ev
            ON tr.eventclass = ev.trace_event_id  

Back To Top ^

VW_Trace_1  
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
     CREATE VIEW dbo.VW_Trace_1
          AS 
          SELECT 
            ev.name ,
            tr.* 
          FROM ::fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\log_63.trc', default) tr
          INNER join sys.trace_events ev
            ON tr.eventclass = ev.trace_event_id  

Back To Top ^

Stored Procedures


dba_indexDefrag_sp

Parameters  
Input  @minFragmentation  float (53,0)  
Input  @rebuildThreshold  float (53,0)  
Input  @executeSQL  bit  
Input  @defragOrderColumn  nvarchar (20)  
Input  @defragSortOrder  nvarchar (4)  
Input  @timeLimit  int  
Input  @database  varchar (128)  
Input  @tableName  varchar (4000)  
Input  @forceRescan  bit  
Input  @scanMode  varchar (10)  
Input  @minPageCount  int  
Input  @maxPageCount  int  
Input  @excludeMaxPartition  bit  
Input  @onlineRebuild  bit  
Input  @sortInTempDB  bit  
Input  @maxDopRestriction  tinyint  
Input  @printCommands  bit  
Input  @printFragmentation  bit  
Input  @defragDelay  char (8)  
Input  @debugMode  bit  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
dba_indexDefragExclusion  databaseID  int  4  10  0    
dba_indexDefragExclusion  exclusionMask  int  4  10  0    
dba_indexDefragExclusion  indexID  int  4  10  0    
dba_indexDefragExclusion  objectID  int  4  10  0    
dba_indexDefragLog  databaseID  int  4  10  0    
dba_indexDefragLog  databaseName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS  
dba_indexDefragLog  dateTimeEnd  datetime  8  23  3    
dba_indexDefragLog  dateTimeStart  datetime  8  23  3    
dba_indexDefragLog  durationSeconds  int  4  10  0    
dba_indexDefragLog  errorMessage  varchar  1000  1000    SQL_Latin1_General_CP1_CI_AS  
dba_indexDefragLog  fragmentation  float  8  53      
dba_indexDefragLog  indexDefrag_id  int  4  10  0    
dba_indexDefragLog  indexID  int  4  10  0    
dba_indexDefragLog  indexName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS  
dba_indexDefragLog  objectID  int  4  10  0    
dba_indexDefragLog  objectName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS  
dba_indexDefragLog  page_count  int  4  10  0    
dba_indexDefragLog  partitionNumber  smallint  2  5  0    
dba_indexDefragLog  sqlStatement  varchar  4000  4000    SQL_Latin1_General_CP1_CI_AS  
dba_indexDefragStatus  databaseID  int  4  10  0    
dba_indexDefragStatus  databaseName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS  
dba_indexDefragStatus  defragDate  datetime  8  23  3    
dba_indexDefragStatus  exclusionMask  int  4  10  0    
dba_indexDefragStatus  fragmentation  float  8  53      
dba_indexDefragStatus  indexID  int  4  10  0    
dba_indexDefragStatus  indexName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS  
dba_indexDefragStatus  objectID  int  4  10  0    
dba_indexDefragStatus  objectName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS  
dba_indexDefragStatus  page_count  int  4  10  0    
dba_indexDefragStatus  partitionNumber  smallint  2  5  0    
dba_indexDefragStatus  printStatus  bit  1  1      
dba_indexDefragStatus  range_scan_count  bigint  8  19  0    
dba_indexDefragStatus  scanDate  datetime  8  23  3    
dba_indexDefragStatus  schemaName  nvarchar  256  128    SQL_Latin1_General_CP1_CI_AS  

CREATE PROCEDURE dbo.dba_indexDefrag_sp

    /* Declare Parameters */
    @minFragmentation       FLOAT               = 10.0  
        /* in percent, will not defrag if fragmentation less than specified */
  , @rebuildThreshold       FLOAT               = 30.0  
        /* in percent, greater than @rebuildThreshold will result in rebuild instead of reorg */
  , @executeSQL             BIT                 = 1     
        /* 1 = execute; 0 = print command only */
  , @defragOrderColumn      NVARCHAR(20)        = 'range_scan_count'
        /* Valid options are: range_scan_count, fragmentation, page_count */
  , @defragSortOrder        NVARCHAR(4)         = 'DESC'
        /* Valid options are: ASC, DESC */
  , @timeLimit              INT                 = 720 /* defaulted to 12 hours */
        /* Optional time limitation; expressed in minutes */
  , @database               VARCHAR(128)        = NULL
        /* Option to specify one or more database names, separated by commas; NULL will return all */
  , @tableName              VARCHAR(4000)       = NULL  -- databaseName.schema.tableName
        /* Option to specify a table name; null will return all */
  , @forceRescan            BIT                 = 0
        /* Whether or not to force a rescan of indexes; 1 = force, 0 = use existing scan, if available */
  , @scanMode               VARCHAR(10)         = N'LIMITED'
        /* Options are LIMITED, SAMPLED, and DETAILED */
  , @minPageCount           INT                 = 8 
        /*  MS recommends > 1 extent (8 pages) */
  , @maxPageCount           INT                 = NULL
        /* NULL = no limit */
  , @excludeMaxPartition    BIT                 = 0
        /* 1 = exclude right-most populated partition; 0 = do not exclude; see notes for caveats */
  , @onlineRebuild          BIT                 = 1     
        /* 1 = online rebuild; 0 = offline rebuild; only in Enterprise */
  , @sortInTempDB           BIT                 = 1
        /* 1 = perform sort operation in TempDB; 0 = perform sort operation in the index's database */
  , @maxDopRestriction      TINYINT             = NULL
        /* Option to restrict the number of processors for the operation; only in Enterprise */
  , @printCommands          BIT                 = 0     
        /* 1 = print commands; 0 = do not print commands */
  , @printFragmentation     BIT                 = 0
        /* 1 = print fragmentation prior to defrag; 
           0 = do not print */
  , @defragDelay            CHAR(8)             = '00:00:05'
        /* time to wait between defrag commands */
  , @debugMode              BIT                 = 0
        /* display some useful comments to help determine if/WHERE issues occur */
AS /*********************************************************************************
    Name:       dba_indexDefrag_sp

    Author:     Michelle Ufford, http://sqlfool.com

    Purpose:    Defrags one or more indexes for one or more databases

    Notes:

    CAUTION: TRANSACTION LOG SIZE SHOULD BE MONITORED CLOSELY WHEN DEFRAGMENTING.
             DO NOT RUN UNATTENDED ON LARGE DATABASES DURING BUSINESS HOURS.

      @minFragmentation     defaulted to 10%, will not defrag if fragmentation 
                            is less than that
      
      @rebuildThreshold     defaulted to 30% AS recommended by Microsoft in BOL;
                            greater than 30% will result in rebuild instead

      @executeSQL           1 = execute the SQL generated by this proc; 
                            0 = print command only

      @defragOrderColumn    Defines how to prioritize the order of defrags.  Only
                            used if @executeSQL = 1.  
                            Valid options are: 
                            range_scan_count = count of range and table scans on the
                                               index; in general, this is what benefits 
                                               the most FROM defragmentation
                            fragmentation    = amount of fragmentation in the index;
                                               the higher the number, the worse it is
                            page_count       = number of pages in the index; affects
                                               how long it takes to defrag an index

      @defragSortOrder      The sort order of the ORDER BY clause.
                            Valid options are ASC (ascending) or DESC (descending).

      @timeLimit            Optional, limits how much time can be spent performing 
                            index defrags; expressed in minutes.

                            NOTE: The time limit is checked BEFORE an index defrag
                                  is begun, thus a long index defrag can exceed the
                                  time limitation.

      @database             Optional, specify specific database name to defrag;
                            If not specified, all non-system databases will
                            be defragged.

      @tableName            Specify if you only want to defrag indexes for a 
                            specific table, format = databaseName.schema.tableName;
                            if not specified, all tables will be defragged.

      @forceRescan          Whether or not to force a rescan of indexes.  If set
                            to 0, a rescan will not occur until all indexes have
                            been defragged.  This can span multiple executions.
                            1 = force a rescan
                            0 = use previous scan, if there are indexes left to defrag

      @scanMode             Specifies which scan mode to use to determine
                            fragmentation levels.  Options are:
                            LIMITED - scans the parent level; quickest mode,
                                      recommended for most cases.
                            SAMPLED - samples 1% of all data pages; if less than
                                      10k pages, performs a DETAILED scan.
                            DETAILED - scans all data pages.  Use great care with
                                       this mode, AS it can cause performance issues.

      @minPageCount         Specifies how many pages must exist in an index in order 
                            to be considered for a defrag.  Defaulted to 8 pages, AS 
                            Microsoft recommends only defragging indexes with more 
                            than 1 extent (8 pages).  

                            NOTE: The @minPageCount will restrict the indexes that
                            are stored in dba_indexDefragStatus table.

      @maxPageCount         Specifies the maximum number of pages that can exist in 
                            an index and still be considered for a defrag.  Useful
                            for scheduling small indexes during business hours and
                            large indexes for non-business hours.

                            NOTE: The @maxPageCount will restrict the indexes that
                            are

Back To Top ^

LoggingProc

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
--drop procedure LoggingProc
CREATE PROCEDURE LoggingProc
AS
SET NOCOUNT ON;

DECLARE     @message_body XML,
            @message_type_name NVARCHAR(256),
            @dialog UNIQUEIDENTIFIER ;

--Endless loop
WHILE (1 = 1)
BEGIN
    BEGIN TRANSACTION ;

    -- Receive the next available message

    WAITFOR (
        RECEIVE TOP(1)
            @message_type_name=message_type_name,
            @message_body=message_body,
            @dialog = conversation_handle
            FROM LoggingQueue
    ), TIMEOUT 2000

 --Rollback and exit if no messages were found
 IF (@@ROWCOUNT = 0)
        BEGIN
            ROLLBACK TRANSACTION ;
            BREAK ;
        END ;

   --End conversation of end dialog message

    IF (@message_type_name = 'http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog')
    BEGIN
        PRINT 'End Dialog received for dialog # ' + cast(@dialog as nvarchar(40)) ;
        END CONVERSATION @dialog ;
    END ;
    ELSE
    BEGIN


 INSERT INTO Logging (
 EventTime,
 EventType,
 LoginName,
 HostName,
    AppName,
 NTUserName,
 NTDomainName,
 Success,
 FullLog )
 VALUES
 (
 CAST(CAST(@message_body.query('/EVENT_INSTANCE/PostTime/text()') AS VARCHAR(64)) AS DATETIME),
 CAST(@message_body.query('/EVENT_INSTANCE/EventType/text()') AS VARCHAR(100)),
 CAST(@message_body.query('/EVENT_INSTANCE/LoginName/text()') AS VARCHAR(100)),
 CAST(@message_body.query('/EVENT_INSTANCE/HostName/text()') AS VARCHAR(100)),
   CAST(@message_body.query('/EVENT_INSTANCE/ApplicationName/text()') AS VARCHAR(100)),
 CAST(@message_body.query('/EVENT_INSTANCE/NTUserName/text()') AS VARCHAR(100)),
 CAST(@message_body.query('/EVENT_INSTANCE/NTDomainName/text()') AS VARCHAR(100)),
 CAST(CAST(@message_body.query('/EVENT_INSTANCE/Success/text()') AS VARCHAR(64)) AS INTEGER),
 @message_body)
END

COMMIT TRANSACTION
END
 

Back To Top ^

MakeMeADatabase

Parameters  
Input  @dbname  varchar (128)  
Input  @UserName  varchar (128)  
Input  @WithDevPriviledges  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
---i had to do this to my server:
---ALTER DATABASE master SET TRUSTWORTHY ON;
CREATE PROCEDURE MakeMeADatabase(@dbname varchar(128),@UserName varchar(128),@WithDevPriviledges int = 0)
WITH EXECUTE AS 'dbo'
AS
DECLARE @SQLCmd varchar(max)
BEGIN
  
IF EXISTS(SELECT name FROM master.dbo.sysdatabases WHERE name = @dbname)
    
BEGIN
      
PRINT 'Database Already Exists,No Need To Create.';
    
END
  
ELSE
    
BEGIN
      
PRINT 'Creating Database.';     
      
set @SQLCmd = 'CREATE DATABASE ' + @DBName + ';';
      
exec (@SQLCmd);
    
END
  
SET @SQLCmd='
  
USE Whatever
  
--create the Role for my Dev guys
  
IF  NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N''WhateverAdmins'' AND type = ''R'')
    
BEGIN
      
CREATE ROLE [WhateverAdmins]
      
ALTER AUTHORIZATION ON SCHEMA::[db_ddladmin]   TO [WhateverAdmins]
      
ALTER AUTHORIZATION ON SCHEMA::[db_datareader] TO [WhateverAdmins]
      
ALTER AUTHORIZATION ON SCHEMA::[db_datawriter] TO [WhateverAdmins]
    
END
  
--create role for my normal users
  
IF  NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N''WhateverUsers'' AND type = ''R'')
    
BEGIN
      
CREATE ROLE [WhateverUsers]
      
ALTER AUTHORIZATION ON SCHEMA::[db_datareader] TO [WhateverUsers]
      
ALTER AUTHORIZATION ON SCHEMA::[db_datawriter] TO [WhateverUsers]
    
END
  
--create the user if it does not exist yet
  
IF  NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N''MyDBUser'')
    
CREATE USER [MyDBUser] FOR LOGIN [MyDBUser]
  
--add the user to the role
  
EXEC sp_addrolemember N''WhateverUsers'', N''MyDBUser''';
  
If @WithDevPriviledges <> 0
    
BEGIN
     
SET @SQLCmd= @SQLCmd + '
     
EXEC sp_addrolemember N''WhateverAdmins'', N''MyDBUser''';
    
END
  
SET @SQLCmd=Replace(@SQLCmd,'Whatever',@DBName);
  
SET @SQLCmd=Replace(@SQLCmd,'MyDBUser',@UserName);
  
PRINT @SQLCmd;
  
EXEC (@SQLCmd); ----two roles should be in place now
END
 

Back To Top ^

PR_CAPTURESP_WHO

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

CREATE PROCEDURE PR_CAPTURESP_WHO
AS
BEGIN
  SET NOCOUNT ON
  IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'WHORESULTS') AND xtype in (N'U'))  
    CREATE TABLE WHORESULTS ( 
      [WHORESULTSID]   INT IDENTITY(1,1) NOT NULL PRIMARY KEY,  
      [SPID]           CHAR (5)                          NULL, 
      [INSERTDT]       DATETIME                          NULL DEFAULT(GETDATE()),
      [STATUS]         VARCHAR(30)                       NULL,  
      [LOGIN]          VARCHAR(30)                       NULL,  
      [HOSTNAME]       VARCHAR(30)                       NULL,  
      [BLKBY]          VARCHAR(30)                       NULL,  
      [DBNAME]         VARCHAR(30)                       NULL,  
      [COMMAND]        VARCHAR(30)                       NULL,    
      [CPUTIME]        INT                               NULL,  
      [DISKIO]         INT                               NULL,  
      [LASTBATCH]      VARCHAR(30)                       NULL,                         
      [PROGRAMNAME]    VARCHAR(200)                      NULL,                                            
      [SPIDINT]        INT                               NULL
     )  
   --table exists, insert some data
  INSERT INTO WHORESULTS(SPID,Status,Login,HostName,BlkBy,DBName,Command,CPUTime,DiskIO,LastBatch,ProgramName,SPIDINT)
  EXEC sp_who2
  --don't care about spids less than 50 anyway:
  DELETE FROM WHORESULTS WHERE SPIDINT < 50
  END --PROC  

Back To Top ^

sp_AddDMLMyTrace

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

CREATE PROCEDURE [dbo].[sp_AddDMLMyTrace]    
AS    
  BEGIN    
    SET NOCOUNT ON    
    SET XACT_ABORT ON    
    BEGIN TRAN    
    
    declare @sql varchar(1000)    
    declare @path nvarchar(256)    
    declare @traceidout int    
    declare @maxfilesize bigint    
    declare @maxRolloverFiles int    
    declare @on bit    
    
    set @on = 1    
    set @maxRolloverFiles = 2    
    set @maxfilesize = 50  --meg    
    
    --we want the current trace folder    
    --ie c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG      
    SELECT @path = REVERSE(SUBSTRING(REVERSE(path),CHARINDEX('\',REVERSE(path)),256)) FROM sys.traces WHERE is_default = 1    
    SET @path = @path + N'MyDMLtrace' --system appends .trc automatically for the filename    
      
    IF EXISTS(SELECT * FROM sys.traces WHERE [path] = @path+'.trc')    
      BEGIN    
        --if it exists, turn it off and try to drop it    
        SELECT @traceidout = id FROM sys.traces WHERE [path] = @path +'.trc'    
        exec sp_trace_setstatus @traceidout, 0 ---stop trace, you must know the traceid to stop it    
        exec sp_trace_setstatus @traceidout, 2 ---close trace you must know the traceid to delete it    
        --the above does not delete the actual trace files...    
        --note the double quotes to allow spaces in file path    
        SET @sql = 'DEL "' + @path + '*.trc"' --other files like sp_DMLTrace.trc,sp_DMLTrace_1.trc,sp_DMLTrace_2.trc may exist as the logs roll over    
        print @sql    
        EXEC master..xp_cmdshell  @sql    
        IF EXISTS(select * from sysobjects where xtype='V' and name='sp_DMLTrace')    
          BEGIN    
            SET @sql = 'DROP VIEW sp_DMLTrace '    
            exec(@sql)    
          END    
        SELECT 'Trace Stopped And Dropped, Files Deleted, View sp_DMLTrace Dropped As Well'    
      END --IF Exists the trace    
    ELSE    
      BEGIN    
      --does not exist, add it!    
      --create the trace    
      exec sp_trace_create @traceidout output, @maxRolloverFiles, @path, @maxfilesize, NULL    
      
      --for the Event Every SQL statement completed, capture all 64 columns of accessible data    
      exec sp_trace_setevent @traceidout, 12, 1, @on --SQL:BatchCompleted,TextData    
      exec sp_trace_setevent @traceidout, 12, 2, @on --SQL:BatchCompleted,BinaryData    
      exec sp_trace_setevent @traceidout, 12, 3, @on --SQL:BatchCompleted,DatabaseID    
      exec sp_trace_setevent @traceidout, 12, 4, @on --SQL:BatchCompleted,TransactionID    
      exec sp_trace_setevent @traceidout, 12, 5, @on --SQL:BatchCompleted,LineNumber    
      exec sp_trace_setevent @traceidout, 12, 6, @on --SQL:BatchCompleted,NTUserName    
      exec sp_trace_setevent @traceidout, 12, 7, @on --SQL:BatchCompleted,NTDomainName    
      exec sp_trace_setevent @traceidout, 12, 8, @on --SQL:BatchCompleted,HostName    
      exec sp_trace_setevent @traceidout, 12, 9, @on --SQL:BatchCompleted, ClientProcessID    
      exec sp_trace_setevent @traceidout, 12,10, @on --SQL:BatchCompleted,ApplicationName    
      exec sp_trace_setevent @traceidout, 12,11, @on --SQL:BatchCompleted,LoginName    
      exec sp_trace_setevent @traceidout, 12,12, @on --SQL:BatchCompleted,SPID    
      exec sp_trace_setevent @traceidout, 12,13, @on --SQL:BatchCompleted,Duration    
      exec sp_trace_setevent @traceidout, 12,14, @on --SQL:BatchCompleted,StartTime    
      exec sp_trace_setevent @traceidout, 12,15, @on --SQL:BatchCompleted,EndTime    
      exec sp_trace_setevent @traceidout, 12,16, @on --SQL:BatchCompleted,Reads    
      exec sp_trace_setevent @traceidout, 12,17, @on --SQL:BatchCompleted,Writes    
      exec sp_trace_setevent @traceidout, 12,18, @on --SQL:BatchCompleted,CPU    
      exec sp_trace_setevent @traceidout, 12,19, @on --SQL:BatchCompleted,Permissions    
      exec sp_trace_setevent @traceidout, 12,20, @on --SQL:BatchCompleted,Severity    
      exec sp_trace_setevent @traceidout, 12,21, @on --SQL:BatchCompleted,EventSubClass    
      exec sp_trace_setevent @traceidout, 12,22, @on --SQL:BatchCompleted,ObjectID    
      exec sp_trace_setevent @traceidout, 12,23, @on --SQL:BatchCompleted,Success    
      exec sp_trace_setevent @traceidout, 12,24, @on --SQL:BatchCompleted,IndexID    
      exec sp_trace_setevent @traceidout, 12,25, @on --SQL:BatchCompleted,IntegerData    
      exec sp_trace_setevent @traceidout, 12,26, @on --SQL:BatchCompleted,ServerName    
      exec sp_trace_setevent @traceidout, 12,27, @on --SQL:BatchCompleted,EventClass    
      exec sp_trace_setevent @traceidout, 12,28, @on --SQL:BatchCompleted,ObjectType    
      exec sp_trace_setevent @traceidout, 12,29, @on --SQL:BatchCompleted,NestLevel    
      exec sp_trace_setevent @traceidout, 12,30, @on --SQL:BatchCompleted,State    
      exec sp_trace_setevent @traceidout, 12,31, @on --SQL:BatchCompleted,Error    
      exec sp_trace_setevent @traceidout, 12,32, @on --SQL:BatchCompleted,Mode    
      exec sp_trace_setevent @traceidout, 12,33, @on --SQL:BatchCompleted,Handle    
      exec sp_trace_setevent @traceidout, 12,34, @on --SQL:BatchCompleted,ObjectName    
      exec sp_trace_setevent @traceidout, 12,35, @on --SQL:BatchCompleted,DatabaseName    
      exec sp_trace_setevent @traceidout, 12,36, @on --SQL:BatchCompleted,FileName    
      exec sp_trace_setevent @traceidout, 12,37, @on --SQL:BatchCompleted,OwnerName    
      exec sp_trace_setevent @traceidout, 12,38, @on --SQL:BatchCompleted,RoleName    
      exec sp_trace_setevent @traceidout, 12,39, @on --SQL:BatchCompleted,TargetUserName    
      exec sp_trace_setevent @traceidout, 12,40, @on --SQL:BatchCompleted,DBUserName    
      exec sp_trace_setevent @traceidout, 12,41, @on --SQL:BatchCompleted,LoginSid    
      exec sp_trace_setevent @traceidout, 12,42, @on --SQL:BatchCompleted,TargetLoginName    
      exec sp_trace_setevent @traceidout, 12,43, @on --SQL:BatchCompleted,TargetLoginSid    
      exec sp_trace_setevent @traceidout, 12,44, @on --SQL:BatchCompleted,ColumnPermissions    
      exec sp_trace_setevent @traceidout, 12,45, @on --SQL:BatchCompleted,LinkedServerName    
      exec sp_trace_setevent @traceidout, 12,46, @on --SQL:BatchCompleted,ProviderName    
      exec sp_trace_setevent @traceidout, 12,47, @on --SQL:BatchCompleted,MethodName    
      exec sp_trace_setevent @traceidout, 12,48, @on --SQL:BatchCompleted,RowCounts    
      exec sp_trace_setevent @traceidout, 12,49, @on --SQL:BatchCompleted,RequestID    
      exec sp_trace_setevent @traceidout, 12,50, @on --SQL:BatchCompleted,XactSequence    
      exec sp_trace_setevent @traceidout, 12,51, @on --SQL:BatchCompleted,EventSequence    
      exec sp_trace_setevent @traceidout, 12,52, @on --SQL:BatchCompleted,BigintData1    
      exec sp_trace_setevent @traceidout, 12,53, @on --SQL:BatchCompleted,BigintData2    
      exec sp_trace_setevent @traceidout, 12,54, @on --SQL:BatchCompleted,GUID    
      exec sp_trace_setevent @traceidout, 12,55, @on --SQL:BatchCompleted,IntegerData2    
      exec sp_trace_setevent @traceidout, 12,56, @on --SQL:BatchCompleted,ObjectID2    
      exec sp_trace_setevent @traceidout, 12,57, @on --SQL:BatchCompleted,Type    
      exec sp_t

Back To Top ^

sp_AddMyDDLTrace

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             


CREATE PROCEDURE [dbo].[sp_AddMyDDLTrace]    
AS    
  BEGIN    
    SET NOCOUNT ON    
    SET XACT_ABORT ON    
    BEGIN TRAN    
    
    declare @sql varchar(1000)    
    declare @path nvarchar(256)    
    declare @traceidout int    
    declare @maxfilesize bigint    
    declare @maxRolloverFiles int    
    declare @on bit    
    
    set @on = 1    
    set @maxRolloverFiles = 2    
    set @maxfilesize = 50  --meg    
    
    --we want the current trace folder    
    --ie c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG      
    SELECT @path = REVERSE(SUBSTRING(REVERSE(path),CHARINDEX('\',REVERSE(path)),256)) FROM sys.traces WHERE is_default = 1    
    SET @path = @path + N'MyDDLTrace' --system appends .trc automatically for the filename    
      
    IF EXISTS(SELECT * FROM sys.traces WHERE [path] = @path + '.trc')    
      BEGIN    
        --if it exists, turn it off and try to drop it    
        SELECT @traceidout = id FROM sys.traces WHERE [path] = @path +'.trc'    
        exec sp_trace_setstatus @traceidout, 0 ---stop trace, you must know the traceid to stop it    
        exec sp_trace_setstatus @traceidout, 2 ---close trace you must know the traceid to delete it    
        --the above does not delete the actual trace files...    
        --note the double quotes to allow spaces in file path    
        SET @sql = 'DEL "' + @path + '*.trc"' --other files like sp_DMLTrace.trc,sp_DMLTrace_1.trc,sp_DMLTrace_2.trc may exist as the logs roll over    
        print @sql    
        EXEC master..xp_cmdshell  @sql    
        IF EXISTS(select * from sysobjects where xtype='V' and name='sp_DDLTrace')    
          BEGIN    
            SET @sql = 'DROP VIEW sp_DDLTrace '    
            exec(@sql)    
          END    
        SELECT 'Trace Stopped And Dropped, Files Deleted, View sp_DDLTrace Dropped As Well'    
      END --IF Exists the trace    
    ELSE    
      BEGIN    
      --does not exist, add it!    
      --create the trace    
      exec sp_trace_create @traceidout output, @maxRolloverFiles, @path, @maxfilesize, NULL    
      
     
  --for the Event Every SQL statement completed, capture columns of accessible data  
   EXEC sp_trace_setevent @traceidout,18,6,@on --Audit Server Starts And Stops,NTUserName
   EXEC sp_trace_setevent @traceidout,18,7,@on --Audit Server Starts And Stops,NTDomainName
   EXEC sp_trace_setevent @traceidout, 18, 8,@on --Audit Server Starts And Stops,HostName
   EXEC sp_trace_setevent @traceidout, 18, 9,@on --Audit Server Starts And Stops,ClientProcessID
   EXEC sp_trace_setevent @traceidout, 18,10,@on --Audit Server Starts And Stops,ApplicationName
   EXEC sp_trace_setevent @traceidout, 18,11,@on --Audit Server Starts And Stops,LoginName
   EXEC sp_trace_setevent @traceidout, 18,12,@on --Audit Server Starts And Stops,SPID
   EXEC sp_trace_setevent @traceidout, 18,14,@on --Audit Server Starts And Stops,StartTime
   EXEC sp_trace_setevent @traceidout, 18,21,@on --Audit Server Starts And Stops,EventSubClass
   EXEC sp_trace_setevent @traceidout, 18,23,@on --Audit Server Starts And Stops,Success
   EXEC sp_trace_setevent @traceidout, 18,26,@on --Audit Server Starts And Stops,ServerName
   EXEC sp_trace_setevent @traceidout, 18,41,@on --Audit Server Starts And Stops,LoginSid
   EXEC sp_trace_setevent @traceidout, 18,49,@on --Audit Server Starts And Stops,RequestID
   EXEC sp_trace_setevent @traceidout, 18,51,@on --Audit Server Starts And Stops,EventSequence
   EXEC sp_trace_setevent @traceidout, 18,60,@on --Audit Server Starts And Stops,IsSystem
   EXEC sp_trace_setevent @traceidout, 18,64,@on --Audit Server Starts And Stops,SessionLoginName
   EXEC sp_trace_setevent @traceidout, 20, 1,@on --Audit Login Failed,TextData
   EXEC sp_trace_setevent @traceidout, 20, 3,@on --Audit Login Failed,DatabaseID
   EXEC sp_trace_setevent @traceidout, 20, 6,@on --Audit Login Failed,NTUserName
   EXEC sp_trace_setevent @traceidout, 20, 7,@on --Audit Login Failed,NTDomainName
   EXEC sp_trace_setevent @traceidout, 20, 8,@on --Audit Login Failed,HostName
   EXEC sp_trace_setevent @traceidout, 20, 9,@on --Audit Login Failed,ClientProcessID
   EXEC sp_trace_setevent @traceidout, 20,10,@on --Audit Login Failed,ApplicationName
   EXEC sp_trace_setevent @traceidout, 20,11,@on --Audit Login Failed,LoginName
   EXEC sp_trace_setevent @traceidout, 20,12,@on --Audit Login Failed,SPID
   EXEC sp_trace_setevent @traceidout, 20,14,@on --Audit Login Failed,StartTime
   EXEC sp_trace_setevent @traceidout, 20,21,@on --Audit Login Failed,EventSubClass
   EXEC sp_trace_setevent @traceidout, 20,23,@on --Audit Login Failed,Success
   EXEC sp_trace_setevent @traceidout, 20,26,@on --Audit Login Failed,ServerName
   EXEC sp_trace_setevent @traceidout, 20,31,@on --Audit Login Failed,Error
   EXEC sp_trace_setevent @traceidout, 20,35,@on --Audit Login Failed,DatabaseName
   EXEC sp_trace_setevent @traceidout, 20,49,@on --Audit Login Failed,RequestID
   EXEC sp_trace_setevent @traceidout, 20,51,@on --Audit Login Failed,EventSequence
   EXEC sp_trace_setevent @traceidout, 20,60,@on --Audit Login Failed,IsSystem
   EXEC sp_trace_setevent @traceidout, 20,64,@on --Audit Login Failed,SessionLoginName
   EXEC sp_trace_setevent @traceidout, 22, 1,@on --ErrorLog,TextData
   EXEC sp_trace_setevent @traceidout, 22, 3,@on --ErrorLog,DatabaseID
   EXEC sp_trace_setevent @traceidout, 22, 4,@on --ErrorLog,TransactionID
   EXEC sp_trace_setevent @traceidout, 22, 6,@on --ErrorLog,NTUserName
   EXEC sp_trace_setevent @traceidout, 22, 7,@on --ErrorLog,NTDomainName
   EXEC sp_trace_setevent @traceidout, 22, 8,@on --ErrorLog,HostName
   EXEC sp_trace_setevent @traceidout, 22, 9,@on --ErrorLog,ClientProcessID
   EXEC sp_trace_setevent @traceidout, 22,10,@on --ErrorLog,ApplicationName
   EXEC sp_trace_setevent @traceidout, 22,11,@on --ErrorLog,LoginName
   EXEC sp_trace_setevent @traceidout, 22,12,@on --ErrorLog,SPID
   EXEC sp_trace_setevent @traceidout, 22,14,@on --ErrorLog,StartTime
   EXEC sp_trace_setevent @traceidout, 22,20,@on --ErrorLog,Severity
   EXEC sp_trace_setevent @traceidout, 22,26,@on --ErrorLog,ServerName
   EXEC sp_trace_setevent @traceidout, 22,31,@on --ErrorLog,Error
   EXEC sp_trace_setevent @traceidout, 22,35,@on --ErrorLog,DatabaseName
   EXEC sp_trace_setevent @traceidout, 22,41,@on --ErrorLog,LoginSid
   EXEC sp_trace_setevent @traceidout, 22,49,@on --ErrorLog,RequestID
   EXEC sp_trace_setevent @traceidout, 22,51,@on --ErrorLog,EventSequence
   EXEC sp_trace_setevent @traceidout, 22,60,@on --ErrorLog,IsSystem
   EXEC sp_trace_setevent @traceidout, 22,64,@on --ErrorLog,SessionLoginName
   EXEC sp_trace_setevent @traceidout, 46, 3,@on --Object:Created,DatabaseID
   EXEC sp_trace_setevent @traceidout, 46, 4,@on --Object:Created,TransactionID
   EXEC sp_trace_setevent @traceidout, 46, 6,@on --Object:Created,NTUserName
   EXEC sp_trace_setevent @traceidout, 46, 7,@on --Object:Created,NTDomainName
   EXEC sp_trace_setevent @traceidout, 46, 8,@on --Object:Created,HostName
   EXEC sp_trace_setevent @traceidout, 46,9,@on --Object:Created,ClientProcessID
   EXEC sp_trace_setevent @traceidout, 46,10,@on --Object:Created,ApplicationName
   EXEC sp_trace_setevent @traceidout, 46,

Back To Top ^

sp_AddMyLogonTrace

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

CREATE PROCEDURE [dbo].[sp_AddMyLogonTrace]    
AS    
  BEGIN    
    SET NOCOUNT ON    
    SET XACT_ABORT ON    
    BEGIN TRAN    
    
    declare @sql varchar(1000)    
    declare @path nvarchar(256)    
    declare @traceidout int    
    declare @maxfilesize bigint    
    declare @maxRolloverFiles int    
    declare @on bit    
    
    set @on = 1    
    set @maxRolloverFiles = 2    
    set @maxfilesize = 50  --meg    
    
    --we want the current trace folder    
    --ie c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG      
    SELECT @path = REVERSE(SUBSTRING(REVERSE(path),CHARINDEX('\',REVERSE(path)),256)) FROM sys.traces WHERE is_default = 1    
    SET @path = @path + N'MyLogonTrace' --system appends .trc automatically for the filename    
      
    IF EXISTS(SELECT * FROM sys.traces WHERE [path] = @path + '.trc')    
      BEGIN    
        --if it exists, turn it off and try to drop it    
        SELECT @traceidout = id FROM sys.traces WHERE [path] = @path +'.trc'    
        exec sp_trace_setstatus @traceidout, 0 ---stop trace, you must know the traceid to stop it    
        exec sp_trace_setstatus @traceidout, 2 ---close trace you must know the traceid to delete it    
        --the above does not delete the actual trace files...    
        --note the double quotes to allow spaces in file path    
        SET @sql = 'DEL "' + @path + '*.trc"' --other files like sp_DMLTrace.trc,sp_DMLTrace_1.trc,sp_DMLTrace_2.trc may exist as the logs roll over    
        print @sql    
        EXEC master..xp_cmdshell  @sql    
        IF EXISTS(select * from sysobjects where xtype='V' and name='sp_LogonTrace')    
          BEGIN    
            SET @sql = 'DROP VIEW sp_LogonTrace '    
            exec(@sql)    
          END    
        SELECT 'Trace Stopped And Dropped, Files Deleted, View sp_LogonTrace Dropped As Well'    
      END --IF Exists the trace    
    ELSE    
      BEGIN    
      --does not exist, add it!    
      --create the trace    
      exec sp_trace_create @traceidout output, @maxRolloverFiles, @path, @maxfilesize, NULL    
      
      --for the Event Every SQL statement completed, capture all 64 columns of accessible data    
EXEC sp_trace_setevent @traceidout, 14,1, @on   --Audit Login,TextData
EXEC sp_trace_setevent @traceidout, 14,2, @on   --Audit Login,BinaryData
EXEC sp_trace_setevent @traceidout, 14,3, @on   --Audit Login,DatabaseID
EXEC sp_trace_setevent @traceidout, 14,4, @on   --Audit Login,TransactionID
EXEC sp_trace_setevent @traceidout, 14,5, @on   --Audit Login,LineNumber
EXEC sp_trace_setevent @traceidout, 14,6, @on   --Audit Login,NTUserName
EXEC sp_trace_setevent @traceidout, 14,7, @on   --Audit Login,NTDomainName
EXEC sp_trace_setevent @traceidout, 14,8, @on   --Audit Login,HostName
EXEC sp_trace_setevent @traceidout, 14,9, @on   --Audit Login,ClientProcessID
EXEC sp_trace_setevent @traceidout, 14,10, @on   --Audit Login,ApplicationName
EXEC sp_trace_setevent @traceidout, 14,11, @on   --Audit Login,LoginName
EXEC sp_trace_setevent @traceidout, 14,12, @on   --Audit Login,SPID
EXEC sp_trace_setevent @traceidout, 14,13, @on   --Audit Login,Duration
EXEC sp_trace_setevent @traceidout, 14,14, @on   --Audit Login,StartTime
EXEC sp_trace_setevent @traceidout, 14,15, @on   --Audit Login,EndTime
EXEC sp_trace_setevent @traceidout, 14,16, @on   --Audit Login,Reads
EXEC sp_trace_setevent @traceidout, 14,17, @on   --Audit Login,Writes
EXEC sp_trace_setevent @traceidout, 14,18, @on   --Audit Login,CPU
EXEC sp_trace_setevent @traceidout, 14,19, @on   --Audit Login,Permissions
EXEC sp_trace_setevent @traceidout, 14,20, @on   --Audit Login,Severity
EXEC sp_trace_setevent @traceidout, 14,21, @on   --Audit Login,EventSubClass
EXEC sp_trace_setevent @traceidout, 14,22, @on   --Audit Login,ObjectID
EXEC sp_trace_setevent @traceidout, 14,23, @on   --Audit Login,Success
EXEC sp_trace_setevent @traceidout, 14,24, @on   --Audit Login,IndexID
EXEC sp_trace_setevent @traceidout, 14,25, @on   --Audit Login,IntegerData
EXEC sp_trace_setevent @traceidout, 14,26, @on   --Audit Login,ServerName
EXEC sp_trace_setevent @traceidout, 14,27, @on   --Audit Login,EventClass
EXEC sp_trace_setevent @traceidout, 14,28, @on   --Audit Login,ObjectType
EXEC sp_trace_setevent @traceidout, 14,29, @on   --Audit Login,NestLevel
EXEC sp_trace_setevent @traceidout, 14,30, @on   --Audit Login,State
EXEC sp_trace_setevent @traceidout, 14,31, @on   --Audit Login,Error
EXEC sp_trace_setevent @traceidout, 14,32, @on   --Audit Login,Mode
EXEC sp_trace_setevent @traceidout, 14,33, @on   --Audit Login,Handle
EXEC sp_trace_setevent @traceidout, 14,34, @on   --Audit Login,ObjectName
EXEC sp_trace_setevent @traceidout, 14,35, @on   --Audit Login,DatabaseName
EXEC sp_trace_setevent @traceidout, 14,36, @on   --Audit Login,FileName
EXEC sp_trace_setevent @traceidout, 14,37, @on   --Audit Login,OwnerName
EXEC sp_trace_setevent @traceidout, 14,38, @on   --Audit Login,RoleName
EXEC sp_trace_setevent @traceidout, 14,39, @on   --Audit Login,TargetUserName
EXEC sp_trace_setevent @traceidout, 14,40, @on   --Audit Login,DBUserName
EXEC sp_trace_setevent @traceidout, 14,41, @on   --Audit Login,LoginSid
EXEC sp_trace_setevent @traceidout, 14,42, @on   --Audit Login,TargetLoginName
EXEC sp_trace_setevent @traceidout, 14,43, @on   --Audit Login,TargetLoginSid
EXEC sp_trace_setevent @traceidout, 14,44, @on   --Audit Login,ColumnPermissions
EXEC sp_trace_setevent @traceidout, 14,45, @on   --Audit Login,LinkedServerName
EXEC sp_trace_setevent @traceidout, 14,46, @on   --Audit Login,ProviderName
EXEC sp_trace_setevent @traceidout, 14,47, @on   --Audit Login,MethodName
EXEC sp_trace_setevent @traceidout, 14,48, @on   --Audit Login,RowCounts
EXEC sp_trace_setevent @traceidout, 14,49, @on   --Audit Login,RequestID
EXEC sp_trace_setevent @traceidout, 14,50, @on   --Audit Login,XactSequence
EXEC sp_trace_setevent @traceidout, 14,51, @on   --Audit Login,EventSequence
EXEC sp_trace_setevent @traceidout, 14,52, @on   --Audit Login,BigintData1
EXEC sp_trace_setevent @traceidout, 14,53, @on   --Audit Login,BigintData2
EXEC sp_trace_setevent @traceidout, 14,54, @on   --Audit Login,GUID
EXEC sp_trace_setevent @traceidout, 14,55, @on   --Audit Login,IntegerData2
EXEC sp_trace_setevent @traceidout, 14,56, @on   --Audit Login,ObjectID2
EXEC sp_trace_setevent @traceidout, 14,57, @on   --Audit Login,Type
EXEC sp_trace_setevent @traceidout, 14,58, @on   --Audit Login,OwnerID
EXEC sp_trace_setevent @traceidout, 14,59, @on   --Audit Login,ParentName
EXEC sp_trace_setevent @traceidout, 14,60, @on   --Audit Login,IsSystem
EXEC sp_trace_setevent @traceidout, 14,61, @on   --Audit Login,Offset
EXEC sp_trace_setevent @traceidout, 14,62, @on   --Audit Login,SourceDatabaseID
EXEC sp_trace_setevent @traceidout, 14,63, @on   --Audit Login,SqlHandle
EXEC sp_trace_setevent @traceidout, 14,64, @on   --Audit Login,SessionLoginName
EXEC sp_trace_setevent @traceidout, 15,1, @on   --Audit Logout,TextData
EXEC sp_trace_setevent @traceidout, 15,2, @on   --Audit Logout,BinaryData
EXEC sp_trace_setevent 

Back To Top ^

sp_CreateTableScript

Parameters  
Input  @TableName  sysname  
Input  @IncludeConstraints  bit  
Input  @IncludeIndexes  bit  
Input  @NewTableName  sysname  
Input  @UseSystemDataTypes  bit  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE PROCEDURE sp_CreateTableScript
    (
                @TableName SYSNAME,
                @IncludeConstraints BIT = 1,
                @IncludeIndexes BIT = 1,
                @NewTableName SYSNAME = NULL,
                @UseSystemDataTypes BIT = 0
    )
    AS
    BEGIN
                SET NOCOUNT ON;
                DECLARE @MainDefinition TABLE
                (
                        FieldValue NVARCHAR(500)
                )
                DECLARE @DBName SYSNAME
                DECLARE @ClusteredPK BIT
                DECLARE @TableSchema NVARCHAR(255)
                SET @DBName = DB_NAME(DB_ID())
                SELECT @TableName = name FROM sysobjects WHERE id = OBJECT_ID(@TableName)
                DECLARE @ShowFields TABLE
                (
                        FieldID INT IDENTITY(1,1),
                        DatabaseName VARCHAR(100),
                        TableOwner VARCHAR(100),
                        TableName VARCHAR(100),
                        FieldName VARCHAR(100),
                        ColumnPosition INT,
                        ColumnDefaultValue VARCHAR(100),
                        ColumnDefaultName VARCHAR(100),
                        IsNullable BIT,
                        DataType VARCHAR(100),
                        MaxLength INT,
                        NumericPrecision INT,
                        NumericScale INT,
                        DomainName VARCHAR(100),
                        FieldListingName VARCHAR(110),
                        FieldDefinition CHAR(1),
                        IdentityColumn BIT,
                        IdentitySeed INT,
                        IdentityIncrement INT,
                        IsCharColumn BIT
                )
                DECLARE @HoldingArea TABLE
                (
                        FldID SMALLINT IDENTITY(1,1),
                        Flds VARCHAR(4000),
                        FldValue CHAR(1) DEFAULT(0)
                )
                DECLARE @PKObjectID TABLE
                (
                        ObjectID INT
                )
                DECLARE @Uniques TABLE
                (
                        ObjectID INT
                )
                DECLARE @HoldingAreaValues TABLE
                (
                        FldID SMALLINT IDENTITY(1,1),
                        Flds VARCHAR(4000),
                        FldValue CHAR(1) DEFAULT(0)
                )
                DECLARE @Definition TABLE
                (
                        DefinitionID SMALLINT IDENTITY(1,1),
                        FieldValue NVARCHAR(500)
                )
                INSERT INTO @ShowFields
                (
                        DatabaseName,
                        TableOwner,
                        TableName,
                        FieldName,
                        ColumnPosition,
                        ColumnDefaultValue,
                        ColumnDefaultName,
                        IsNullable,
                        DataType,
                        MaxLength,
                        NumericPrecision,
                        NumericScale,
                        DomainName,
                        FieldListingName,
                        FieldDefinition,
                        IdentityColumn,
                        IdentitySeed,
                        IdentityIncrement,
                        IsCharColumn
                )
                SELECT
                        DB_NAME(),
                        TABLE_SCHEMA,
                        TABLE_NAME,
                        COLUMN_NAME,
                        CAST(ORDINAL_POSITION AS INT),
                        COLUMN_DEFAULT,
                        dobj.name AS ColumnDefaultName,
                        CASE WHEN c.IS_NULLABLE = 'YES' THEN 1 ELSE 0 END,
                        DATA_TYPE,
                        CAST(CHARACTER_MAXIMUM_LENGTH AS INT),
                        CAST(NUMERIC_PRECISION AS INT),
                        CAST(NUMERIC_SCALE AS INT),
                        DOMAIN_NAME,
                        COLUMN_NAME + ',','' AS FieldDefinition,
                        CASE WHEN ic.object_id IS NULL THEN 0 ELSE 1 END AS IdentityColumn,
                        CAST(ISNULL(ic.seed_value,0) AS INT) AS IdentitySeed,
                        CAST(ISNULL(ic.increment_value,0) AS INT) AS IdentityIncrement,
                        CASE WHEN st.collation_name IS NOT NULL THEN 1 ELSE 0 END AS IsCharColumn
                FROM INFORMATION_SCHEMA.COLUMNS c
                        JOIN sys.columns sc ON c.TABLE_NAME = OBJECT_NAME(sc.object_id) AND c.COLUMN_NAME = sc.Name
                        LEFT JOIN sys.identity_columns ic ON c.TABLE_NAME = OBJECT_NAME(ic.object_id) AND c.COLUMN_NAME = ic.Name
                        JOIN sys.types st ON COALESCE(c.DOMAIN_NAME,c.DATA_TYPE) = st.name
                        LEFT OUTER JOIN sys.objects dobj ON dobj.object_id = sc.default_object_id AND dobj.type = 'D'
                WHERE c.TABLE_NAME = @TableName
                ORDER BY
                c.TABLE_NAME, c.ORDINAL_POSITION
                
                SELECT TOP 1 @TableSchema = TableOwner
                FROM @ShowFields
                
                INSERT INTO @HoldingArea (Flds) VALUES('(')
                
                
                INSERT INTO @Definition(FieldValue)
                VALUES('CREATE TABLE ' + CASE WHEN @NewTableName IS NOT NULL THEN @NewTableName ELSE @TableSchema + '.' + @TableName END)
                
                INSERT INTO @Definition(FieldValue)
                VALUES('(')
                
                INSERT INTO @Definition(FieldValue)
                SELECT
                        CHAR(10) + FieldName + ' ' +
                        CASE
                        WHEN DomainName IS NOT NULL AND @UseSystemDataTypes = 0 THEN
                        DomainName + CASE WHEN IsNullable = 1 THEN ' NULL ' ELSE ' NOT NULL ' END
                        ELSE UPPER(DataType) +
                        CASE WHEN IsCharColumn = 1 THEN '(' + CAST(MaxLength AS VARCHAR(10)) + ')' ELSE '' END +
                        CASE WHEN IdentityColumn = 1 THEN
                        ' IDENTITY(' + CAST(IdentitySeed AS VARCHAR(5))+ ',' + CAST(IdentityIncrement AS VARCHAR(5)) + ')' ELSE '' END +
                        CASE WHEN IsNullable = 1 THEN ' NULL ' ELSE ' NOT NULL ' END +
                        CASE WHEN ColumnDefaultName IS NOT NULL AND @IncludeConstraints = 1 THEN
                        'CONSTRAINT [' + ColumnDefaultName + '] DEFAULT' + UPPER(ColumnDefaultValue) ELSE '' END
                        END +
                        CASE WHEN FieldID = (SELECT MAX(FieldID) FROM @ShowFields) THEN '' ELSE ',' END
                FROM @ShowFields
                
                IF @IncludeConstraints = 1
                BEGIN
                        INSERT INTO @Definition(FieldValue)
                        SELECT
                        ',CONSTRAINT [' + name + '] FOREIGN KEY (' + ParentColum

Back To Top ^

sp_dates

Parameters  
Input  @date  datetime  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
  
CREATE PROCEDURE [dbo].[sp_dates](@date as DATETIME=NULL)      
AS      
BEGIN      
IF @date IS NULL      
SET @date = getdate()      
SELECT CONVERT(VARCHAR,@date,101) AS FormattedDate,'101' AS Code,'SELECT CONVERT(VARCHAR,@date,101)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,102) AS FormattedDate,'102' AS Code,'SELECT CONVERT(VARCHAR,@date,102)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,103) AS FormattedDate,'103' AS Code,'SELECT CONVERT(VARCHAR,@date,103)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,104) AS FormattedDate,'104' AS Code,'SELECT CONVERT(VARCHAR,@date,104)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,105) AS FormattedDate,'105' AS Code,'SELECT CONVERT(VARCHAR,@date,105)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,106) AS FormattedDate,'106' AS Code,'SELECT CONVERT(VARCHAR,@date,106)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,107) AS FormattedDate,'107' AS Code,'SELECT CONVERT(VARCHAR,@date,107)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,108) AS FormattedDate,'108' AS Code,'SELECT CONVERT(VARCHAR,@date,108)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,109) AS FormattedDate,'109' AS Code,'SELECT CONVERT(VARCHAR,@date,109)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,110) AS FormattedDate,'110' AS Code,'SELECT CONVERT(VARCHAR,@date,110)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,111) AS FormattedDate,'111' AS Code,'SELECT CONVERT(VARCHAR,@date,111)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,112) AS FormattedDate,'112' AS Code,'SELECT CONVERT(VARCHAR,@date,112)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,113) AS FormattedDate,'113' AS Code,'SELECT CONVERT(VARCHAR,@date,113)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,114) AS FormattedDate,'114' AS Code,'SELECT CONVERT(VARCHAR,@date,114)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,120) AS FormattedDate,'120' AS Code,'SELECT CONVERT(VARCHAR,@date,120)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,121) AS FormattedDate,'121' AS Code,'SELECT CONVERT(VARCHAR,@date,121)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,126) AS FormattedDate,'126' AS Code,'SELECT CONVERT(VARCHAR,@date,126)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,130) AS FormattedDate,'130' AS Code,'SELECT CONVERT(VARCHAR,@date,130)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,131) AS FormattedDate,'131' AS Code,'SELECT CONVERT(VARCHAR,@date,131)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,112) + '-' + CONVERT(VARCHAR,@date,114) AS FormattedDate,'---' AS Code,'SELECT CONVERT(VARCHAR,@date,112) + ''-'' + CONVERT(VARCHAR,@date,114)' AS SQL UNION      
SELECT CONVERT(VARCHAR,@date,112) + '-' + REPLACE(CONVERT(VARCHAR,@date,108),':','') AS FormattedDate,'---' AS Code,'SELECT CONVERT(VARCHAR,@date,112) + ''-'' + REPLACE(CONVERT(VARCHAR,@date,108),'':'','''')' UNION  
SELECT CONVERT(VARCHAR,@date,112) + '-' + REPLACE(CONVERT(VARCHAR,@date,114),':','') AS FormattedDate,'---' AS Code,'SELECT CONVERT(VARCHAR,@date,112) + ''-'' + REPLACE(CONVERT(VARCHAR,@date,114),'':'','''')' AS SQL       
ORDER BY CODE      
END        

Back To Top ^

sp_dbDocumentation

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE Procedure sp_dbDocumentation
AS
BEGIN
SET NOCOUNT ON
--#############################################################################
--this script produces formatted HTML documentation about the database and all its objects
-- Execute in SSMS
-- Be sure to "use " or make sure of your current database context before running.
-- Save As .html
--#############################################################################
-- USAGE: exec sp_dbDocumentation
--#############################################################################        
-- this script is an enhancement to a contribution found here:
-- http://www.sqlservercentral.com/scripts/Miscellaneous/31005/
-- enhancement by Lowell Izaguirre scripts*at*stormrage.com.        
-- http://www.stormrage.com/SQLStuff/sp_dbDocumentation.txt
-- You can use this however you like...this script is not rocket science, but it took a bit of work to create.    
-- the only thing that I ask       
-- is that if you adapt my procedure or make it better, to simply send me a copy of it,       
-- so I can learn from the things you've enhanced.The feedback you give will be what makes       
-- it worthwhile to me, and will be fed back to the SQL community.      
-- add this to your toolbox of helpful scripts.   
--#############################################################################     
-- important! note that this script has a dependancy to sp_GetDDL !!!!!!
-- http://www.stormrage.com/SQLStuff/sp_GetDDL_Latest.txt
--#############################################################################     
-- if you are going to put this in MASTER, and want it to be able to query     
-- each database's sys.indexes, you MUST mark it as a system procedure:    
-- both procs are required!
-- EXECUTE sp_ms_marksystemobject 'sp_GetDDL'    
-- EXECUTE sp_ms_marksystemobject 'sp_dbDocumentation'    
--#############################################################################   
CREATE TABLE #Results(ResultsID int identity(1,1),ResultsText varchar(max) )

DECLARE @table_id int
DECLARE @TableName varchar(300)
DECLARE @QuotedTableName varchar(300)
DECLARE @strHTML varchar(8000)
DECLARE @strHTML1 varchar(8000)
DECLARE @ColumnName varchar(200)
DECLARE @ColumnType varchar(200)
DECLARE @ColumnLength smallint
DECLARE @ColumnComments sql_variant
DECLARE @ColumnPrec smallint
DECLARE @ColumnScale int
DECLARE @ColumnCollation varchar(200)

DECLARE @CType sysname
DECLARE @CName sysname
DECLARE @CPKTable sysname
DECLARE @CPKColumn sysname
DECLARE @CFKTable sysname
DECLARE @CFKColumn sysname
DECLARE @CKey smallint
DECLARE @CDefault varchar(4000)
DECLARE @Populated bit

DECLARE @IDesc varchar(60)
DECLARE @IRows varchar(11)
DECLARE @IReserved varchar(11)
DECLARE @IData varchar(11)
DECLARE @IIndex varchar(11)
DECLARE @IRowData varchar(11)
DECLARE @SetOption bit
DECLARE @databasename varchar(30)
DECLARE @orderCol varchar(30)
DECLARE @numeric bit

DECLARE @Trigger varchar(50)
DECLARE @DBPath varchar(500)

DECLARE @ViewName varchar(200)
DECLARE @ViewTableDep varchar(200)
DECLARE @ViewColDep varchar(200)
DECLARE @ViewColDepType varchar(200)
DECLARE @ViewColDepLength smallint
DECLARE @ViewColDepPrec smallint
DECLARE @ViewColDepScale int
DECLARE @ViewColDepCollation varchar(200)

DECLARE @SPName varchar(200)
DECLARE @SPTableDep varchar(200)
DECLARE @SPColDep varchar(200)
DECLARE @SPColDepType varchar(200)
DECLARE @SPColDepLength smallint
DECLARE @SPColDepPrec smallint
DECLARE @SPColDepScale int
DECLARE @SPColDepCollation varchar(200)

DECLARE @ParamName sysname
DECLARE @ParamDataType varchar(50)
DECLARE @ParamType varchar(11)

DECLARE @DBLastBackup smalldatetime
DECLARE @DBLastBackupDays int

DECLARE @UserLogin varchar(30)
DECLARE @UserName varchar(30)
DECLARE @UserGroup varchar(30)

declare @results table(results varchar(max) )
--initialize HTML string
SET @strHTML = ''

SELECT @strHTML = @strHTML + '' + db_Name() + ' Database Definition>TD.Sub{FONT-WEIGHT:bold;BORDER-BOTTOM: 0pt solid #000000;BORDER-LEFT: 1pt solid #000000;BORDER-RIGHT: 0pt solid #000000;BORDER-TOP: 0pt solid #000000; FONT-FAMILY: Tahoma;FONT-SIZE: 8pt} BODY{FONT-FAMILY: Tahoma;FONT-SIZE: 8pt} TABLE{BORDER-BOTTOM: 1pt solid #000000;BORDER-LEFT: 0pt solid #000000;BORDER-RIGHT: 1pt solid #000000;BORDER-TOP: 0pt solid #000000; FONT-FAMILY: Tahoma;FONT-SIZE: 8pt} TD{BORDER-BOTTOM: 0pt solid #000000;BORDER-LEFT: 1pt solid #000000;BORDER-RIGHT: 0pt solid #000000;BORDER-TOP: 1pt solid #000000; FONT-FAMILY: Tahoma;FONT-SIZE: 8pt} TD.Title{FONT-WEIGHT:bold;BORDER-BOTTOM: 0pt solid #000000;BORDER-LEFT: 1pt solid #000000;BORDER-RIGHT: 0pt solid #000000;BORDER-TOP: 1pt solid #000000; FONT-FAMILY: Tahoma;FONT-SIZE: 12pt} A.Index{FONT-WEIGHT:bold;FONT-SIZE:8pt;COLOR:#000099;FONT-FAMILY:Tahoma;TEXT-DECORATION:none} A.Index:HOVER{FONT-WEIGHT:bold;FONT-SIZE:8pt;COLOR:#990000;FONT-FAMILY:Tahoma;TEXT-DECORATION:none}
'

insert into #Results (ResultsText) SELECT  @strHTML

SELECT @DBPath = (SELECT [filename] FROM master..sysdatabases WHERE [name] = db_Name())

SELECT @strHTML = '
' + db_name() + ' Database Definition

'

insert into #Results (ResultsText) SELECT  @strHTML

insert into #Results (ResultsText) SELECT  '
SERVER SETTINGS  |  DATABASE SETTINGS  |  USERS  |  TABLES  |  VIEWS  |  STORED PROCEDURES  |  FUNCTIONS

'
--#############################################################################
--Table Of Contents
--#############################################################################
  SET NOCOUNT ON

  SELECT @orderCol = 'Description'

  SELECT @DatabaseName = db_name()
  SELECT @numeric = 1

  IF @DatabaseName <> 'Master' AND NOT EXISTS (SELECT 1 FROM master..sysdatabases WHERE name = @DatabaseName AND (status & 4) = 4)
    BEGIN
      EXEC sp_dboption @databaseName ,'SELECT into/bulkcopy', 'true'
      SELECT @SetOption = 1
    END

  IF EXISTS (SELECT 1 FROM master.sys.objects WHERE name = 'space1')
    DROP TABLE master..space1
  CREATE TABLE master..Space1 (name varchar(60), rows varchar(11), reserved varchar(11), data varchar(11), index_size varchar(11), unused varchar(11))

  DECLARE @Cmd varchar(255)
  DECLARE cSpace CURSOR FOR
  SELECT 'USE ' + @DatabaseName + ' INSERT into master..space1 EXEC sp_spaceUsed ''[' + u.name + '].[' + o.name + ']'''
    FROM sysobjects o
    JOIN sysusers u on u.uid = o.uid
    WHERE type = 'U'
    AND o.name <> 'Space1'

  OPEN cSPACE
  FETCH cSpace INTO @Cmd
  WHILE @@FETCH_STATUS =0
    BEGIN
      --  PRINT @Cmd
      EXECUTE (@Cmd)
      FETCH cSpace INTO @Cmd
    END
  DEALLOCATE cSPace

  DECLARE cursor_index CURSOR FOR
    SELECT Descr

Back To Top ^

sp_export_all_simple

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
--#############################################################################
--if you are going to put this in MASTER, and want it to be able to query
--each database's sys.* tables like sys.objects, sys.columns, etc , you MUST mark it as a system procedure:
--EXECUTE sp_ms_marksystemobject 'sp_export_all_simple'
--#############################################################################

CREATE PROCEDURE sp_export_all_simple
AS
BEGIN
  SET NOCOUNT ON
  CREATE TABLE #MyObjectHierarchy 
   (
    HID int identity(1,1) not null primary key,
    ObjectId int,
    TYPE int,OBJECTTYPE AS CASE 
                             WHEN TYPE =  1 THEN 'FUNCTION' 
                             WHEN TYPE =  4 THEN 'VIEW' 
                             WHEN TYPE =  8 THEN 'TABLE' 
                             WHEN TYPE = 16 THEN 'PROCEDURE'
                             WHEN TYPE =128 THEN 'RULE'
                             ELSE ''
                           END,
   ONAME varchar(255), 
   OOWNER varchar(255), 
   SEQ int
   )
 
  --our results table
  CREATE TABLE #Results(ResultsID int identity(1,1) not null,ResultsText varchar(max) )
  --our list of objects in dependancy order
  INSERT #MyObjectHierarchy (TYPE,ONAME,OOWNER,SEQ)
    EXEC sp_msdependencies @intrans = 1 

 Update #MyObjectHierarchy SET ObjectId = object_id(OOWNER + '.' + ONAME)
  --synonyms are object type 1 Function?!?!...gotta remove them
  DELETE FROM #MyObjectHierarchy WHERE objectid in(
    SELECT [object_id] FROM sys.synonyms UNION ALL
    SELECT [object_id] FROM master.sys.synonyms)
  DECLARE
    @schemaname     varchar(255),
    @objname        varchar(255),
    @objecttype     varchar(20),
    @FullObjectName varchar(510)

  DECLARE cur1 CURSOR FOR 
    SELECT OOWNER,ONAME,OBJECTTYPE FROM #MyObjectHierarchy ORDER BY HID
  OPEN cur1
  FETCH NEXT FROM cur1 INTO @schemaname,@objname,@objecttype
  WHILE @@fetch_status <> -1
 BEGIN
       SET @FullObjectName = @schemaname + '.' + @objname
       IF @objecttype = 'TABLE'
         BEGIN
           INSERT INTO #Results(ResultsText)
             EXEC sp_getddla @FullObjectName
          END
        ELSE IF @objecttype IN('VIEW','FUNCTION','PROCEDURE')--it's a FUNCTION/PROC/VIEW
          BEGIN
            --ALTER PROC/FUN/VIEW object needs a GO statement
            INSERT INTO #Results(ResultsText)
              SELECT 'GO'
            INSERT INTO #Results(ResultsText)
              EXEC sp_helptext @FullObjectName
          END
  
    FETCH NEXT FROM cur1 INTO @schemaname,@objname,@objecttype
  END
    CLOSE cur1
    DEALLOCATE cur1
  SELECT ResultsText FROM #Results ORDER BY ResultsID
END
 

Back To Top ^

sp_find

Parameters  
Input  @findcolumn  varchar (50)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
  
CREATE PROCEDURE [dbo].[sp_find]                    
  @findcolumn varchar(50)                    
AS                    
BEGIN                    
 SET NOCOUNT ON         
         
 SELECT     
   TableFound,     
   ColumnFound     
 FROM       
   (           
    SELECT     
      1 AS SortOrder,    
      sysobjects.name AS TableFound,    
      '' AS ColumnFound                  
    FROM sysobjects      
    WHERE sysobjects.xtype IN('U' ,'V')       
      AND sysobjects.name LIKE '%' + @findcolumn + '%'      
    UNION ALL       
    SELECT     
      2 AS SortOrder,    
      sysobjects.name AS TableFound,    
      syscolumns.name AS ColumnFound                  
    FROM sysobjects                   
      INNER JOIN syscolumns ON sysobjects.id=syscolumns.id                  
    WHERE sysobjects.xtype IN('U' ,'V')               
      AND syscolumns.name like '%' + @findcolumn + '%'         
   )  X           
   ORDER BY       
     SortOrder,    
     TableFound,    
     ColumnFound                  
END   

Back To Top ^

sp_help_revlogin

Parameters  
Input  @login_name  sysname  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
sp_hexadecimal              
CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
DECLARE @name sysname
DECLARE @type varchar (1)
DECLARE @hasaccess int
DECLARE @denylogin int
DECLARE @is_disabled int
DECLARE @PWD_varbinary  varbinary (256)
DECLARE @PWD_string  varchar (514)
DECLARE @SID_varbinary varbinary (85)
DECLARE @SID_string varchar (514)
DECLARE @tmpstr  varchar (1024)
DECLARE @is_policy_checked varchar (3)
DECLARE @is_expiration_checked varchar (3)
IF (@login_name IS NULL)
  DECLARE login_curs CURSOR FOR
      SELECT p.sid, p.name, p.type, p.is_disabled, l.hasaccess, l.denylogin
        FROM sys.server_principals p LEFT JOIN sys.syslogins l ON ( l.name = p.name )
        WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'
ELSE
  DECLARE login_curs CURSOR FOR
      SELECT p.sid, p.name, p.type, p.is_disabled, l.hasaccess, l.denylogin
        FROM sys.server_principals p LEFT JOIN sys.syslogins l ON ( l.name = p.name )
        WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
OPEN login_curs
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @hasaccess, @denylogin
IF (@@fetch_status = -1)
BEGIN
  PRINT 'No login(s) found.'
  CLOSE login_curs
  DEALLOCATE login_curs
  RETURN -1
END
SET @tmpstr = '/* sp_help_revlogin script '
PRINT @tmpstr
SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
PRINT @tmpstr
WHILE (@@fetch_status <> -1)
BEGIN
  IF (@@fetch_status <> -2)
  BEGIN
    SET @tmpstr = '-- Login: ' + @name
    PRINT @tmpstr
    IF (@type IN ( 'G', 'U'))
    BEGIN -- NT authenticated account/group
      SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS'
    END
    ELSE BEGIN -- SQL Server authentication
        -- obtain password and sid
        SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )
        EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
        EXEC sp_hexadecimal @SID_varbinary, @SID_string OUT
        -- obtain password policy state
        SELECT @is_policy_checked = 
            CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END
            FROM sys.sql_logins WHERE name = @name
        SELECT @is_expiration_checked =
            CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END
            FROM sys.sql_logins WHERE name = @name
        SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name )
            + ' WITH PASSWORD = ' + @PWD_string
            + ' HASHED, SID = ' + @SID_string
        IF ( @is_policy_checked IS NOT NULL )
        BEGIN
          SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
        END
        IF ( @is_expiration_checked IS NOT NULL )
        BEGIN
          SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
        END
    END
    IF (@denylogin = 1)
    BEGIN -- login is denied access
      SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
    END
    ELSE IF (@hasaccess = 0)
    BEGIN -- login has exists but does not have access
      SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
    END
 
    IF (@is_disabled = 1)
    BEGIN -- login is disabled
      SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
    END
 
    PRINT @tmpstr
  END
  FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @hasaccess, @denylogin
  END
CLOSE login_curs
DEALLOCATE login_curs
 
RETURN 0
 

Back To Top ^

sp_helpweb

Parameters  
Input  @objname  nvarchar (776)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
spt_values  name  nvarchar  70  35    SQL_Latin1_General_CP1_CI_AS  
spt_values  type  nchar  6  3    SQL_Latin1_General_CP1_CI_AS  
--sp_help Tally
--sp_helpweb Tally
--sp_help sp_helpweb
--sp_helpweb sp_helpweb
--select object_id('sp_helpweb')
CREATE PROCEDURE dbo.SP_HELPWEB @objname NVARCHAR(776) = NULL -- object name we're after    
AS
  BEGIN
    -- PRELIMINARY    
    SET nocount ON

    DECLARE
      @dbname SYSNAME,
      @no     VARCHAR(35),
      @yes    VARCHAR(35),
      @none   VARCHAR(35)

    SELECT @no = 'no',
           @yes = 'yes',
           @none = 'none'

    DECLARE @Results TABLE(
      ID          INT IDENTITY(1, 1) NOT NULL PRIMARY KEY,
      ResultsText VARCHAR(8000))

    IF @objname IS NULL
      BEGIN
        INSERT INTO @Results
                    (ResultsText)
        SELECT CONVERT(CHAR(50), 'A Table or Object must be specificed for sp_helpweb.')

        SELECT *
        FROM   @Results

        RETURN( 0 )
      END

    -- Make sure the @objname is local to the current database. 
    SELECT @dbname = PARSENAME(@objname, 3)

    IF @dbname IS NULL
      SELECT @dbname = DB_NAME()
    ELSE
      IF @dbname <> DB_NAME()
        BEGIN
          INSERT INTO @Results
                      (ResultsText)
          SELECT 'the @objname must be local to the current database, cross database queries or 3 part naming conventions are not permitted for sp_helpweb.'

          SELECT *
          FROM   @Results

          RETURN( 1 )
        END

    -- @objname must be either sysobjects or systypes: first look in sysobjects  
    DECLARE @objid INT
    DECLARE @sysobj_type CHAR(2)

    SELECT @objid = object_id,
           @sysobj_type = type
    FROM   sys.all_objects
    WHERE  object_id = OBJECT_ID(@objname)

    -- IF NOT IN SYSOBJECTS, TRY SYSTYPES --  
    IF @objid IS NULL
      BEGIN
        -- UNDONE: SHOULD CHECK FOR AND DISALLOW MULTI-PART NAME  
        SELECT @objid = TYPE_ID(@objname)

        -- IF NOT IN SYSTYPES, GIVE UP  
        IF @objid IS NULL
          BEGIN
            INSERT INTO @Results
                        (ResultsText)
            SELECT 'the object_id for ' + @objname + ' was not found and connot be described via  sp_helpweb.'

            SELECT *
            FROM   @Results

            RETURN( 1 )
          END
      END

    -- FOUND IT IN SYSOBJECT, SO GIVE OBJECT INFO  
    INSERT INTO @Results
                (ResultsText)
    SELECT CONVERT(CHAR(50), 'Name') + '|' + CONVERT(CHAR(50), 'Owner') + '|' + CONVERT(CHAR(50), 'Type') + CONVERT(CHAR(50), 'Created_datetime')

    INSERT INTO @Results
                (ResultsText)
    SELECT CONVERT(CHAR(50), o.name) + '|' + CONVERT(CHAR(50), USER_NAME(OBJECTPROPERTY( object_id, 'ownerid'))) + '|' + CONVERT(CHAR(50), SUBSTRING(v.name, 5, 31)) + '|' + CONVERT(CHAR(50), o.create_date)
    FROM   sys.all_objects o,
           master.dbo.spt_values v
    WHERE  o.object_id = @objid
       AND o.type = SUBSTRING(v.name, 1, 2) COLLATE database_default
       AND v.type = 'O9T'
    ORDER  BY
      o.name ASC

    INSERT INTO @Results
                (ResultsText)
    SELECT REPLICATE('-', 100)

    -- DISPLAY COLUMN IF TABLE / VIEW  
    IF EXISTS (SELECT *
               FROM   sys.all_columns
               WHERE  object_id = @objid)
      BEGIN
        -- SET UP NUMERIC TYPES: THESE WILL HAVE NON-BLANK PREC/SCALE  
        DECLARE @numtypes NVARCHAR(80)

        SELECT @numtypes = N'tinyint,smallint,decimal,int,real,money,float,numeric,smallmoney'

        -- INFO FOR EACH COLUMN  
        INSERT INTO @Results
                    (ResultsText)
        SELECT CONVERT(CHAR(50), 'Column_name') + '|' + CONVERT(CHAR(16), 'Type') + '|' + CONVERT(CHAR(8), 'Computed') + '|' + CONVERT(CHAR(8), 'Length') + '|' + CONVERT(CHAR(8), 'Prec') + '|' + CONVERT(CHAR(8), 'Scale') + '|' + CONVERT(CHAR(8), 'Nullable') + '|' + CONVERT(CHAR(18), 'TrimTrailingBlanks') + '|' + CONVERT(CHAR(20), 'FixedLenNullInSource') + '|' + CONVERT(CHAR(20), 'Collation')

        INSERT INTO @Results
                    (ResultsText)
        SELECT CONVERT(CHAR(50), name) + '|' + CONVERT(CHAR(16), TYPE_NAME(user_type_id)) + '|' + CONVERT(CHAR(8), CASE WHEN COLUMNPROPERTY(object_id, name, 'IsComputed') = 0 THEN @no ELSE @yes END) + '|' + CONVERT(CHAR(8), CONVERT(INT, max_length)) + '|' + CONVERT(CHAR(8), CASE WHEN CHARINDEX(TYPE_NAME(system_type_id), @numtypes) > 0 THEN CONVERT(CHAR(5), COLUMNPROPERTY(object_id, name, 'precision')) ELSE '     ' END) + '|' + CONVERT(CHAR(8), CASE WHEN CHARINDEX(TYPE_NAME(system_type_id), @numtypes) > 0 THEN CONVERT(CHAR(5), ODBCSCALE(system_type_id, scale)) ELSE '     ' END) + '|' + CONVERT(CHAR(8), CASE WHEN is_nullable = 0 THEN @no ELSE @yes END) + '|' + CONVERT(CHAR(18), CASE COLUMNPROPERTY(object_id, name, 'UsesAnsiTrim') WHEN 1 THEN @no WHEN 0 THEN @yes ELSE '(n/a)' END) + '|' + CONVERT(CHAR(20), CASE WHEN TYPE_NAME(system_type_id) NOT IN ('varbinary', 'varchar', 'binary', 'char') THEN '(n/a)' WHEN is_nullable = 0 THEN @no ELSE @yes END) + '|' +
                      CONVERT(CHAR(20), ISNULL(collation_name, 'NULL'))
        FROM   sys.all_columns
        WHERE  object_id = @objid

        INSERT INTO @Results
                    (ResultsText)
        SELECT REPLICATE('-', 100)
      END --if exists sys.columns    
    IF @sysobj_type IN ( 'S ', 'U ', 'V ', 'TF' )
       AND @objid > 0
      BEGIN
        DECLARE @colname SYSNAME

        SELECT @colname = COL_NAME(@objid, column_id)
        FROM   sys.identity_columns
        WHERE  object_id = @objid

        -- IDENTITY COLUMN? 
        INSERT INTO @Results
                    (ResultsText)
        SELECT CONVERT(CHAR(27), 'Identity') + '|' + CONVERT(CHAR(4), 'Seed') + '|' + CONVERT(CHAR(9), 'Increment') + '|' + CONVERT(CHAR(20), 'Not For Replication')

        INSERT INTO @Results
                    (ResultsText)
        SELECT +CONVERT(CHAR(27), ISNULL(@colname, 'No identity column defined.')) + '|' + CONVERT(CHAR(4), IDENT_SEED(@objname)) + '|' + CONVERT(CHAR(9), IDENT_INCR(@objname)) + '|' + CONVERT(CHAR(20), COLUMNPROPERTY(@objid, @colname, 'IsIDNotForRepl'))

        INSERT INTO @Results
                    (ResultsText)
        SELECT REPLICATE('-', 100)

        -- ROWGUIDCOL?  
        SELECT @colname = NULL

        SELECT @colname = name
        FROM   sys.columns
        WHERE  object_id = @objid
           AND is_rowguidcol = 1

        INSERT INTO @Results
                    (ResultsText)
        SELECT CONVERT(CHAR(30), 'RowGuidCol')

        INSERT INTO @Results
                    (ResultsText)
        SELECT CONVERT(CHAR(30), ISNULL(@colname, 'No rowguidcol column defined.'))

        INSERT INTO @Results
                    (ResultsText)
        SELECT REPLICATE('-', 100)

        IF EXISTS (SELECT *
                   FROM   sys.all_parameters
                   WHERE  object_id = @objid)
          BEGIN
            INSERT INTO @Results
                        (ResultsText)
            SELECT CONVERT(CHAR(50), 'Parameter_name') + '|' + CO

Back To Top ^

SP_HELPWEB2

Parameters  
Input  @objname  nvarchar (776)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
spt_values  name  nvarchar  70  35    SQL_Latin1_General_CP1_CI_AS  
spt_values  type  nchar  6  3    SQL_Latin1_General_CP1_CI_AS  
--sp_help Tally
--sp_helpweb2 Tally
--sp_help sp_helpweb
--sp_helpweb sp_helpweb
--select object_id('sp_helpweb')
CREATE PROCEDURE dbo.SP_HELPWEB2 @objname NVARCHAR(776) = NULL -- object name we're after    
AS
  BEGIN
    -- PRELIMINARY    
    SET nocount ON

    DECLARE
      @dbname SYSNAME,
      @no     VARCHAR(35),
      @yes    VARCHAR(35),
      @none   VARCHAR(35)

    SELECT @no = 'no',@yes = 'yes',@none = 'none'

    DECLARE @Results TABLE(
      ID          INT IDENTITY(1, 1) NOT NULL PRIMARY KEY,
      ResultsText VARCHAR(8000))

    IF @objname IS NULL
      BEGIN
        ---- DISPLAY ALL SYSOBJECTS -- 
        --INSERT INTO @Results(ResultsText)
        --SELECT CONVERT(CHAR(50) ,'Name') + '|' + CONVERT(CHAR(20) ,'Owner') + '|' + CONVERT(CHAR(30) ,'Object_type')
        --INSERT INTO @Results(ResultsText)
        --select  
        --    CONVERT(CHAR(50),o.name) + '|' 
        --    + CONVERT(CHAR(20) ,user_name(ObjectProperty( object_id, 'ownerid'))) + '|' 
        --    + CONVERT(CHAR(30) ,substring(v.name,5,31))  
        --from sys.all_objects o, master.dbo.spt_values v  
        --where o.type = substring(v.name,1,2) collate database_default and v.type = 'O9T'  
        --order by o.name asc,user_name(ObjectProperty( object_id, 'ownerid'))) desc, substring(v.name,5,31) asc  
        
        -- OPPOSITE Logic of sp_help: DISPLAY ALL SYSOBJECTS -- 
        INSERT INTO @Results(ResultsText)
        SELECT CONVERT(CHAR(50), 'A Table or Object must be specificed for sp_helpweb.')

        SELECT * FROM   @Results

        RETURN( 0 )
      END

    -- Make sure the @objname is local to the current database. 
    SELECT @dbname = PARSENAME(@objname, 3)

    IF @dbname IS NULL
      SELECT @dbname = DB_NAME()
    ELSE
      IF @dbname <> DB_NAME()
        BEGIN
          INSERT INTO @Results(ResultsText)
            SELECT 'the @objname must be local to the current database, cross database queries or 3 part naming conventions are not permitted for sp_helpweb.'
          SELECT * FROM   @Results
          RETURN( 1 )
        END

    -- @objname must be either sysobjects or systypes: first look in sysobjects  
    DECLARE @objid INT
    DECLARE @sysobj_type CHAR(2)

    SELECT @objid = object_id,
           @sysobj_type = type
    FROM   sys.all_objects
    WHERE  object_id = OBJECT_ID(@objname)

    -- IF NOT IN SYSOBJECTS, TRY SYSTYPES --  
    IF @objid IS NULL
      BEGIN
        -- UNDONE: SHOULD CHECK FOR AND DISALLOW MULTI-PART NAME  
        SELECT @objid = TYPE_ID(@objname)

        -- IF NOT IN SYSTYPES, GIVE UP  
        IF @objid IS NULL
          BEGIN
            INSERT INTO @Results (ResultsText)
            SELECT 'the object_id for ' + @objname + ' was not found and connot be described via  sp_helpweb.'

            SELECT * FROM   @Results

            RETURN( 1 )
          END
      END

    -- FOUND IT IN SYSOBJECT, SO GIVE OBJECT INFO  
    INSERT INTO @Results (ResultsText)
    SELECT CONVERT(CHAR(50), 'Name') + '|' + CONVERT(CHAR(50), 'Owner') + '|' + CONVERT(CHAR(50), 'Type') + CONVERT(CHAR(50), 'Created_datetime')

    INSERT INTO @Results (ResultsText)
    SELECT CONVERT(CHAR(50), o.name) + '|' + CONVERT(CHAR(50), USER_NAME(OBJECTPROPERTY( object_id, 'ownerid'))) + '|' + CONVERT(CHAR(50), SUBSTRING(v.name, 5, 31)) + '|' + CONVERT(CHAR(50), o.create_date)
    FROM   sys.all_objects o,
           master.dbo.spt_values v
    WHERE  o.object_id = @objid
       AND o.type = SUBSTRING(v.name, 1, 2) COLLATE database_default
       AND v.type = 'O9T'
    ORDER  BY
      o.name ASC

    INSERT INTO @Results (ResultsText)
    SELECT REPLICATE('-', 100)

    -- DISPLAY COLUMN IF TABLE / VIEW  
    IF EXISTS (SELECT *
               FROM   sys.all_columns
               WHERE  object_id = @objid)
      BEGIN
        -- SET UP NUMERIC TYPES: THESE WILL HAVE NON-BLANK PREC/SCALE  
        DECLARE @numtypes NVARCHAR(80)

        SELECT @numtypes = N'tinyint,smallint,decimal,int,real,money,float,numeric,smallmoney'

        -- INFO FOR EACH COLUMN  
        INSERT INTO @Results (ResultsText)
        SELECT CONVERT(CHAR(50), 'Column_name') + '|' 
             + CONVERT(CHAR(16), 'Type') + '|' 
             + CONVERT(CHAR(8), 'Computed') + '|' 
             + CONVERT(CHAR(8), 'Length') + '|' 
             + CONVERT(CHAR(8), 'Prec') + '|' 
             + CONVERT(CHAR(8), 'Scale') + '|' 
             + CONVERT(CHAR(8), 'Nullable') + '|' 
             + CONVERT(CHAR(18), 'TrimTrailingBlanks') + '|' 
             + CONVERT(CHAR(20), 'FixedLenNullInSource') + '|' 
             + CONVERT(CHAR(20), 'Collation')

        INSERT INTO @Results (ResultsText)
          SELECT CONVERT(CHAR(50), name) + '|' 
               + CONVERT(CHAR(16), TYPE_NAME(user_type_id)) + '|' 
               + CONVERT(CHAR(8), CASE WHEN COLUMNPROPERTY(object_id, name, 'IsComputed') = 0 THEN @no ELSE @yes END) + '|' 
               + CONVERT(CHAR(8), CONVERT(INT, max_length)) + '|' 
               + CONVERT(CHAR(8), CASE WHEN CHARINDEX(TYPE_NAME(system_type_id), @numtypes) > 0 THEN CONVERT(CHAR(5), COLUMNPROPERTY(object_id, name, 'precision')) ELSE '     ' END) + '|' 
               + CONVERT(CHAR(8), CASE WHEN CHARINDEX(TYPE_NAME(system_type_id), @numtypes) > 0 THEN CONVERT(CHAR(5), ODBCSCALE(system_type_id, scale)) ELSE '     ' END) + '|' 
               + CONVERT(CHAR(8), CASE WHEN is_nullable = 0 THEN @no ELSE @yes END) + '|' 
               + CONVERT(CHAR(18), CASE COLUMNPROPERTY(object_id, name, 'UsesAnsiTrim') WHEN 1 THEN @no WHEN 0 THEN @yes ELSE '(n/a)' END) + '|' 
               + CONVERT(CHAR(20), CASE WHEN TYPE_NAME(system_type_id) NOT IN ('varbinary', 'varchar', 'binary', 'char') THEN '(n/a)' WHEN is_nullable = 0 THEN @no ELSE @yes END) + '|' 
               + CONVERT(CHAR(20), ISNULL(collation_name, 'NULL'))
        FROM   sys.all_columns
        WHERE  object_id = @objid

        INSERT INTO @Results (ResultsText)
          SELECT REPLICATE('-', 100)
      END --if exists sys.columns    
    IF @sysobj_type IN ( 'S ', 'U ', 'V ', 'TF' )
       AND @objid > 0
      BEGIN
        DECLARE @colname SYSNAME

        SELECT @colname = COL_NAME(@objid, column_id)
        FROM   sys.identity_columns
        WHERE  object_id = @objid

        -- IDENTITY COLUMN? 
        INSERT INTO @Results (ResultsText)
          SELECT CONVERT(CHAR(27), 'Identity') + '|' + CONVERT(CHAR(4), 'Seed') + '|' + CONVERT(CHAR(9), 'Increment') + '|' + CONVERT(CHAR(20), 'Not For Replication')

        INSERT INTO @Results (ResultsText)
          SELECT +CONVERT(CHAR(27), ISNULL(@colname, 'No identity column defined.')) + '|' + CONVERT(CHAR(4), IDENT_SEED(@objname)) + '|' + CONVERT(CHAR(9), IDENT_INCR(@objname)) + '|' + CONVERT(CHAR(20), COLUMNPROPERTY(@objid, @colname, 'IsIDNotForRepl'))

        INSERT INTO @Results (ResultsText)
          SELECT REPLICATE('-', 100)

        -- ROWGUIDCOL?  
        SELECT @colname = NULL

        SELECT @colname = name
    

Back To Top ^

sp_hexadecimal

Parameters  
Input  @binvalue  varbinary  
Output  @hexvalue  varchar (514)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE PROCEDURE sp_hexadecimal
    @binvalue varbinary(256),
    @hexvalue varchar (514) OUTPUT
AS
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
  DECLARE @tempint int
  DECLARE @firstint int
  DECLARE @secondint int
  SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
  SELECT @firstint = FLOOR(@tempint/16)
  SELECT @secondint = @tempint - (@firstint*16)
  SELECT @charvalue = @charvalue +
    SUBSTRING(@hexstring, @firstint+1, 1) +
    SUBSTRING(@hexstring, @secondint+1, 1)
  SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
 

Back To Top ^

sp_Kill

Parameters  
Input  @DBNAME  varchar (30)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
--enhanced 02/04/2005 to also list hostname               
CREATE PROCEDURE sp_Kill              
 @DBNAME VARCHAR(30)              
--Stored procedure to Delete SQL Process              
              
AS              
BEGIN              
SET NOCOUNT ON              
 DECLARE @SPID INT              
 DECLARE @STR NVARCHAR(50)              
 DECLARE @HOSTNAME NVARCHAR(50)              
 DECLARE @DBID INT          
          
 CREATE TABLE #TMPLOG (           
   SPID INT,              
   ECID INT,              
   STATUS VARCHAR(50),              
   LOGINAME VARCHAR(255),              
   HOSTNAME VARCHAR(50),              
   BLK INT,              
   DBNAME VARCHAR(30),              
   CMD VARCHAR(100) ,        
   RID INT,             
 )              
              
 select @DBID=db_id(@DBNAME)           
IF @DBID IS NULL          
PRINT 'No database exists with the name ' +   @DBNAME + ', Check the Spelling of the db.'          
 INSERT INTO #TMPLOG EXEC SP_WHO    
 --do not even try to kill spids that are SQL server itself.  
 DELETE FROM #TMPLOG WHERE SPID < 50           
 IF @@ERROR <> 0 GOTO Error_Handle              
              
 DECLARE CURPROCESSID CURSOR FOR SELECT SPID FROM #TMPLOG              
  WHERE DBNAME LIKE @DBNAME              
 OPEN CURPROCESSID              
              
 FETCH NEXT FROM CURPROCESSID INTO @SPID              
 SELECT @HOSTNAME=HOSTNAME FROM #TMPLOG WHERE SPID=@SPID              
 IF @SPID IS NOT NULL              
  PRINT 'Spid Process Kill List For database: ' + @dbName              
 ELSE              
  PRINT 'NO Processes Exist to be killed on database ' + @dbName              
              
 WHILE @@FETCH_STATUS = 0               
 BEGIN              
  IF @SPID = @@SPID      
    BEGIN      
      PRINT 'Cannot kill your own SPID, skipping ' + convert(varchar,@spid) + ' - ' + @HOSTNAME          
    END      
  ELSE      
    BEGIN      
      SET @STR = 'KILL ' + CONVERT(VARCHAR,@SPID)              
      EXEC SP_EXECUTESQL @STR               
              
      PRINT convert(varchar,@spid) + ' - ' + @HOSTNAME              
                
            
    END            
        
  IF @@ERROR <> 0 GOTO ERROR_HANDLE               
  FETCH NEXT FROM CURPROCESSID INTO @SPID              
 END              
              
              
Error_Handle:              
 IF @@ERROR <> 0 PRINT 'Error killing process - ' +  convert(varchar,@spid) + ' - ' + @HOSTNAME              
              
drop table #tmpLog              
SET NOCOUNT OFF              
END              
              
              
              
              
              
            
            
            
          

Back To Top ^

sp_Kill2

Parameters  
Input  @DBNAME  varchar (30)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE PROCEDURE sp_Kill2      
 @DBNAME VARCHAR(30)              
AS              
BEGIN              
  SET NOCOUNT ON    
  DECLARE @DBID INT 
           
  SELECT @DBID=DB_ID(@DBNAME)           
  IF @DBID IS NULL          
    BEGIN
      PRINT 'No database exists with the name ' +   @DBNAME + ', Check the Spelling of the db.'   
      RETURN 1       
    END
  IF EXISTS(SELECT * FROM sys.databases WHERE name = @DBNAME  AND user_access_desc = 'MULTI_USER')
  BEGIN
    DECLARE @sql varchar(2000)  
      SET @sql = 'ALTER DATABASE ' 
                 + quotename(@DBNAME) 
                 + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'
      PRINT @sql
      EXEC(@sql)
    END
  ELSE IF EXISTS(SELECT * FROM sys.databases WHERE name = @DBNAME  AND user_access_desc <> 'MULTI_USER')
    BEGIN
      SET @sql = 'ALTER DATABASE ' 
                 + quotename(@DBNAME) 
                 + ' SET MULTI_USER' 
      PRINT @sql
      EXEC(@sql) 
    END
END --PROC
 

Back To Top ^

sp_lmgtfu

Parameters  
Input  @q  varchar (500)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
URLEncode    varchar  4000  4000    SQL_Latin1_General_CP1_CI_AS  
CREATE PROCEDURE sp_lmgtfu (@q varchar(500))
AS          
SELECT
  '[b][url=http://www.lmgtfy.com/?q=' + dbo.URLENCODE(LTRIM(RTRIM(@q))) + '&l=1]' + @q + '[/url][/b]' AS cmd  

Back To Top ^

sp_lmgtfy

Parameters  
Input  @q  varchar (500)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
URLEncode    varchar  4000  4000    SQL_Latin1_General_CP1_CI_AS  
CREATE PROCEDURE sp_lmgtfy (@q varchar(500))
AS          
SELECT
  '[b][url=http://www.lmgtfy.com/?q=' + dbo.URLENCODE(@q) + '&l=1]' + @q + '[/url][/b]' AS cmd  

Back To Top ^

sp_RowCount

Parameters  
Input  @tbname  sysname  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
--SET XACT_ABORT ON  --BEGIN TRAN CREATE PROCEDURE sp_RowCount(@tbname sysname) AS --declare @tbname sysname --SET @tbname = 'ZIP_TRACT_092010' SELECT so.[name] as [table name]
     , CASE WHEN si.indid between 1 and 254
            THEN si.[name] ELSE NULL END 
            AS [Index Name]
     , si.indid, rows
     FROM sys.sysindexes si
          INNER JOIN sysobjects so
             ON si.id = so.id
     WHERE si.indid < 2 
       AND so.[name] = @tbname
       AND so.type  = 'U' -- Only User Tables
     ORDER BY so.[name]
      --ROLLBACK TRAN --COMMIT TRAN  

Back To Top ^

sp_ScriptAnyTrace

Parameters  
Input  @traceid  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

--#################################################################################################
--sp_ScriptAnyTrace
-- a procedure to duplicate any trace on a given server, with the added benefit of
--adding comments to make the output much more readable
--and understandable to determine what a given trace was actually doing.
--#################################################################################################
--usage: for any given traceId on your server, pass the trace ID:
--EXEC sp_ScriptAnyTrace 1
--EXEC sp_ScriptAnyTrace 2
--EXEC sp_ScriptAnyTrace 3
--find the traces you have with this: 
--select * from sys.traces
--drop procedure sp_ScriptAnyTrace
--#################################################################################################
CREATE PROCEDURE [dbo].[sp_ScriptAnyTrace](@traceid INT)
AS
  BEGIN
    SET NOCOUNT ON

    DECLARE @Results TABLE(
      ResultsId   INT IDENTITY(1, 1),
      ResultsText VARCHAR(MAX))

    IF NOT EXISTS(SELECT 1
                  FROM   sys.traces
                  WHERE  id = @traceid)
      BEGIN
        INSERT INTO @Results
                    (ResultsText)
        SELECT 'No trace exists with ID = ' + CONVERT(VARCHAR, @traceid)
        SELECT *
        FROM   @Results
        ORDER  BY
          ResultsID
        RETURN
      END
        INSERT INTO @Results
                (ResultsText)
    SELECT '--#################################################################################################'
    UNION ALL
    SELECT '--Scripting trace_id ' + convert(varchar,@traceid) + ' from server ' + @@servername
    UNION ALL
    SELECT '--   Trace Last Started/Restarted on ' + CONVERT(VARCHAR(35),start_time,109) from sys.traces where id=@traceid
    UNION ALL
    SELECT '--   Scripted for Analysis on ' + CONVERT(VARCHAR(35),getdate(),109)
    UNION ALL
    SELECT '--#################################################################################################'
    
      
    INSERT INTO @Results
                (ResultsText)
    SELECT '--declare variables for parameterizing the command '
    UNION ALL
    SELECT '  declare @traceidout       int           '
    UNION ALL
    SELECT '  declare @options          int           '
    UNION ALL
    SELECT '  declare @path             nvarchar(256) '
    UNION ALL
    SELECT '  declare @maxfilesize      bigint        '
    UNION ALL
    SELECT '  declare @maxRolloverFiles int           '
    UNION ALL
    SELECT '  declare @stoptime         datetime      '
    UNION ALL
    SELECT '  declare @on               bit           '
    UNION ALL
    SELECT '                                        '
    UNION ALL
    SELECT '  set @on = 1 --for scripting purposes, I think its better Always setting a script to start the trace after creation.'

    --script the settings from sys.traces
    INSERT INTO @Results
                (ResultsText)
    SELECT '  set @maxfilesize = ' + CASE
                                     WHEN max_size IS NULL
                                     THEN '20'
                                     ELSE CONVERT(VARCHAR, max_size)
                                   END + ' --size in MB '
    FROM   sys.traces
    WHERE  id = @traceid

    INSERT INTO @Results
                (ResultsText)
    SELECT '  set @maxRolloverFiles = ' + CASE
                                          WHEN max_files IS NULL
                                          THEN ' 5 '
                                          ELSE CONVERT(VARCHAR, max_files)
                                        END + '  --number of files; ie if 5 files, start rewriting on rollover '
    FROM   sys.traces
    WHERE  id = @traceid

    INSERT INTO @Results
                (ResultsText)
    SELECT '  set @stoptime = ' + CASE
                                  WHEN stop_time IS NULL
                                  THEN 'NULL'
                                  ELSE '''' + CONVERT(VARCHAR(40), stop_time, 121) + ''''
                                END + '  -- null if never ends, else a specific date '
    FROM   sys.traces
    WHERE  id = @traceid

    INSERT INTO @Results
                (ResultsText)
    SELECT '  set @options = ' + CONVERT(VARCHAR, (2 * is_rollover) + (4 * is_shutdown)) + ' -- TRACE_FILE_ROLLOVER = ' + CASE
                                                                                                                          WHEN is_rollover = 1
                                                                                                                          THEN 'TRUE'
                                                                                                                          ELSE 'FALSE'
                                                                                                                        END + ', SHUTDOWN_ON_ERROR = ' + CASE
                                                                                                                                                           WHEN is_shutdown = 1
                                                                                                                                                           THEN 'TRUE'
                                                                                                                                                           ELSE 'FALSE'
                                                                                                                                                         END
    FROM   sys.traces
    WHERE  id = @traceid

    INSERT INTO @Results
                (ResultsText)
    SELECT '  set @path  = ''' + CASE
                                 WHEN PATH IS NULL
                                 THEN 'mytrace'
                                 ELSE LEFT(PATH, LEN(PATH) - 4)
                               END + '''' + '  -- the trace adds ".trc" to the pathname, so avoid "name.trc.trc" by removing it for scripting '
    FROM   sys.traces
    WHERE  id = @traceid

    INSERT INTO @Results
                (ResultsText)
    SELECT ''

    --sp_trace_create [ @traceid = ] trace_id OUTPUT 
    --, [ @options = ] option_value 
    --, [ @tracefile = ] 'trace_file' 
    --[ , [ @maxfilesize = ] max_file_size ]
    --[ , [ @stoptime = ] 'stop_time' ]
    --[ , [ @filecount = ] 'max_rollover_files' ]
    INSERT INTO @Results
                (ResultsText)
    SELECT '--#################################################################################################'
    UNION ALL
    SELECT '  --create the trace '

    INSERT INTO @Results
                (ResultsText)
    SELECT '  exec sp_trace_create @traceidout output, @options, @path, @maxfilesize, @stoptime, @maxRolloverFiles   '

    --details
    INSERT INTO @Results
                (ResultsText)
    SELECT ''

    INSERT INTO @Results
                (ResultsText)
    SELECT '--#################################################################################################'
    UNION ALL
    SEL

Back To Top ^

sp_ScriptRoles

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
spt_values  high  int  4  10  0    
spt_values  low  int  4  10  0    
spt_values  number  int  4  10  0    
spt_values  type  nchar  6  3    SQL_Latin1_General_CP1_CI_AS  
---This procedure must be loaded into master. This will allow it to be used from any database.
CREATE PROC [dbo].[sp_ScriptRoles]
-- Build statements to replicate authorities for Database Roles
-- 
-- This routine needs to be named 'sp_' so it can be hosted in master database and be able to script roles in any database
AS
  BEGIN
    SET NOCOUNT  ON
    --'create a table to hold everything we generate
    CREATE TABLE #Results(
      ResultsId INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
      ResultsText VARCHAR(8000) )
      
    -- Display Audit information
    INSERT INTO #Results(ResultsText)
      SELECT '-- Generated on ' + CONVERT(VARCHAR,getdate(),121)  + ' by ' + SYSTEM_USER + ' on ' + @@SERVERNAME
    
    INSERT INTO #Results(ResultsText)
      SELECT '-- Setup users, roles and privileges. sp_ScriptRoles v1.2'
    
    -- Switch to current database
    INSERT INTO #Results(ResultsText)
      SELECT 'USE ' + DB_NAME()
    
    INSERT INTO #Results(ResultsText)
      SELECT 'GO'
    
    -- Add Users to Database
    INSERT INTO #Results(ResultsText)
      SELECT '-- Add Users to Database'
    
    INSERT INTO #Results(ResultsText)
      SELECT 
        'EXEC sp_grantdbaccess ''' + RTRIM(l.name) + '''' AS '-- Add Database Users'
      FROM dbo.sysusers u
        INNER JOIN MASTER.dbo.syslogins l
          ON u.sid = l.sid
      WHERE u.islogin = 1
        AND u.hasdbaccess = 1
      ORDER BY u.name
    
    INSERT INTO #Results(ResultsText)
      SELECT '-- Create Database Roles(not including the built ins)'
    
    -- Create Database Roles(not including the built ins)
    INSERT INTO #Results(ResultsText)
      SELECT 
        'EXEC sp_addrole ''' + RTRIM(r.name) + ''',dbo ' AS '-- Create Roles'
      FROM dbo.sysusers r
      WHERE r.issqlrole = 1
        AND r.gid > 0
        AND r.name NOT IN ('public','db_owner','db_accessadmin','db_securityadmin','db_ddladmin','db_backupoperator','db_datareader','db_datawriter','db_denydatareader','db_denydatawriter')
      ORDER BY r.name
    INSERT INTO #Results(ResultsText)
      SELECT '-- Add Users to roles'
      
    -- Add Users to roles
    INSERT INTO #Results(ResultsText)
      SELECT 
        'EXEC sp_addrolemember ''' + RTRIM(r.name) + ''',''' + RTRIM(COALESCE(l.name,u.name)) + '''' AS '-- Add Role Users'
      FROM dbo.sysusers u
        INNER JOIN sysmembers m
          ON u.uid = m.memberuid
        INNER JOIN sysusers r
          ON m.groupuid = r.uid
        LEFT OUTER JOIN MASTER.dbo.syslogins l
          ON u.sid = l.sid
      WHERE r.issqlrole = 1
      ORDER BY 
        r.name,
        u.name
    INSERT INTO #Results(ResultsText)
      SELECT '-- Object privileges '
    -- Add Privileges to Roles
    SELECT  -- Object privileges 
     CASE
       WHEN (p.protecttype = 204)
         OR (p.protecttype = 205)
       THEN CASE
              WHEN p.ACTION = 26
              THEN 'GRANT REFERENCES ON ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 193
              THEN 'GRANT SELECT ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 195
              THEN 'GRANT INSERT ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 196
              THEN 'GRANT DELETE ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 197
              THEN 'GRANT UPDATE ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 224
              THEN 'GRANT EXECUTE ON    ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
            END + CASE
                    WHEN p.protecttype = 204
                    THEN ' WITH GRANT OPTION'
                    ELSE ''
                  END
       WHEN p.protecttype = 206
       THEN CASE
              WHEN p.ACTION = 26
              THEN 'DENY REFERENCES ON ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 193
              THEN 'DENY SELECT ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 195
              THEN 'DENY INSERT ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 196
              THEN 'DENY DELETE ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 197
              THEN 'DENY UPDATE ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
              WHEN p.ACTION = 224
              THEN 'GRANT EXECUTE ON   ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' TO ' + RTRIM(u.name)
            END
     END AS '-- Setup Object privileges'
    FROM dbo.sysobjects o
      INNER JOIN sysusers s
        ON o.uid = s.uid
      INNER JOIN sysprotects p
        ON o.id = p.id
      INNER JOIN sysusers u
        ON p.uid = u.uid
    WHERE u.issqlrole = 1 -- Include Roles only
      AND u.gid > 0  -- Exclude System Roles
      AND u.name NOT IN ('RepositoryUser','TargetServersRole') -- Exclude Pseudo-system roles
      AND NOT (o.xtype = 'V'
      AND o.category = 2) -- Exclude INFORMATION schema views
      AND COALESCE(p.columns,1) = 1  -- Exclude column-level privileges
    ORDER BY 
      u.name,
      s.name,
      o.name,
      p.ACTION
    
    INSERT INTO #Results(ResultsText)
      SELECT '-- Column privileges '
      
     -- Column privileges 
    SELECT 
      CASE
        WHEN (p.protecttype = 204)
          OR (p.protecttype = 205)
        THEN CASE
               WHEN p.ACTION = 26
               THEN 'GRANT REFERENCES ON ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' (' + RTRIM(c.name) + ') TO ' + RTRIM(u.name)
               WHEN p.ACTION = 193
               THEN 'GRANT SELECT ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' (' + RTRIM(c.name) + ') TO ' + RTRIM(u.name)
               WHEN p.ACTION = 195
               THEN 'GRANT INSERT ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' (' + RTRIM(c.name) + ') TO ' + RTRIM(u.name)
               WHEN p.ACTION = 196
               THEN 'GRANT DELETE ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' (' + RTRIM(c.name) + ') TO ' + RTRIM(u.name)
               WHEN p.ACTION = 197
               THEN 'GRANT UPDATE ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' (' + RTRIM(c.name) + ') TO ' + RTRIM(u.name)
             END + CASE
                     WHEN p.protecttype = 204
                     THEN ' WITH GRANT OPTION'
                     ELSE ''
                   END
        WHEN p.protecttype = 206
        THEN CASE
               WHEN p.ACTION = 26
               THEN 'DENY REFERENCES ON ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' (' + RTRIM(c.name) + ') TO ' + RTRIM(u.name)
               WHEN p.ACTION = 193
               THEN 'DENY SELECT ON     ' + RTRIM(s.name) + '.' + RTRIM(o.name) + ' (' + RTRIM(c.name) + ') TO ' + RTRIM(u.name)
               W

Back To Top ^

NULL
sp_show

Parameters  
Input  @TblName  varchar (128)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

Back To Top ^

sp_sysfind

Parameters  
Input  @findcolumn  varchar (50)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

CREATE PROCEDURE [dbo].[sp_sysfind]                    
  @findcolumn varchar(50)                    
AS                    
BEGIN                    
 SET NOCOUNT ON         
         
 SELECT     
   TableFound, 
    type,    
   ColumnFound     
 FROM       
   (           
    SELECT     
      1 AS SortOrder,
      objz.type,    
      schema_name(objz.schema_id) + '.' + objz.name AS TableFound,    
      '' AS ColumnFound                  
    FROM sys.all_objects objz      
    WHERE objz.type IN('S','V','FN','IF','P')       
      AND objz.name LIKE '%' + @findcolumn + '%'      
    UNION ALL       
    SELECT     
      2 AS SortOrder,  
      objz.type,    
      schema_name(objz.schema_id) + '.' + objz.name AS TableFound,    
      colz.name AS ColumnFound                  
    FROM sys.all_objects objz                    
      INNER JOIN sys.all_columns colz ON objz.object_id=colz.object_id                  
    WHERE objz.type IN('S','V','FN','IF','P')              
      AND colz.name like '%' + @findcolumn + '%'         
   )  X           
   ORDER BY       
     SortOrder,    
     TableFound,    
     ColumnFound                  
END   

Back To Top ^

sp_who3

Parameters  
Input  @IsUserProcess  tinyint  
Input  @CurrentSpid  tinyint  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
/***************************************************************************************************************
*Routine Name: [dbo].[sp_who3]
*Purpose: Return SPID information from SQL Server
*Used by: Admins
*Inputs: @IsUserProcess (0,1),@CurrentSpid (0,Null)
*Returns:
*Test Code: EXEC sp_who3 
***************************************************************************************************************/
--#############################################################################
--if you are going to put this in MASTER, and want it to be able to query
--each database's sys.indexes, you MUST mark it as a system procedure:
--EXECUTE sp_ms_marksystemobject 'sp_who3'
--#############################################################################
CREATE PROCEDURE sp_who3
        @IsUserProcess  TinyInt = 1
        ,@CurrentSpid   TinyInt = 0

As
Begin
Set NoCount On

/*
Test Code
------------------------------------------
Declare @IsUserProcess  TinyInt
                ,@CurrentSpid   TinyInt

Select @IsUserProcess = 0
                ,@CurrentSpid = 0
*/

Select es.session_id As SPID
                ,ROW_NUMBER() over (partition by es.session_id order by es.login_time) As SubProcessID
                ,DB_NAME(Coalesce(er.database_id,tl1.resource_database_id,' - ')) As DBName
                ,Coalesce(ot.task_state,es.status,' - ') As TaskStatus
                ,es.login_name As LoginName
                ,Coalesce(ec.client_net_address,' - ') As IPAddress
                ,Coalesce((SELECT text As [processing-instruction(definition)]
FROM sys.dm_exec_sql_text(ec.most_recent_sql_handle)
FOR XML PATH(''), TYPE
                ),'') As QueryText
                ,Coalesce(er.wait_type,wt.wait_type,er.last_wait_type,' - ') As WaitType
                ,Coalesce(es.host_name,' - ') As HostName
                ,Coalesce(tl.request_session_id,'') As BlockedBy
                ,Coalesce((SELECT p.text
                        FROM (SELECT MIN(sql_handle) As sql_handle
FROM sys.dm_exec_requests r2
WHERE r2.session_id = tl.request_session_id
                                ) As rb
                        CROSS APPLY
                                (SELECT text As [processing-instruction(definition)]
FROM sys.dm_exec_sql_text(rb.sql_handle)
FOR XML PATH(''), TYPE
                                ) p (text)
                ),'') As BlockingText
                ,Coalesce(es.program_name,' - ') As ProgramName
                ,Coalesce(es.client_interface_name,' - ') As ClientInterface
                ,Coalesce(es.host_process_id,' - ') As UserProcessID
                ,es.login_time As LoginTime
                ,es.last_request_start_time As LastBatch
                ,es.total_elapsed_time *.001 As SessionElapsedTime
                ,es.total_scheduled_time * .001 As CPUTime
                ,es.memory_usage As Num8kPages
                ,Coalesce(ec.num_reads,'') As NumReads
                ,Coalesce(ec.num_writes,'') As NumWrites
                ,Coalesce(er.open_transaction_count,st.TranCount,0) As OpenTranCount
                ,Coalesce(dt.lockcount,0) As LockCount
        From sys.dm_exec_sessions es
                Left Outer Join sys.dm_exec_connections ec
On ec.session_id = es.session_id
                Left Outer Join sys.dm_os_waiting_tasks wt
On wt.session_id = es.session_id
                Left Outer Join sys.dm_os_tasks ot
On es.session_id = ot.session_id
                Left Outer Join sys.dm_tran_locks tl
On wt.blocking_session_id = tl.request_session_id
                Left Outer Join sys.dm_tran_locks tl1
On ec.session_id = tl1.request_session_id
                Left Outer Join sys.dm_exec_requests er
On tl.request_session_id = er.session_id
                Left Outer Join (
Select request_session_id,COUNT(request_session_id) As LockCount
From sys.dm_tran_locks
                                Group By request_session_id
                        ) dt
On ec.session_id = dt.request_session_id
                Left Outer Join (
Select session_id,COUNT(session_id) As TranCount
From sys.dm_tran_session_transactions
Group By session_id
                        ) st
On ec.session_id = st.session_id
Where es.is_user_process >= (Case when @IsUserProcess = 0 Then 0 Else 1 End)
                And es.session_id <> (Case when @CurrentSPID = 0 Then 0 Else @@SPID End)        --@@SPID if current Spid is to be excluded

End
 

Back To Top ^

sp_who4

Parameters  
Input  @IsUserProcess  tinyint  
Input  @CurrentSpid  tinyint  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
/***************************************************************************************************************  
*Routine Name: [dbo].[sp_who3]  
*Purpose: Return SPID information from SQL Server  
*Used by: Admins  
*Inputs: @IsUserProcess (0,1),@CurrentSpid (0,Null)  
*Returns:  
*Test Code: EXEC sp_who3   
***************************************************************************************************************/  
--#############################################################################  
--if you are going to put this in MASTER, 
--you should mark it as a system procedure:  
--EXECUTE sp_ms_marksystemobject 'sp_who3'  
--#############################################################################  
CREATE PROCEDURE sp_who4  
  @IsUserProcess  TINYINT = 1,  
  @CurrentSpid   TINYINT = 0  
AS  
BEGIN  
  SET NOCOUNT ON  
  /*  
  Test Code  
  ------------------------------------------  
  Declare @IsUserProcess  TinyInt  
         ,@CurrentSpid   TinyInt  
  Select @IsUserProcess = 0  
        ,@CurrentSpid = 0  
  */  
  
  SELECT 
    es.session_id AS SPID,
    ROW_NUMBER() OVER (PARTITION BY es.session_id ORDER BY es.login_time) AS SubProcessID,  
    DB_NAME(COALESCE(er.database_id,tl1.resource_database_id,' - ')) AS DBName,  
    COALESCE(ot.task_state,es.status,' - ') AS TaskStatus,  
    es.login_name AS LoginName,  
    COALESCE(ec.client_net_address,' - ') AS IPAddress,  
    COALESCE(
             (SELECT 
               TEXT AS [processing-instruction(definition)]  
              FROM sys.dm_exec_sql_text(ec.most_recent_sql_handle)  
              FOR XML PATH(''), TYPE  
              ),'') AS QueryText,  
    COALESCE(er.wait_type,wt.wait_type,er.last_wait_type,' - ') AS WaitType,  
    COALESCE(es.host_name,' - ') AS HostName,  
    COALESCE(tl.request_session_id,'') AS BlockedBy,  
    COALESCE(
             (SELECT 
                p.text  
              FROM (SELECT 
                      MIN(sql_handle) AS sql_handle  
                    FROM sys.dm_exec_requests r2  
                    WHERE r2.session_id = tl.request_session_id  
                    ) AS rb  
              CROSS APPLY (SELECT 
                             TEXT AS [processing-instruction(definition)]  
                           FROM sys.dm_exec_sql_text(rb.sql_handle)  
                           FOR XML PATH(''), TYPE  
                           ) p (TEXT)  
              ),'')                                    AS BlockingText,  
    COALESCE(es.program_name,' - ')                    AS ProgramName,  
    COALESCE(es.client_interface_name,' - ')           AS ClientInterface,
    COALESCE(es.host_process_id,' - ')                 AS UserProcessID,  
    es.login_time                                      AS LoginTime,  
    es.last_request_start_time                         AS LastBatch,  
    es.total_elapsed_time *.001                        AS SessionElapsedTime,  
    es.total_scheduled_time * .001                     AS CPUTime,  
    es.memory_usage                                    AS Num8kPages,  
    COALESCE(ec.num_reads,'')                          AS NumReads,  
    COALESCE(ec.num_writes,'')                         AS NumWrites,  
    COALESCE(er.open_transaction_count,st.TranCount,0) AS OpenTranCount,  
    COALESCE(dt.lockcount,0) AS LockCount  
  FROM sys.dm_exec_sessions es  
    LEFT OUTER JOIN sys.dm_exec_connections ec  
      ON ec.session_id = es.session_id  
    LEFT OUTER JOIN sys.dm_os_waiting_tasks wt  
      ON wt.session_id = es.session_id  
    LEFT OUTER JOIN sys.dm_os_tasks ot  
      ON es.session_id = ot.session_id  
    LEFT OUTER JOIN sys.dm_tran_locks tl  
      ON wt.blocking_session_id = tl.request_session_id  
    LEFT OUTER JOIN sys.dm_tran_locks tl1  
      ON ec.session_id = tl1.request_session_id  
    LEFT OUTER JOIN sys.dm_exec_requests er  
      ON tl.request_session_id = er.session_id  
    LEFT OUTER JOIN (SELECT 
                       request_session_id,
                       COUNT(request_session_id) AS LockCount  
                     FROM sys.dm_tran_locks  
                     GROUP BY request_session_id  
                     ) dt  
      ON ec.session_id = dt.request_session_id  
    LEFT OUTER JOIN (SELECT 
                       session_id,COUNT(session_id) AS TRANCOUNT  
                     FROM sys.dm_tran_session_transactions  
                     GROUP BY session_id  
                     ) st  
      ON ec.session_id = st.session_id  
  WHERE es.is_user_process >= (CASE WHEN @IsUserProcess = 0 THEN 0 ELSE 1 END)  
    AND es.session_id <> (CASE WHEN @CurrentSPID = 0 THEN 0 ELSE @@SPID END)        --@@SPID if current Spid is to be excluded  
  
END  --PROC  

Back To Top ^

sp_whoami

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
  CREATE PROCEDURE sp_whoami
  AS
  --the auditing snippet below works fine in a 
  --login trigger, 
  --database trigger 
  --or any stored procedure.
  SELECT 
    getdate()                     AS EventDate,
    DB_NAME()                     AS DBName,
    HOST_NAME()                   AS HostName,
    APP_NAME()                    AS ApplicationName,
    OBJECT_NAME(@@PROCID)         AS ProcedureName,
    USER_ID()                     AS Userid,
    USER_NAME()                   AS UserName,
    SUSER_ID()                    AS sUserid,
    SUSER_SNAME()                 AS sUserName,
    IS_SRVROLEMEMBER ('sysadmin') AS [Is_ServerAdmin_Sysadmin],
    IS_MEMBER('db_owner')         AS [Is_DB_owner],
    IS_MEMBER('db_ddladmin')      AS [Is_DDL_Admin],
    IS_MEMBER('db_datareader')    AS [Is_DB_Datareader],
    ORIGINAL_LOGIN()              AS [ORIGINAL_LOGIN],
    client_net_address            AS ipaddress,
    auth_scheme                   AS AuthenticationType
  FROM sys.dm_exec_connections where session_id = @@spid  

Back To Top ^

sql2pdf

Parameters  
Input  @filename  varchar (100)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE PROCEDURE sql2pdf
   @filename VARCHAR(100) 
AS 
  CREATE TABLE #pdf (idnumber INT IDENTITY(1,1)
       ,code NVARCHAR(200))
  CREATE TABLE #xref (idnumber INT IDENTITY(1,1)
       ,code VARCHAR(30))
  CREATE TABLE #text (idnumber INT IDENTITY(1,1)
       ,code VARCHAR(200))

  DECLARE @end VARCHAR(7),
   @beg   VARCHAR(7),
   @a1    VARCHAR(3),
   @a2    VARCHAR(3),
   @ad    VARCHAR(5),
   @cr    VARCHAR(8),
   @pr    VARCHAR(9),
   @ti    VARCHAR(6),
   @xstr  VARCHAR(10),
   @page  VARCHAR(8000),
@pdf   VARCHAR(100),
@trenutniRed NVARCHAR(200),
   @rows   INT,
   @ofset  INT,
   @len    INT,
   @nopg   INT,
        @fs  INT,
@ole    INT,
@x  INT,
@file   INT,
   @object INT
  SELECT @pdf = 'C:\Data\' + @filename + '.pdf'  
  SET @page = ''
  SET @nopg = 0
  SET @object = 6
  SET @end = 'endobj'
  SET @beg = ' 0 obj'
  SET @a1 = '<<'
  SET @a2 = '>>'
  SET @ad = ' 0 R'
  SET @cr = CHAR(67) + CHAR(114) + CHAR (101) + CHAR(97) + CHAR(116) + CHAR (111) + CHAR(114)
  SET @pr = CHAR(80) + CHAR(114) + CHAR (111) + CHAR(100) + CHAR(117) + CHAR (99 ) + CHAR(101) + CHAR(114)
  SET @ti = CHAR(84) + CHAR(105) + CHAR (116) + CHAR(108) + CHAR(101)
  SET @xstr = ' 00000 n'
  SET @ofset = 396  
  INSERT INTO #xref(code) VALUES ('xref')
  INSERT INTO #xref(code) VALUES ('0 10')
  INSERT INTO #xref(code) VALUES ('0000000000 65535 f')
  INSERT INTO #xref(code) VALUES ('0000000017' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000790' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000869' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000144' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000247' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000321' + @xstr)
  INSERT INTO #xref(code) VALUES ('0000000396' + @xstr)  
  INSERT INTO #pdf (code) VALUES ('%' + CHAR(80) + CHAR(68) + CHAR (70) + '-1.2')
  INSERT INTO #pdf (code) VALUES ('%ÓÓÓÓ')
  INSERT INTO #pdf (code) VALUES ('1' + @beg)
  INSERT INTO #pdf (code) VALUES (@a1)
  INSERT INTO #pdf (code) VALUES ('/' + @cr + ' (Ivica Masar ' + CHAR(80) + CHAR(83) + CHAR (79) + CHAR(80) + CHAR(68) + CHAR (70) + ')')
  INSERT INTO #pdf (code) VALUES ('/' + @pr + ' (stored procedure for ms sql  pso@vip.hr)')
  INSERT INTO #pdf (code) VALUES ('/' + @ti + ' (SQL2' + CHAR(80) + CHAR(68) + CHAR (70) + ')')
  INSERT INTO #pdf (code) VALUES (@a2)
  INSERT INTO #pdf (code) VALUES (@end)
  INSERT INTO #pdf (code) VALUES ('4' + @beg)
  INSERT INTO #pdf (code) VALUES (@a1)
  INSERT INTO #pdf (code) VALUES ('/Type /Font')
  INSERT INTO #pdf (code) VALUES ('/Subtype /Type1')
  INSERT INTO #pdf (code) VALUES ('/Name /F1')
  INSERT INTO #pdf (code) VALUES ('/Encoding 5' + @ad)
  INSERT INTO #pdf (code) VALUES ('/BaseFont /Courier')
  INSERT INTO #pdf (code) VALUES (@a2)
  INSERT INTO #pdf (code) VALUES (@end)
  INSERT INTO #pdf (code) VALUES ('5' + @beg)
  INSERT INTO #pdf (code) VALUES (@a1)
  INSERT INTO #pdf (code) VALUES ('/Type /Encoding')
  INSERT INTO #pdf (code) VALUES ('/BaseEncoding /WinAnsiEncoding')
  INSERT INTO #pdf (code) VALUES (@a2)
  INSERT INTO #pdf (code) VALUES (@end)
  INSERT INTO #pdf (code) VALUES ('6' + @beg)
  INSERT INTO #pdf (code) VALUES (@a1)
  INSERT INTO #pdf (code) VALUES ('  /Font ' + @a1 + ' /F1 4' + @ad + ' ' + @a2 + '  /ProcSet [ /' + CHAR(80) + CHAR(68) + CHAR (70) + ' /Text ]')
  INSERT INTO #pdf (code) VALUES (@a2)
  INSERT INTO #pdf (code) VALUES (@end)
  INSERT INTO #text(code) (SELECT code FROM psopdf)
  SELECT @x = COUNT(*) FROM #text
  SELECT @x = (@x / 60) + 1
  WHILE  @nopg < @x
    BEGIN
      DECLARE SysKursor  INSENSITIVE SCROLL CURSOR 
      FOR SELECT SUBSTRING((code + SPACE(81)), 1, 80) FROM #text WHERE idnumber BETWEEN ((@nopg * 60) + 1) AND ((@nopg + 1) * 60 )
      FOR READ ONLY    
      OPEN SysKursor
      FETCH NEXT FROM SysKursor INTO @trenutniRed
      SELECT @object = @object + 1
      SELECT @page = @page +  ' ' + CAST(@object AS VARCHAR) + @ad
      SELECT @len = LEN(@object) + LEN(@object + 1)
      INSERT INTO #pdf (code) VALUES (CAST(@object AS VARCHAR)  + @beg)
      INSERT INTO #pdf (code) VALUES (@a1)
      INSERT INTO #pdf (code) VALUES ('/Type /Page')
      INSERT INTO #pdf (code) VALUES ('/Parent 3' + @ad)
      INSERT INTO #pdf (code) VALUES ('/Resources 6' + @ad)
      SELECT @object = @object + 1
      INSERT INTO #pdf (code) VALUES ('/Contents ' + CAST(@object AS VARCHAR) + @ad)
      INSERT INTO #pdf (code) VALUES (@a2)
      INSERT INTO #pdf (code) VALUES (@end)
      SELECT @ofset = @len + 86 + @ofset
      INSERT INTO #xref(code) (SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR), 
     LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9, 
     LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr)  
      INSERT INTO #pdf (code) VALUES (CAST(@object AS VARCHAR)  + @beg)
      INSERT INTO #pdf (code) VALUES (@a1)
      SELECT @object = @object + 1
      INSERT INTO #pdf (code) VALUES ('/Length ' + CAST(@object AS VARCHAR) + @ad)
      INSERT INTO #pdf (code) VALUES (@a2)
      INSERT INTO #pdf (code) VALUES ('stream')
      INSERT INTO #pdf (code) VALUES ('BT')
      INSERT INTO #pdf (code) VALUES ('/F1 10 Tf')
      INSERT INTO #pdf (code) VALUES ('1 0 0 1 50 802 Tm')
      INSERT INTO #pdf (code) VALUES ('12 TL')
      WHILE @@Fetch_Status = 0
         BEGIN
             INSERT INTO #pdf (code) VALUES ('T* (' + @trenutniRed + ') Tj')
             FETCH NEXT FROM  SysKursor INTO @trenutniRed
          END
      INSERT INTO #pdf (code) VALUES ('ET')
      INSERT INTO #pdf (code) VALUES ('endstream')
      INSERT INTO #pdf (code) VALUES (@end)
      SELECT @rows = (SELECT COUNT(*) FROM #text WHERE idnumber BETWEEN ((@nopg * 60) + 1) AND ((@nopg + 1) * 60 ))* 90 + 45
      SELECT @nopg = @nopg + 1    
      SELECT @len = LEN(@object) + LEN(@object - 1)
      SELECT @ofset = @len + 57 + @ofset + @rows
      INSERT INTO #xref(code) (SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR), 
      LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9, 
    LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr)   
      INSERT INTO #pdf (code) VALUES (CAST(@object AS VARCHAR)  + @beg)
      INSERT INTO #pdf (code) VALUES (@rows)
      INSERT INTO #pdf (code) VALUES (@end)
      SELECT @len = LEN(@object) + LEN(@rows)
      SELECT @ofset = @len + 18 + @ofset
      INSERT INTO #xref(code) (SELECT SUBSTRING('0000000000' + CAST(@ofset AS VARCHAR), 
     LEN('0000000000' + CAST(@ofset AS VARCHAR)) - 9, 
     LEN('0000000000' + CAST(@ofset AS VARCHAR))) + @xstr)  
      CLOSE SysKursor
      DEALLOCATE SysKursor
    END
    INSERT INTO #pdf (code) VALUES ('2' + @beg)
    INSERT INTO #pdf (code) VALUES (@a1)
    INSERT INTO #pdf (code) VALUES ('/Type /Catalog')
    INSERT INTO #pdf (code) VALUES ('/Pages 3' + @ad)
    INSERT INTO #pdf (code) VALUES ('/PageLayout /OneColumn')
    INSERT INTO #pdf (code) VALUES (@a2)
    INSERT INTO #pdf (code) VALUES (@end)
    UPDATE #xref SET code = (SELECT code FROM #xref WHERE idnumber = (SELECT MAX(idnumber) FROM #xref)) WHERE idnumber = 5
    DELETE FROM #xref WH

Back To Top ^

SQLDecryptor

Parameters  
Input  @ObjectOwnerOrSchema  nvarchar (128)  
Input  @ObjectName  nvarchar (128)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
/*===============================================================
 
NAME: Decrypt SQL 2005 stored procedures, functions, views, 
and triggers
DESCRIPTION:           
HEADS UP: In order to run this script you must log in
to the server in DAC mode: To do so, type
ADMIN: as your server name and use the "sa"
or any other server admin user with the appropriate password.
 
CAUTION! DAC (dedicated admin access) will kick out all other
server users.
 
The script below accepts an object (schema name + object name)
that were created using the WITH ENCRYPTION option and returns
the decrypted script that creates the object. This script
is useful to decrypt stored procedures, views, functions,
and triggers that were created WITH ENCRYPTION.
 
The algorithm used below is the following:
1. Check that the object exists and that it is encrypted.
2. In order to decrypt the object, the script ALTER (!!!) it
and later restores the object to its original one. This is
required as part of the decryption process: The object
is altered to contain dummy text (the ALTER uses WITH ENCRYPTION)
and then compared to the CREATE statement of the same dummy
content.
 
Note: The object is altered in a transaction, which is rolled
back immediately after the object is changed to restore
all previous settings.
 
3. A XOR operation between the original binary stream of the
enrypted object with the binary representation of the dummy
object and the binary version of the object in clear-text
is used to decrypt the original object.
 
USER PARAMETERS:        @ObjectOwnerOrSchema
@ObjectName
 
RESULTSET:              NA
 
RESULTSET SORT:         NA
 
USING TABLES/VIEWS:     sys.sysobjvalues
syscomments
 
================================================================*/
CREATE PROCEDURE [dbo].[SQLDecryptor]
    (
      @ObjectOwnerOrSchema NVARCHAR(128) ,
      @ObjectName NVARCHAR(128)
    )
AS 
--SET @ObjectOwnerOrSchema = 'dbo'
--SET @ObjectName = 'myproc'
 
    DECLARE @i INT
    DECLARE @ObjectDataLength INT
    DECLARE @ContentOfEncryptedObject NVARCHAR(MAX)
    DECLARE @ContentOfDecryptedObject NVARCHAR(MAX)
    DECLARE @ContentOfFakeObject NVARCHAR(MAX)
    DECLARE @ContentOfFakeEncryptedObject NVARCHAR(MAX)
    DECLARE @ObjectType NVARCHAR(128)
    DECLARE @ObjectID INT
 
    SET NOCOUNT ON
 
    SET @ObjectID = OBJECT_ID('[' + @ObjectOwnerOrSchema + '].[' + @ObjectName
                              + ']')
 
-- Check that the provided object exists in the database.
    IF @ObjectID IS NULL 
        BEGIN
            RAISERROR ( 'The object name or schema provided does not exist in the database',
                16, 1 )
            RETURN
        END
 
-- Check that the provided object is encrypted.
    IF NOT EXISTS ( SELECT TOP 1
                            *
                    FROM    syscomments
                    WHERE   id = @ObjectID
                            AND encrypted = 1 ) 
        BEGIN
            RAISERROR ( 'The object provided exists however it is not encrypted. Aborting.',
                16, 1 )
            RETURN
        END
 
-- Determine the type of the object
    IF OBJECT_ID('[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']',
                 'PROCEDURE') IS NOT NULL 
        SET @ObjectType = 'PROCEDURE'
    ELSE 
        IF OBJECT_ID('[' + @ObjectOwnerOrSchema + '].[' + @ObjectName + ']',
                     'TRIGGER') IS NOT NULL 
            SET @ObjectType = 'TRIGGER'
        ELSE 
            IF OBJECT_ID('[' + @ObjectOwnerOrSchema + '].[' + @ObjectName
                         + ']', 'VIEW') IS NOT NULL 
                SET @ObjectType = 'VIEW'
            ELSE 
                SET @ObjectType = 'FUNCTION'
 
-- Get the binary representation of the object- syscomments no longer holds
-- the content of encrypted object.
    SELECT TOP 1
            @ContentOfEncryptedObject = imageval
    FROM    sys.sysobjvalues
    WHERE   objid = OBJECT_ID('[' + @ObjectOwnerOrSchema + '].[' + @ObjectName
                              + ']')
            AND valclass = 1
            AND subobjid = 1
 
    SET @ObjectDataLength = DATALENGTH(@ContentOfEncryptedObject) / 2
 
-- We need to alter the existing object and make it into a dummy object
-- in order to decrypt its content. This is done in a transaction
-- (which is later rolled back) to ensure that all changes have a minimal
-- impact on the database.
    SET @ContentOfFakeObject = N'ALTER ' + @ObjectType + N' ['
        + @ObjectOwnerOrSchema + N'].[' + @ObjectName
        + N'] WITH ENCRYPTION AS'
 
    WHILE DATALENGTH(@ContentOfFakeObject) / 2 < @ObjectDataLength 
        BEGIN
            IF DATALENGTH(@ContentOfFakeObject) / 2 + 4000 < @ObjectDataLength 
                SET @ContentOfFakeObject = @ContentOfFakeObject
                    + REPLICATE(N'-', 4000)
            ELSE 
                SET @ContentOfFakeObject = @ContentOfFakeObject
                    + REPLICATE(N'-',
                                @ObjectDataLength
                                - ( DATALENGTH(@ContentOfFakeObject) / 2 ))
        END
 
-- Since we need to alter the object in order to decrypt it, this is done
-- in a transaction
    SET XACT_ABORT OFF
    BEGIN TRAN
 
    EXEC ( @ContentOfFakeObject
    )
 
    IF @@ERROR <> 0 
        ROLLBACK TRAN
 
-- Get the encrypted content of the new "fake" object.
    SELECT TOP 1
            @ContentOfFakeEncryptedObject = imageval
    FROM    sys.sysobjvalues
    WHERE   objid = OBJECT_ID('[' + @ObjectOwnerOrSchema + '].[' + @ObjectName
                              + ']')
            AND valclass = 1
            AND subobjid = 1
 
    IF @@TRANCOUNT > 0 
        ROLLBACK TRAN
 
-- Generate a CREATE script for the dummy object text.
    SET @ContentOfFakeObject = N'CREATE ' + @ObjectType + N' ['
        + @ObjectOwnerOrSchema + N'].[' + @ObjectName
        + N'] WITH ENCRYPTION AS'
 
    WHILE DATALENGTH(@ContentOfFakeObject) / 2 < @ObjectDataLength 
        BEGIN
            IF DATALENGTH(@ContentOfFakeObject) / 2 + 4000 < @ObjectDataLength 
                SET @ContentOfFakeObject = @ContentOfFakeObject
                    + REPLICATE(N'-', 4000)
            ELSE 
                SET @ContentOfFakeObject = @ContentOfFakeObject
                    + REPLICATE(N'-',
                                @ObjectDataLength
                                - ( DATALENGTH(@ContentOfFakeObject) / 2 ))
        END
 
    SET @i = 1
 
--Fill the variable that holds the decrypted data with a filler character
    SET @ContentOfDecryptedObject = N''
 
    WHILE DATALENGTH(@ContentOfDecryptedObject) / 2 < @ObjectDataLength 
        BEGIN
            IF DATALENGTH(@ContentOfDecryptedObject) / 2 + 4000 < @ObjectDataLength 
                SET @ContentOfDecryptedObject = @ContentOfDecryptedObject
                    + REPLICATE(N'A', 4000)
            ELSE 

Back To Top ^

TestAddExtendedProperties

Parameters  
Input  @ObjType  varchar (25)  
Input  @ObjName  varchar (75)  
Input  @ObjOwner  varchar (35)  
Input  @AppgrpValue  varchar (35)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE PROCEDURE [dbo].[TestAddExtendedProperties]
(
@ObjType varchar(25), @ObjName varchar(75),@ObjOwner varchar(35) = NULL, @AppgrpValue varchar(35)
)

AS

IF NOT EXISTS(SELECT * 
FROM fn_listextendedproperty (
NULL, 
'SCHEMA',
@ObjOwner,
@ObjType, 
@ObjName,
NULL,
NULL)X WHERE name = 'ApplicationGroup' )

BEGIN

EXEC sys.sp_addextendedproperty 
@name='ApplicationGroup', -- Name of the new property
@value=@AppgrpValue , -- Value of the new property
@level0type=N'SCHEMA', 
@level0name=@ObjOwner, --Schema Name
@level1type=@ObjType, -- Object Type (Procedure, Function)
@level1name=@ObjName --SP/FN Name

END



ELSE

BEGIN

EXEC sys.sp_updateextendedproperty
@name='ApplicationGroup',
@value=@AppgrpValue , -- Value of the new property
@level0type=N'SCHEMA', 
@level0name=@ObjOwner, --Schema Name
@level1type=@ObjType, -- Object Type (Procedure, Function)
@level1name=@ObjName --SP/FN Name

end
 

Back To Top ^

TestProc

Parameters  
Input      
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE PROC dbo.TestProc
AS
  SELECT * FROM dbo.ThisDoesNotExist
 

Back To Top ^

Functions


CHARINDEX2

Parameters  
Output    int  
Input  @TargetStr  varchar (8000)  
Input  @SearchedStr  varchar (8000)  
Input  @Occurrence  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
/*
Example:
SELECT dbo.CHARINDEX2('a', 'abbabba', 3)
returns the location of the third occurrence of 'a'
which is 7
*/
CREATE FUNCTION CHARINDEX2(
  @TargetStr varchar(8000),
  @SearchedStr varchar(8000),
  @Occurrence int)
RETURNS int
AS
BEGIN
  DECLARE @pos int, @counter int, @ret int
  SET @pos = CHARINDEX(@TargetStr, @SearchedStr)
  SET @counter = 1
  IF @Occurrence = 1 
    SET @ret = @pos
  ELSE
    BEGIN
      WHILE (@counter < @Occurrence)
        BEGIN
          SELECT @ret = CHARINDEX(@TargetStr, @SearchedStr, @pos + 1)
          SET @counter = @counter + 1
          SET @pos = @ret
        END
    END
  RETURN(@ret)
END
 

Back To Top ^

dba_parseString_udf

Parameters  
Input  stringValue  varchar (128)  
Input  @stringToParse  varchar (8000)  
Input  @delimiter  char (1)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

CREATE FUNCTION dbo.dba_parseString_udf
(
          @stringToParse VARCHAR(8000)  
        , @delimiter     CHAR(1)
)
RETURNS @parsedString TABLE (stringValue VARCHAR(128))
AS
/*********************************************************************************
    Name:       dba_parseString_udf
 
    Author:     Michelle Ufford, http://sqlfool.com
 
    Purpose:    This function parses string input using a variable delimiter.
 
    Notes:      Two common delimiter values are space (' ') and comma (',')
 
    Date        Initials    Description
    ----------------------------------------------------------------------------
    2011-05-20  MFU         Initial Release
*********************************************************************************
Usage: 
    SELECT *
    FROM dba_parseString_udf();
 
Test Cases:
 
    1.  multiple strings separated by space
        SELECT * FROM dbo.dba_parseString_udf('  aaa  bbb  ccc ', ' ');
 
    2.  multiple strings separated by comma
        SELECT * FROM dbo.dba_parseString_udf(',aaa,bbb,,,ccc,', ',');
*********************************************************************************/
BEGIN
 
    /* Declare variables */
    DECLARE @trimmedString  VARCHAR(8000);
 
    /* We need to trim our string input in case the user entered extra spaces */
    SET @trimmedString = LTRIM(RTRIM(@stringToParse));
 
    /* Let's create a recursive CTE to break down our string for us */
    WITH parseCTE (StartPos, EndPos)
    AS
    (
        SELECT 1 AS StartPos
            , CHARINDEX(@delimiter, @trimmedString + @delimiter) AS EndPos
        UNION ALL
        SELECT EndPos + 1 AS StartPos
            , CHARINDEX(@delimiter, @trimmedString + @delimiter , EndPos + 1) AS EndPos
        FROM parseCTE
        WHERE CHARINDEX(@delimiter, @trimmedString + @delimiter, EndPos + 1) <> 0
    )
 
    /* Let's take the results and stick it in a table */  
    INSERT INTO @parsedString
    SELECT SUBSTRING(@trimmedString, StartPos, EndPos - StartPos)
    FROM parseCTE
    WHERE LEN(LTRIM(RTRIM(SUBSTRING(@trimmedString, StartPos, EndPos - StartPos)))) > 0
    OPTION (MaxRecursion 8000);
 
    RETURN;   
END
 

Back To Top ^

DelimitedSplit8K

Parameters  
Input  ItemNumber  bigint  
Input  Item  varchar (8000)  
Input  @pString  varchar (8000)  
Input  @pDelimiter  char (1)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

-- and here is the function definition that you'll need for the above to work
CREATE FUNCTION dbo.DelimitedSplit8K
--===== Define I/O parameters
        (@pString VARCHAR(8000), @pDelimiter CHAR(1))
RETURNS TABLE WITH SCHEMABINDING AS
 RETURN
--===== "Inline" CTE Driven "Tally Table" produces values from 0 up to 10,000...
     -- enough to cover VARCHAR(8000)
  WITH E1(N) AS (
                 SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL 
                 SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL 
                 SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1
                ),                          --10E+1 or 10 rows
       E2(N) AS (SELECT 1 FROM E1 a, E1 b), --10E+2 or 100 rows
       E4(N) AS (SELECT 1 FROM E2 a, E2 b), --10E+4 or 10,000 rows max
 cteTally(N) AS (--==== This provides the "zero base" and limits the number of rows right up front
                     -- for both a performance gain and prevention of accidental "overruns"
                 SELECT 0 UNION ALL
                 SELECT TOP (DATALENGTH(ISNULL(@pString,1))) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM E4
                ),
cteStart(N1) AS (--==== This returns N+1 (starting position of each "element" just once for each delimiter)
                 SELECT t.N+1
                   FROM cteTally t
                  WHERE (SUBSTRING(@pString,t.N,1) = @pDelimiter OR t.N = 0) 
                )
--===== Do the actual split. The ISNULL/NULLIF combo handles the length for the final element when no delimiter is found.
 SELECT ItemNumber = ROW_NUMBER() OVER(ORDER BY s.N1),
        Item       = SUBSTRING(@pString,s.N1,ISNULL(NULLIF(CHARINDEX(@pDelimiter,@pString,s.N1),0)-s.N1,8000))
   FROM cteStart s
;
 

Back To Top ^

fcn_FindEasterSunday

Parameters  
Output    datetime  
Input  @inYear  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
--function to calculate Easter for a given year:
--most difficult to calculate!
--the first Sunday after the full moon that occurs 
--on or next after the vernal equinox (fixed at March 21) 
--and is therefore celebrated between March 22 and April 25 inclusive.
CREATE FUNCTION dbo.fcn_FindEasterSunday(@inYear INT)
  RETURNS DATETIME
AS
BEGIN
  DECLARE @dtNow DATETIME
  DECLARE @inCurDay INT
  DECLARE @inCurMonth INT
  DECLARE @inCurYear INT
  DECLARE @inCurCent INT
  DECLARE @inYear19 INT
  DECLARE @inYearTmp INT
  DECLARE @inTemp2 INT
  DECLARE @inTemp3 INT
  DECLARE @inTemp4 INT
  DECLARE @inEastDay INT
  DECLARE @inEastMonth INT
  DECLARE @dtEasterSunday DATETIME

  SET @dtNow = CONVERT(DATETIME,CAST(@inYear AS CHAR(4))+'-01-01')

  SET @inCurDay=DAY(@dtNow)
  SET @inCurMonth=MONTH(@dtNow)
  SET @inCurYear=YEAR(@dtNow)
  SET @inCurCent=FLOOR(@inCurYear/100)

  SET @inYear19=@inCurYear%19

  SET @inYearTmp=FLOOR((@inCurCent-17)/25)
  SET @inTemp2=(@inCurCent-FLOOR(@inCurCent/4)-FLOOR((@inCurCent-@inYearTmp)/3)+(19*@inYear19)+15)%30
  SET @inTemp2=@inTemp2-FLOOR(@inTemp2/28)*(1 - FLOOR(@inTemp2/28)*FLOOR(29/(@inTemp2+1))*FLOOR((21-@inYear19)/11))

  SET @inTemp3 = (@inCurYear+FLOOR(@inCurYear/4)+@inTemp2+2-@inCurCent+FLOOR(@inCurCent/4))%7
  SET @inTemp4 = @inTemp2-@inTemp3

  SET @inEastMonth = 3+FLOOR((@inTemp4+40)/44)
  SET @inEastDay = @inTemp4+28-31*FLOOR(@inEastMonth/4)
  SET @inEastMonth = @inEastMonth - 1

  SET @dtEasterSunday = CONVERT(DATETIME,CAST(@inCurYear AS VARCHAR(4))+'-'+RIGHT(CAST('00' AS VARCHAR(2))+CAST(@inEastMonth+1 AS VARCHAR(2)),2)+'-'+RIGHT(CAST('00' AS VARCHAR(2))+CAST(@inEastDay AS VARCHAR(2)),2)+' 00:00:00')
  RETURN @dtEasterSunday
END
--#################################################################################################
 

Back To Top ^

FindChanukah

Parameters  
Output    datetime  
Input  @Yr  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
Passover    datetime  8  23  3    
CREATE FUNCTION dbo.FindChanukah (@Yr AS INT)
RETURNS DATETIME
AS
BEGIN
RETURN CASE DATEDIFF(dd,dbo.Passover(@Yr),dbo.Passover(@Yr+1))
          WHEN 355 THEN DATEADD(dd,246,dbo.Passover(@Yr)) 
          WHEN 385 THEN DATEADD(dd,246,dbo.Passover(@Yr)) 
          ELSE  DATEADD(dd,245,dbo.Passover(@Yr)) END
END
 

Back To Top ^

fn_parsename

Parameters  
Output    varchar (8000)  
Input  @pString  varchar (7999)  
Input  @Occurrance  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

CREATE FUNCTION dbo.fn_parsename
        (
        @pString    VARCHAR(7999),
        --'.' CHAR(1),
        @Occurrance int
        )
RETURNS VARCHAR(8000)
 AS
BEGIN 
DECLARE @Results VARCHAR(8000)
--===== "Inline" CTE Driven "Tally Table” produces values up to
     -- 10,000... enough to cover VARCHAR(8000)
;WITH
      E1(N) AS ( --=== Create Ten 1's
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 --10
               ),
      E2(N) AS (SELECT 1 FROM E1 a, E1 b),   --100
      E4(N) AS (SELECT 1 FROM E2 a, E2 b),   --10,000
cteTally(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT N)) FROM E4) , 
--===== Do the split
InterResults 
AS 
(
 SELECT ROW_NUMBER() OVER (ORDER BY N) AS ItemNumber,
        SUBSTRING(@pString, N, CHARINDEX('.', @pString + '.', N) - N) AS Item
   FROM cteTally
  WHERE N < LEN(@pString) + 2
    AND SUBSTRING('.' + @pString, N, 1) = '.'
)
SELECT @Results = Item FROM InterResults WHERE ItemNumber = @Occurrance
return @Results
END --FUNCTION
 

Back To Top ^

fn_parsename2

Parameters  
Input  Item  varchar (7999)  
Input  @pString  varchar (7999)  
Input  @Occurrance  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

CREATE FUNCTION dbo.fn_parsename2
        (
        @pString    VARCHAR(7999),
        --'.' CHAR(1),
        @Occurrance int
        )
RETURNS TABLE
 AS
RETURN
--===== "Inline" CTE Driven "Tally Table” produces values up to
     -- 10,000... enough to cover VARCHAR(8000)
WITH
      E1(N) AS ( --=== Create Ten 1's
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 --10
               ),
      E2(N) AS (SELECT 1 FROM E1 a, E1 b),   --100
      E4(N) AS (SELECT 1 FROM E2 a, E2 b),   --10,000
cteTally(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT N)) FROM E4) , 
--===== Do the split
InterResults 
AS 
(
 SELECT ROW_NUMBER() OVER (ORDER BY N) AS ItemNumber,
        SUBSTRING(@pString, N, CHARINDEX('.', @pString + '.', N) - N) AS Item
   FROM cteTally
  WHERE N < LEN(@pString) + 2
    AND SUBSTRING('.' + @pString, N, 1) = '.'
)
SELECT Item FROM InterResults WHERE ItemNumber = @Occurrance
 

Back To Top ^

fn_parsenameITV

Parameters  
Input  Item  varchar (7999)  
Input  @pString  varchar (7999)  
Input  @Occurrance  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             

CREATE FUNCTION dbo.fn_parsenameITV
        (
        @pString    VARCHAR(7999),
        --'.' CHAR(1),
        @Occurrance int
        )
RETURNS TABLE
 AS
RETURN
--===== "Inline" CTE Driven "Tally Table” produces values up to
     -- 10,000... enough to cover VARCHAR(8000)
WITH
      E1(N) AS ( --=== Create Ten 1's
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 UNION ALL
                 SELECT 1 UNION ALL SELECT 1 --10
               ),
      E2(N) AS (SELECT 1 FROM E1 a, E1 b),   --100
      E4(N) AS (SELECT 1 FROM E2 a, E2 b),   --10,000
cteTally(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT N)) FROM E4) , 
--===== Do the split
InterResults 
AS 
(
 SELECT ROW_NUMBER() OVER (ORDER BY N) AS ItemNumber,
        SUBSTRING(@pString, N, CHARINDEX('.', @pString + '.', N) - N) AS Item
   FROM cteTally
  WHERE N < LEN(@pString) + 2
    AND SUBSTRING('.' + @pString, N, 1) = '.'
)
SELECT Item FROM InterResults WHERE ItemNumber = @Occurrance
 

Back To Top ^

fnGetNthWeekdayOfMonth

Parameters  
Output    datetime  
Input  @theDate  datetime  
Input  @theWeekday  tinyint  
Input  @theNth  smallint  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE FUNCTION dbo.fnGetNthWeekdayOfMonth (@theDate DATETIME,@theWeekday TINYINT,@theNth SMALLINT)
  RETURNS DATETIME
BEGIN
  RETURN  
  (
   SELECT  
     theDate
   FROM (
         SELECT DATEADD(DAY, 7 * @theNth - 7 * SIGN(SIGN(@theNth) + 1) +(@theWeekday + 6 - DATEDIFF(DAY, '17530101', DATEADD(MONTH, DATEDIFF(MONTH, @theNth, @theDate), '19000101')) % 7) % 7, DATEADD(MONTH, DATEDIFF(MONTH, @theNth, @theDate), '19000101')) AS theDate
         WHERE @theWeekday BETWEEN 1 AND 7
           AND @theNth IN (-5, -4, -3, -2, -1, 1, 2, 3, 4, 5)
        ) AS d
   WHERE DATEDIFF(MONTH, theDate, @theDate) = 0
  )
END
--#################################################################################################
 

Back To Top ^

Get_LocalDateTimeITVF

Parameters  
Input  TheDate  datetime  
Input  @UTCDateTime  datetime  
Input  @Zone  varchar (3)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
TallyCalendar              
TallyCalendar  IsDaylightSavings  bit  1  1      
TallyCalendar  TheDate  datetime  8  23  3    
CREATE FUNCTION dbo.Get_LocalDateTimeITVF (@UTCDateTime DATETIME, @Zone VARCHAR(3))
RETURNS TABLE
  WITH SCHEMABINDING
AS
RETURN(SELECT CASE 
                WHEN @Zone = 'EST'
                --starting at 8am, then subtracting either 5 or 4 hours depending on the DST or not.
                THEN DATEADD(hh,5 - TallyCalendar.IsDaylightSavings ,DATEADD(hh,8,DATEADD(dd,DATEDIFF(dd,0,@UTCDateTime), 0)))
                ELSE --no logic was included for CST/PST/other timezones; leaves the value at NULL!
                     --logically expects that only EST will ever be used/passed.?!?
                     DATEADD(hh,- 5 + TallyCalendar.IsDaylightSavings ,DATEADD(dd, DATEDIFF(dd,0,@UTCDateTime), 0))
              END AS TheDate
       FROM dbo.TallyCalendar WHERE DATEADD(dd, DATEDIFF(dd,0,@UTCDateTime), 0) = TheDate
       )
 

Back To Top ^

GetDependents

Parameters  
Input  Seq  int  
Input  ObjectName  sysname  
Input  Hierarchy  varchar (128)  
Input  @ObjectName  sysname  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE FUNCTION GetDependents(
    @ObjectName AS SYSNAME
)
RETURNS @result TABLE (
    Seq INT IDENTITY,
    ObjectName SYSNAME,
    Hierarchy VARCHAR(128))
AS
BEGIN
    ;WITH Obj AS (
        SELECT DISTINCT
            s.id  AS ParentID,
            s.DepID AS ObjectID,
            o1.Name AS ParentName,
            o2.Name AS ChildName,
            QUOTENAME(sch1.name) + '.' + QUOTENAME(o1.Name)
            + '(' + RTRIM(o1.type) + ')'
                COLLATE SQL_Latin1_General_CP1_CI_AS
            AS ParentObject,
            QUOTENAME(sch2.name) + '.' + QUOTENAME(o2.Name)
            + '(' + RTRIM(o2.type) + ')'
                COLLATE SQL_Latin1_General_CP1_CI_AS AS ObjectName
        FROM sys.sysdepends s
        INNER JOIN sys.all_objects o1 ON s.id = o1.object_id
        INNER JOIN sys.schemas sch1 ON sch1.schema_id = o1.schema_id
        INNER JOIN sys.all_objects o2 on s.DepID = o2.object_id
        INNER JOIN sys.schemas sch2 ON sch2.schema_id = o2.schema_id
    ), cte AS (
        SELECT
            0 AS lvl,
            ParentID,
            ObjectId,
            ParentObject,
            ObjectName,
            CAST(ObjectID AS VARBINARY(512)) AS Sort
        FROM obj WHERE ParentName = @ObjectName
        UNION ALL
        SELECT
            p.lvl+ 1,
            c.ParentID,
            c.ObjectId,
            c.ParentObject,
            c.ObjectName,
            CAST(p.sort + CAST(c.ObjectID AS VARBINARY(16))
        AS VARBINARY(512))
        FROM cte p
        INNER JOIN obj c ON p.ObjectID = c.ParentID
    )
    INSERT INTO @result (ObjectName, Hierarchy)
    SELECT
        ObjectName,
        '|-' + REPLICATE('-',(lvl * 4)) + ObjectName
    FROM cte
    ORDER BY Sort
     
    RETURN
END  

Back To Top ^

InitialCap

Parameters  
Output    varchar (8000)  
Input  @String  varchar (8000)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
 CREATE FUNCTION dbo.InitialCap(@String VARCHAR(8000))
/***************************************************************************************************
 Purpose:
 Capitalize any lower case alpha character which follows any non alpha character or single quote.

 Revision History:
 Rev 00 - 24 Feb 2010 - George Mastros - Initial concept
 http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/sql-server-proper-case-function

 Rev 01 - 25 Sep 2010 - Jeff Moden 
        - Redaction for personal use and added documentation.
        - Slight speed enhancement by adding additional COLLATE clauses that shouldn't have mattered
        - and the reduction of multiple SET statements to just 2 SELECT statements.
        - Add no-cap single-quote by single-quote to the filter.
***************************************************************************************************/
RETURNS VARCHAR(8000)
     AS
  BEGIN 
----------------------------------------------------------------------------------------------------
DECLARE @Position INT
;
--===== Update the first character no matter what and then find the next postion that we 
     -- need to update.  The collation here is essential to making this so simple.
     -- A-z is equivalent to the slower A-Z
 SELECT @String   = STUFF(LOWER(@String),1,1,UPPER(LEFT(@String,1))) COLLATE Latin1_General_Bin,
        @Position = PATINDEX('%[A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin)
;
--===== Do the same thing over and over until we run out of places to capitalize.
     -- Note the reason for the speed here is that ONLY places that need capitalization
     -- are even considered for @Position using the speed of PATINDEX. 
  WHILE @Position > 0
 SELECT @String   = STUFF(@String,@Position,2,UPPER(SUBSTRING(@String,@Position,2))) COLLATE Latin1_General_Bin,
        @Position = PATINDEX('%[A-Za-z''][a-z]%',@String COLLATE Latin1_General_Bin)
;
----------------------------------------------------------------------------------------------------
 RETURN @String;
    END ;



 

Back To Top ^

itvf_Sunrise

Parameters  
Input  Sunrise  float (53,0)  
Input  @Long  decimal (28,4)  
Input  @Lat  decimal (28,4)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE FUNCTION [dbo].[itvf_Sunrise]  (
                                       @Long decimal(28,4), 
                                       @Lat decimal(28,4)
                                      )
RETURNS  table
AS RETURN
    --  zenith:          Sun's zenith for sunrise/sunset
    --    offical      = 90 degrees 50' (this one in radians =1.585341)
    --                      cos(1.58) = -0.01454
    --    civil        = 96 degrees
    --    nautical     = 102 degrees
    --    astronomical = 108 degrees
SELECT Sunrise = (
                  360 - acos(
                             CASE 
                               WHEN (cos(radians(90 + 50/60.0)) - (0.39782 * sin(pi()/180*@Long) * sin(@Lat * pi()/180))) / (cos(asin(0.39782 * sin(pi()/180*@Long))) * cos(@Lat * pi()/180)) > 1
                               THEN 99.99
                               WHEN (cos(radians(90 + 50/60.0)) - (0.39782 * sin(pi()/180*@Long) * sin(@Lat * pi()/180))) / (cos(asin(0.39782 * sin(pi()/180*@Long))) * cos(@Lat * pi()/180)) < -1
                               THEN 99.99
                               ELSE (cos(radians(90 + 50/60.0)) - (0.39782 * sin(pi()/180*@Long) * sin(@Lat *pi()/180))) / (cos(asin(0.39782 * sin(pi()/180*@Long))) * cos(@Lat * pi()/180)) 
                             END
                             ) * 180/pi()
                  / 15.0
                  )
--#################################################################################################  

Back To Top ^

MinutesTable

Parameters  
Input  Minutes  int  
Input  Five  int  
Input  Tens  int  
Input  Fifteen  int  
Input  Thirty  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE FUNCTION [dbo].[MinutesTable] ()
RETURNS TABLE
AS 

RETURN
 SELECT 0 As Minutes,60 AS Five,50 AS Tens,60 AS Fifteen,60 AS Thirty UNION ALL 
SELECT 1,5,10,15,30 UNION ALL 
SELECT 2,5,10,15,30 UNION ALL 
SELECT 3,5,10,15,30 UNION ALL 
SELECT 4,5,10,15,30 UNION ALL 
SELECT 5,5,10,15,30 UNION ALL 
SELECT 6,10,10,15,30 UNION ALL 
SELECT 7,10,10,15,30 UNION ALL 
SELECT 8,10,10,15,30 UNION ALL 
SELECT 9,10,10,15,30 UNION ALL 
SELECT 10,10,20,15,30 UNION ALL 
SELECT 11,15,20,15,30 UNION ALL 
SELECT 12,15,20,15,30 UNION ALL 
SELECT 13,15,20,15,30 UNION ALL 
SELECT 14,15,20,15,30 UNION ALL 
SELECT 15,15,20,15,30 UNION ALL 
SELECT 16,20,20,30,30 UNION ALL 
SELECT 17,20,20,30,30 UNION ALL 
SELECT 18,20,20,30,30 UNION ALL 
SELECT 19,20,20,30,30 UNION ALL 
SELECT 20,20,20,30,30 UNION ALL 
SELECT 21,25,30,30,30 UNION ALL 
SELECT 22,25,30,30,30 UNION ALL 
SELECT 23,25,30,30,30 UNION ALL 
SELECT 24,25,30,30,30 UNION ALL 
SELECT 25,25,30,30,30 UNION ALL 
SELECT 26,30,30,30,30 UNION ALL 
SELECT 27,30,30,30,30 UNION ALL 
SELECT 28,30,30,30,30 UNION ALL 
SELECT 29,30,30,30,30 UNION ALL 
SELECT 30,30,30,30,30 UNION ALL 
SELECT 31,35,40,45,60 UNION ALL 
SELECT 32,35,40,45,60 UNION ALL 
SELECT 33,35,40,45,60 UNION ALL 
SELECT 34,35,40,45,60 UNION ALL 
SELECT 35,35,40,45,60 UNION ALL 
SELECT 36,40,40,45,60 UNION ALL 
SELECT 37,40,40,45,60 UNION ALL 
SELECT 38,40,40,45,60 UNION ALL 
SELECT 39,40,40,45,60 UNION ALL 
SELECT 40,40,40,45,60 UNION ALL 
SELECT 41,45,50,45,60 UNION ALL 
SELECT 42,45,50,45,60 UNION ALL 
SELECT 43,45,50,45,60 UNION ALL 
SELECT 44,45,50,45,60 UNION ALL 
SELECT 45,45,50,45,60 UNION ALL 
SELECT 46,50,50,60,60 UNION ALL 
SELECT 47,50,50,60,60 UNION ALL 
SELECT 48,50,50,60,60 UNION ALL 
SELECT 49,50,50,60,60 UNION ALL 
SELECT 50,50,50,60,60 UNION ALL 
SELECT 51,55,60,60,60 UNION ALL 
SELECT 52,55,60,60,60 UNION ALL 
SELECT 53,55,60,60,60 UNION ALL 
SELECT 54,55,60,60,60 UNION ALL 
SELECT 55,55,60,60,60 UNION ALL 
SELECT 56,60,60,60,60 UNION ALL 
SELECT 57,60,60,60,60 UNION ALL 
SELECT 58,60,60,60,60 UNION ALL 
SELECT 59,60,60,60,60 

 

Back To Top ^

Passover

Parameters  
Output    datetime  
Input  @Yr  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE FUNCTION dbo.Passover(@Yr INT)
RETURNS DATETIME
AS
BEGIN
   DECLARE @HYear INT, @Matonic INT, @LeapException INT, @Leap INT, @DOW INT, @Century INT 
   DECLARE @fDay FLOAT(20), @fFracDay FLOAT(20) 
   DECLARE @Mo INT, @Day INT
   SET @HYear=@Yr+3760
   SET @Matonic=(12*@HYear+17) % 19
   SET @Leap=@HYear % 4
   SET @fDay=32+4343/98496.+@Matonic+@Matonic*(272953/492480.)+@Leap/4.
   SET @fDay=@fDay-@HYear*(313/98496.)
   SET @fFracDay=@fDay-FLOOR(@fDay)
   SET @DOW=CAST (3*@HYear+5*@Leap+FLOOR(@fDay)+5 AS INT) % 7
   IF @DOW=2 OR @DOW=4 OR @DOW=6 
      SET @fDay=@fDay+1
   IF @DOW=1 AND @Matonic>6 AND @fFracDay>=1367/2160.
      SET @fDay=@fDay+2
   IF @DOW=0 AND @Matonic>11 AND @fFracDay>=23269/25920.
      SET @fDay=@fDay+1
   SET @Century=FLOOR(@Yr/100.)
   SET @LeapException=FLOOR((3*@Century-5)/4.)
   IF @Yr>1582 
      SET @fDay=@fDay+@LeapException
   SET @Day=FLOOR(@fDay)
   SET @Mo=3
   IF @Day>153 
      BEGIN
         SET @Mo=8
         SET @Day=@Day-153
      END
   IF @Day>122
      BEGIN
         SET @Mo=7
         SET @Day=@Day-122
      END
   IF @Day>92
      BEGIN
         SET @Mo=6
         SET @Day=@Day-92
      END
   IF @Day>61 
      BEGIN
         SET @Mo=5
         SET @Day=@Day-61
      END
   IF @Day>31 
      BEGIN
         SET @Mo=4
         SET @Day=@Day-31
      END
   RETURN CAST(STR(@Mo)+'/'+STR(@Day)+'/'+STR(@Yr) AS DATETIME)
/* Based on mathematical algorithms first devised by the German mathematician Carl Friedrich Gauss (1777-1855).  
I have used the date of Passover to determine most of the other Jewish holidays.*/
END
 

Back To Top ^

sp_LunarPhaseITVF

Parameters  
Input  Phase  varchar (21)  
Input  @TheDate  datetime  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE FUNCTION dbo.sp_LunarPhaseITVF(@TheDate DATETIME)
RETURNS TABLE
  WITH SCHEMABINDING
AS
RETURN(
  --initialize our vars
  WITH cteDtSplit  AS  (
                        SELECT
                          YEAR(@TheDate)  AS TheYear,
                          MONTH(@TheDate) AS TheMonth,
                          DAY(@TheDate)   AS TheDay
                        ),
       cteDates    AS  (
                        SELECT 
                          TheYear - FLOOR( ( 12 - TheMonth ) / 10 ) AS yy,      
                          CASE 
                            WHEN (TheMonth + 9) >= 12
                            THEN (TheMonth + 9) - 12
                            ELSE  TheMonth + 9
                          END AS mm,
                          TheDay AS dd
                        FROM cteDtSplit
                        ),
       ctePre    AS   (
                        SELECT  
                          dd,
                          FLOOR( 365.25 * ( yy + 4712 ) ) AS k1,
                          FLOOR( 30.6 * mm + 0.5 ) AS k2,
                          FLOOR( FLOOR( ( yy / 100 ) + 49 ) * 0.75 ) - 38  AS k3
                        FROM cteDates
                        ),
      cteAdj      AS   (
                        SELECT 
                          CASE 
                            WHEN (k1 + k2 + dd + 59) > 2299160
                            THEN (k1 + k2 + dd + 59) - k3  
                            ELSE  k1 + k2 + dd + 59
                          END  AS jd  -- % for dates in Julian calendar
                        FROM ctePre
                        ),
     
      cteFin     AS   (
                        SELECT 
                          ((( jd - 2451550.1 ) / 29.530588853) - CAST((FLOOR( ( jd - 2451550.1 ) / 29.530588853 )) AS DECIMAL(20,16))) * 29.53 AS AG
                        FROM  cteAdj
                        )
   
SELECT CASE
  WHEN ag <  1.84566       THEN  'New Moon'
    WHEN ag <  5.53699     THEN  'Waxing crescent'
    WHEN ag <  9.22831     THEN  'First quarter'
    WHEN ag < 12.91963     THEN  'Waxing near full moon' -- the web calls this "Gibbous ", WTH is that?
    WHEN ag < 16.61096     THEN  'Full Moon '
    WHEN ag < 20.30228     THEN  'Waning near full moon' -- the web calls this "Gibbous ", WTH is that?
    WHEN ag < 23.99361     THEN  'Last quarter'
    WHEN ag < 27.68493     THEN  'Waning crescent'
    ELSE  'New Moon'
  END AS Phase 
 FROM cteFin
) --END Return
 

Back To Top ^

TishaBAv

Parameters  
Output    datetime  
Input  @Yr  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
Passover    datetime  8  23  3    
CREATE FUNCTION dbo.TishaBAv (@Yr AS INT)
RETURNS DATETIME
AS  
BEGIN 
   RETURN  CASE DATEPART(weekday,dbo.Passover(@Yr)) 
                 WHEN 7 THEN DATEADD(dd,113,dbo.Passover(@Yr))
                 ELSE DATEADD(dd,112,dbo.Passover(@Yr)) END
END 
 

Back To Top ^

TO_CHAR

Parameters  
Output    varchar (max)  
Input  @input  sql_variant  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
             
CREATE FUNCTION TO_CHAR(@input sql_variant)
returns varchar(max)
AS
BEGIN
RETURN CONVERT(varchar(max),@input)
END
 

Back To Top ^

TuBishvat

Parameters  
Output    datetime  
Input  @Yr  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
Passover    datetime  8  23  3    
CREATE FUNCTION dbo.TuBishvat (@Yr AS INT)
RETURNS DATETIME
AS
BEGIN
RETURN CASE WHEN DATEDIFF(dd,dbo.Passover(@Yr-1),dbo.Passover(@Yr))>355
          THEN DATEADD(dd,-89,dbo.Passover(@Yr)) 
          ELSE  DATEADD(dd,-59,dbo.Passover(@Yr)) END
END
 

Back To Top ^

URLEncode

Parameters  
Output    varchar (4000)  
Input  @decodedString  varchar (4000)  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
spt_values  number  int  4  10  0    
CREATE FUNCTION [dbo].[URLEncode] 
(@decodedString VARCHAR(4000))
RETURNS VARCHAR(4000)
AS
BEGIN
/*******************************************************************************************************
* dbo.URLEncode 
* Source: http://www.sqlservercentral.com/scripts/URL/62679/
* Creator: Robert Cary
* Date: 03/18/2008
*
* Notes: 

*
* Usage:
* select dbo.URLEncode('K8%/fwO3L mEQ*.}')
* select dbo.URLEncode('http://www.sqlservercentral.com/scripts/URL/62679/')
*
* Modifications: 
* Developer Name Date Brief description
* ------------------- ----------- ------------------------------------------------------------

* Alzowze 21-Jul-09 Modifed to select from derived table.
* No need to create/populate table numbers. 
* Used Union All, to ensure entire string gets encoded
* if LEN(@decodedString) = Maximum of 4000 
********************************************************************************************************/

DECLARE @encodedString VARCHAR(4000)

IF @decodedString LIKE '%[^a-zA-Z0-9*-.!_]%' ESCAPE '!'
BEGIN
SELECT @encodedString = REPLACE(
COALESCE(@encodedString, @decodedString),
SUBSTRING(@decodedString,num,1),
'%' + SUBSTRING(master.dbo.fn_varbintohexstr(CONVERT(VARBINARY(1),ASCII(SUBSTRING(@decodedString,num,1)))),3,3))
FROM (
SELECT ROW_NUMBER() OVER(ORDER BY number DESC) AS num
FROM master.dbo.spt_values
UNION All
SELECT ROW_NUMBER() OVER(ORDER BY number DESC) AS num
FROM master.dbo.spt_values
) AS num

WHERE num BETWEEN 1 AND LEN(@decodedString) AND SUBSTRING(@decodedString,num,1) like '[^a-zA-Z0-9*-.!_]' ESCAPE '!'


END
ELSE
BEGIN
SELECT @encodedString = @decodedString 
END

RETURN @encodedString

END
 

Back To Top ^

YomHaAtzmaut

Parameters  
Output    datetime  
Input  @Yr  int  
 
Table Dependencies   Column Dependencies   Column Type   Size   Precision   Scale   Collation  
Passover    datetime  8  23  3    
CREATE FUNCTION dbo.YomHaAtzmaut (@Yr AS INT)
RETURNS DATETIME
AS
--The "rule" for this date isn't always observed! In 2004 the holiday was observed on 4/27 instead of 4/26!  
BEGIN 
   DECLARE @Date AS DATETIME
   IF @Yr=2004 
      SET @Date=CAST('2004-04-27' AS DATETIME)
   ELSE 
      SET @Date=  CASE DATEPART(weekday,dbo.Passover(@Yr)) 
                 WHEN 1 THEN DATEADD(dd,18,dbo.Passover(@Yr))
                 WHEN 7 THEN DATEADD(dd,19,dbo.Passover(@Yr))
                 ELSE DATEADD(dd,20,dbo.Passover(@Yr)) END
   RETURN @Date
END
 

Back To Top ^