Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)

Make Drop statements for table deletion

-----------------------------------------------------------------------
-- execute as SP:
CREATE PROCEDURE  [dbo].[Itai_MakeStatementsForDropTable] 
@TableName nvarchar(250),
@SchemaName nvarchar(50),
@ShowDetailes bit = 1
AS
-----------------------------------------------------------------------
-- execute as script:
--declare @TableName nvarchar(250), @SchemaName nvarchar(50), @ShowDetailes bit
--select @TableName = 'KPI_InternalTypes', @SchemaName = 'dbo', @ShowDetailes = 1
-----------------------------------------------------------------------

-- 1. table Constraints
SELECT 'table Constraints' as msg, OBJECT_NAME(OBJECT_ID) AS NameofConstraint,
SCHEMA_NAME(schema_id) AS SchemaName,
OBJECT_NAME(parent_object_id) AS TableName,
type_desc AS ConstraintType
into #Temp 
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT'
and OBJECT_NAME(parent_object_id) = @TableName and SCHEMA_NAME(schema_id) = @SchemaName

-- 2. foreign keys Constraints from other tables
select  'foreign keys constraints' as msg,
object_name(f.constraint_object_id) as NameofConstraint,
SCHEMA_NAME(o.schema_id) AS SchemaName,
object_name(f.parent_object_id) AS TableName,
type_desc AS ConstraintType
into #Temp2
from sys.foreign_key_columns f
inner join sys.objects o on o.object_id = f.constraint_object_id  and SCHEMA_NAME(o.schema_id) = @SchemaName
where object_name(f.referenced_object_id) = @TableName


if @ShowDetailes = 1
begin
select * from #Temp
union all
select * from #Temp2
end

-- 1. table Constraints
select msg, 'ALTER TABLE [' + SchemaName + '].[' + TableName + '] DROP CONSTRAINT [' + NameofConstraint + ']' as Statement_
from #Temp2
UNION all
-- 2. foreign keys Constraints from other tables
select msg, 'ALTER TABLE [' + SchemaName + '].[' + TableName + '] DROP CONSTRAINT [' + NameofConstraint + ']' as Statement_
from #Temp
UNION all
-- 3. drop statement for the table
select 'table', 'DROP TABLE  [' + @SchemaName + '].[' + @TableName + ']' as Statement_

drop table #Temp
drop table #Temp2
go

No comments:

Post a Comment